{"record":{"id":"e876d1ecc9de3549","repo":"Radarr/Radarr","slug":"movie-file-path-does-not-exist","errorCode":null,"errorMessage":"Movie file path does not exist","messagePattern":"Movie file path does not exist","errorType":"exception","errorClass":"FileNotFoundException","httpStatus":null,"severity":"error","filePath":"src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs","lineNumber":112,"sourceCode":"                _logger.Debug(\"Attempting to hardlink movie file: {0} to {1}\", movieFile.Path, filePath);\n                return TransferFile(movieFile, localMovie.Movie, filePath, TransferMode.HardLinkOrCopy, localMovie);\n            }\n\n            _logger.Debug(\"Copying movie file: {0} to {1}\", movieFile.Path, filePath);\n            return TransferFile(movieFile, localMovie.Movie, filePath, TransferMode.Copy, localMovie);\n        }\n\n        private MovieFile TransferFile(MovieFile movieFile, Movie movie, string destinationFilePath, TransferMode mode, LocalMovie localMovie = null)\n        {\n            Ensure.That(movieFile, () => movieFile).IsNotNull();\n            Ensure.That(movie, () => movie).IsNotNull();\n            Ensure.That(destinationFilePath, () => destinationFilePath).IsValidPath(PathValidationType.CurrentOs);\n\n            var movieFilePath = movieFile.Path ?? Path.Combine(movie.Path, movieFile.RelativePath);\n\n            if (!_diskProvider.FileExists(movieFilePath))\n            {\n                throw new FileNotFoundException(\"Movie file path does not exist\", movieFilePath);\n            }\n\n            if (movieFilePath == destinationFilePath)\n            {\n                throw new SameFilenameException(\"File not moved, source and destination are the same\", movieFilePath);\n            }\n\n            movieFile.RelativePath = movie.Path.GetRelativePath(destinationFilePath);\n\n            if (localMovie is not null)\n            {\n                localMovie.FileNameBeforeRename = movieFile.RelativePath;\n            }\n\n            if (localMovie is not null && _scriptImportDecider.TryImport(movieFilePath, destinationFilePath, localMovie, movieFile, mode) is var scriptImportDecision && scriptImportDecision != ScriptImportDecision.DeferMove)\n            {\n                if (scriptImportDecision == ScriptImportDecision.RenameRequested)\n                {","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/Radarr/Radarr/blob/ca451608dc60c6cec754aba8d96bfa30e9468ed5/src/NzbDrone.Core/MediaFiles/MovieFileMovingService.cs#L94-L130","documentation":"MovieFileMovingService.TransferFile resolves the source path (movieFile.Path, else movie.Path + RelativePath) and verifies it exists; if missing it throws FileNotFoundException with the resolved path as the fileName.","triggerScenarios":"TransferFile is invoked when the resolved source movie file does not exist on disk — file already moved/renamed externally, DB out of sync with disk, or a wrong relative path.","commonSituations":"Files moved or renamed outside Radarr, an interrupted earlier import that left the DB inconsistent, network share reconnecting with a different layout, or a migration that changed paths.","solutions":["Trigger a rescan/refresh of the movie so on-disk state and DB paths agree.","Verify the movie's path and the file's RelativePath are correct in the DB.","Ensure the source share is mounted, then retry the import/move."],"exampleFix":"// before: moving from a stale DB path\n_transferService.TransferFile(movieFile, movie, dest, TransferMode.Move);\n\n// after: reconcile existence first\nvar src = movieFile.Path ?? Path.Combine(movie.Path, movieFile.RelativePath);\nif (!_diskProvider.FileExists(src)) { await _movieService.RefreshMovieInfo(movie); return; }\n_transferService.TransferFile(movieFile, movie, dest, TransferMode.Move);","handlingStrategy":"validation","validationCode":"var src = movieFile.Path ?? Path.Combine(movie.Path, movieFile.RelativePath);\nif (!_diskProvider.FileExists(src)) { await RefreshMovie(movie); return; }","typeGuard":"static bool IsSourcePresent(IDiskProvider d, MovieFile f, Movie m){ var p = f.Path ?? Path.Combine(m.Path, f.RelativePath); return d.FileExists(p); }","tryCatchPattern":null,"preventionTips":["Refresh/rescan before moves when files may have moved externally.","Keep RelativePath consistent with disk.","Ensure shares stay mounted during transfers."],"tags":["media-files","moving","io","filesystem"],"backgroundTag":null,"analyzedSha":"ca451608dc60c6cec754aba8d96bfa30e9468ed5","analyzedAt":"2026-08-13T17:21:54.115Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}