Bad Request error from request - NameConflictBehavior must be fail, replace or rename

Hello,

since switching to v2.0.4.35-2.0.4.35_canary_2019-11-29 I get the error message below when doing a job to backup to sharepoint (with version v2.0.4.34-2.0.4.34_canary_2019-11-05 the job still worked):

Failed: Mindestens ein Fehler ist aufgetreten.
Details: System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.AggregateException: The channel "BackendRequests" is retired ---> CoCoL.RetiredException: The channel "BackendRequests" is retired
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.Channel`1.<WriteAsync>d__32.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<FlushBackend>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei CoCoL.ChannelExtensions.WaitForTaskOrThrow(Task task)
   bei Duplicati.Library.Main.Controller.<>c__DisplayClass14_0.<Backup>b__0(BackupResults result)
   bei Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Action`1 method)
---> (Interne Ausnahme #0) System.AggregateException: The channel "BackendRequests" is retired ---> CoCoL.RetiredException: The channel "BackendRequests" is retired
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.Channel`1.<WriteAsync>d__32.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<FlushBackend>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()
---> (Interne Ausnahme #0) CoCoL.RetiredException: The channel "BackendRequests" is retired
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.Channel`1.<WriteAsync>d__32.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<FlushBackend>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()<---

---> (Interne Ausnahme #1) System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> Duplicati.Library.Backend.MicrosoftGraph.MicrosoftGraphException: BadRequest: Bad Request error from request https://graph.microsoft.com/v1.0/sites/tennantid.sharepoint.com,8bxx9dce-8dda-4525-89f2-4c76xxc111d3,f3c56789-7db5-4b8c-8c82-7f2a69xx2563/drive/root:/Pseudoserver/duplicati-bcde989c8f26048e2a20af8e5f2d7bc00.dblock.zip:/createUploadSession
Method: POST, RequestUri: 'https://graph.microsoft.com/v1.0/sites/tennantid.sharepoint.com,8b7f9dce-8dda-4525-89f2-4c765cxx11d3,f3c56789-7db5-4b8c-8c82-7xxa691e2563/drive/root:/Pseudoserver/duplicati-bcde989c8f26048e2a20af8e5f2d7bc00.dblock.zip:/createUploadSession', Version: 1.1, Content: System.Net.Http.StringContent, Headers:
{
  User-Agent: Duplicati/2.0.4.35
  Authorization: Bearer ABC...XYZ
  Content-Type: application/json; charset=utf-8
  Content-Length: 56
}
StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  request-id: 4abd6480-752f-4d19-a855-b61952419de9
  client-request-id: 4abd6480-752f-4d19-a855-b61952419de9
  x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"001","RoleInstance":"AGSFE_IN_22"}}
  Strict-Transport-Security: max-age=31536000
  Cache-Control: private
  Date: Sat, 30 Nov 2019 10:29:49 GMT
  Content-Length: 252
  Content-Type: application/json
}
{
  "error": {
    "code": "invalidRequest",
    "message": "NameConflictBehavior must be fail, replace or rename",
    "innerError": {
      "request-id": "4abd6480-752f-4d19-a855-b61952419de9",
      "date": "2019-11-30T10:29:49"
    }
  }
}
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.CheckResponse(HttpResponseMessage response)
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.ParseResponse[T](HttpResponseMessage response)
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.<PutAsync>d__54.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoPut>d__21.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<>c__DisplayClass17_0.<<UploadFileAsync>b__0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoWithRetry>d__18.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoWithRetry>d__18.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<UploadFileAsync>d__17.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<UploadBlockAndIndexAsync>d__15.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<<Run>b__13_0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<<Run>b__13_0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.AutomationExtensions.<RunTask>d__10`1.MoveNext()
   --- Ende der internen Ausnahmestapelüberwachung ---
---> (Interne Ausnahme #0) Duplicati.Library.Backend.MicrosoftGraph.MicrosoftGraphException: BadRequest: Bad Request error from request https://graph.microsoft.com/v1.0/sites/tennantid.sharepoint.com,8b7f9dce-8dda-4525-89f2-4c765cc111d3,f3c56789-7db5-4b8c-8c82-7f2a691e2563/drive/root:/Pseudoserver/duplicati-bcde989c8f26048e2a20af8e5f2d7bc00.dblock.zip:/createUploadSession
Method: POST, RequestUri: 'https://graph.microsoft.com/v1.0/sites/tennantid.sharepoint.com,8b7f9dce-8dda-4525-89f2-4c765cc111d3,f3c56789-7db5-4b8c-8c82-7f2a691e2563/drive/root:/Pseudoserver/duplicati-bcde989c8f26048e2a20af8e5f2d7bc00.dblock.zip:/createUploadSession', Version: 1.1, Content: System.Net.Http.StringContent, Headers:
{
  User-Agent: Duplicati/2.0.4.35
  Authorization: Bearer ABC...XYZ
  Content-Type: application/json; charset=utf-8
  Content-Length: 56
}
StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  request-id: 4abd6480-752f-4d19-a855-b61952419de9
  client-request-id: 4abd6480-752f-4d19-a855-b61952419de9
  x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"001","RoleInstance":"AGSFE_IN_22"}}
  Strict-Transport-Security: max-age=31536000
  Cache-Control: private
  Date: Sat, 30 Nov 2019 10:29:49 GMT
  Content-Length: 252
  Content-Type: application/json
}
{
  "error": {
    "code": "invalidRequest",
    "message": "NameConflictBehavior must be fail, replace or rename",
    "innerError": {
      "request-id": "4abd6480-752f-4d19-a855-b61952419de9",
      "date": "2019-11-30T10:29:49"
    }
  }
}
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.CheckResponse(HttpResponseMessage response)
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.ParseResponse[T](HttpResponseMessage response)
   bei Duplicati.Library.Backend.MicrosoftGraphBackend.<PutAsync>d__54.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoPut>d__21.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<>c__DisplayClass17_0.<<UploadFileAsync>b__0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoWithRetry>d__18.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<DoWithRetry>d__18.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<UploadFileAsync>d__17.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<UploadBlockAndIndexAsync>d__15.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<<Run>b__13_0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei Duplicati.Library.Main.Operation.Backup.BackendUploader.<<Run>b__13_0>d.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.AutomationExtensions.<RunTask>d__10`1.MoveNext()<---
