{"record":{"id":"34c705ffa8d66784","repo":"duplicati/duplicati","slug":"folder-not-found-m-path","errorCode":null,"errorMessage":"Folder not found: {m_path}","messagePattern":"Folder not found: (.+?)","errorType":"exception","errorClass":"FolderMissingException","httpStatus":null,"severity":"error","filePath":"Duplicati/Library/Backend/Filejump/Filejump.cs","lineNumber":248,"sourceCode":"            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(\"Bearer\", token);\r\n\r\n            return m_client = client;\r\n        }\r\n\r\n        ///<inheritdoc/>\r\n        public async Task PutAsync(string remotename, string filename, CancellationToken token)\r\n        {\r\n            using var fs = File.OpenRead(filename);\r\n            await PutAsync(remotename, fs, token);\r\n        }\r\n\r\n        ///<inheritdoc/>\r\n        public async Task PutAsync(string remotename, Stream stream, CancellationToken token)\r\n        {\r\n            var client = await GetClient(token);\r\n            var folderId = await GetTargetPathIdAsync(m_path, token);\r\n            if (folderId == null && !string.IsNullOrWhiteSpace(m_path))\r\n                throw new FolderMissingException($\"Folder not found: {m_path}\");\r\n\r\n            // Filejump does not support overwrite, so we need to delete the previous version if it exists\r\n            var cache = await GetCacheTable(token);\r\n            cache.TryGetValue(remotename, out var _);\r\n            await DeleteAsync(remotename, token);\r\n\r\n            var content = new MultipartFormDataContent();\r\n            using var timeoutStream = stream.ObserveReadTimeout(m_timeoutOptions.ReadWriteTimeout);\r\n            var fileContent = new StreamContent(timeoutStream);\r\n            content.Add(fileContent, \"file\", remotename);\r\n            if (folderId.HasValue)\r\n                content.Add(new StringContent(folderId.Value.ToString()), \"parentId\");\r\n\r\n            using var request = new HttpRequestMessage(HttpMethod.Post, \"uploads\") { Content = content };\r\n            request.Headers.Add(\"Accept\", \"application/json\");\r\n\r\n            using var response = await client.SendAsync(request, token);\r\n            await EnsureSuccessStatusCode(response);\r","sourceCodeStart":230,"sourceCodeEnd":266,"githubUrl":"https://github.com/duplicati/duplicati/blob/3f348be3e33f5d72d414e3ad55839c2ba34dda67/Duplicati/Library/Backend/Filejump/Filejump.cs#L230-L266","documentation":"Thrown in Filejump.PutAsync when the configured destination folder path m_path is non-empty but GetTargetPathIdAsync could not resolve it to a folder id. It is a FolderMissingException, which Duplicati treats as a retry-stoppable, user-correctable backend error (the framework can prompt to re-create the folder). It fires before any upload attempt, so no data is transferred.","triggerScenarios":"PutAsync(stream) is called, GetClient succeeds, GetTargetPathIdAsync(m_path) returns null, and m_path is not null/whitespace. This happens when the path does not exist on the Filejump side and the listing/traversal in GetTargetPathIdAsync found no matching folder.","commonSituations":"The destination folder was deleted or renamed in the Filejump web UI after the backup destination was configured. The configured path has a typo or a leading/trailing slash mismatch. A different Filejump account is now logged in, so the previously existing folder is gone. The folder lives under a parent that no longer exists, so traversal stops early.","solutions":["Open the Filejump web UI and confirm the configured destination folder path exists exactly as typed in the backup destination URL.","Re-run the destination test/connection wizard so Duplicati re-validates the path.","If the folder was deleted, recreate it at the same path or update the backup destination to point at an existing folder.","Ensure the same Filejump account is used; if credentials changed, re-enter them so the path resolves against the right workspace."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-flight: resolve the folder before the first PutAsync\nvar folderId = await GetTargetPathIdAsync(m_path, token);\nif (folderId == null && !string.IsNullOrWhiteSpace(m_path))\n    throw new FolderMissingException($\"Folder not found: {m_path}\");","typeGuard":null,"tryCatchPattern":"try { await PutAsync(remotename, filename, token); }\ncatch (FolderMissingException) { /* re-run destination test, recreate folder, then retry */ }","preventionTips":["Run Duplicati's destination test after changing the configured path.","Keep the destination folder name stable; avoid renaming it in the web UI.","Use the same Filejump account across runs to keep the folder resolvable."],"tags":["filejump","folder","configuration","backend"],"backgroundTag":null,"analyzedSha":"3f348be3e33f5d72d414e3ad55839c2ba34dda67","analyzedAt":"2026-08-13T16:48:27.008Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}