<---
<---


Log data:
2019-11-30 11:29:49 +01 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error
CoCoL.RetiredException: The channel "BackendRequests" is retired
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei CoCoL.Channel`1.<WriteAsync>d__32.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<FlushBackend>d__19.MoveNext()
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()

Many greetings
Oliver

Hello,

I had 4 jobs (4 different computers, Sharepoint V2) affected. After switching back to version .34 the jobs work again.

Many greetings
Oliver

My guess is that for SharePoint, the ConflictBehavior enums string value must be case sensitive, since the value given should always be “Replace”, though “replace” is listed as one of the allowed values. The fix should be to make sure the serialized value is always lowercase (possibly by removing the upper case value from the enum). Alternatively, we could remove the explicit ConflictBehavior since the default should be replace anyway (and that would align with the previous behavior).

Strange that my testing against OneDrive didn’t catch this. OneDrive must not care about the casing.

How do we resolve this? First, perhaps ask for more details about SharePoint because it has so many forms (and I’m not an expert). Is this cloud-based Sharepoint, maybe as part of OneDrive for Business as was mentioned in 2018 (or maybe Office 365 Business)? I don’t know if a test account is possible…

Alternatively, test builds might be possible, but there are no official nightly builds. Canary is as needed. This would be a good issue to clear up soon, because it may be the final block to going towards Beta…

I successfully backed up with .34 from four computers every day this week. Today I successfully backed up a PC with .34. Then update… immediately after that I backed up with .35 installed. With this job the error came immediately again.

My settings - see below.

What other information can I provide?