Release: 2.1.0.111 (Canary) 2025-03-15

2.1.0.111_canary_2025-03-15

This release is a canary release intended to be used for testing.

Major changes in this version

  • Restore improvements
    This version has a few tweaks to the new restore flow that makes it more robust.

  • Improved validation
    To safeguard against internal errors, there is now a more strict validation before performing cleanup.
    The new logic checks if the previous operation failed and will only automatically repair the remote if this is the case.
    The repair command bypasses this check and can repair the remote regardless.

If the previous run was fully completed, any leftover remote files are now treated as an error.
Additionally, operations that does not change remote state (list, test, restore, etc) will not repair the remote state, but just verify that it is working for the requested operation.

  • Updates to ngclient
    Multiple updates to ngclient: improved auth flow, searchable menus, Windows filesystem support, restore from configuration, and more.

Potentially breaking changes (from 2.1.0.109)

  • Location of data folder has changed in some cases, refer to previous release for details
  • Permissions are now applied to the data folder, refer to previous release for details
  • New user interface, ngclient is the default; there is a button to switch between the two

Detailed list of changes:

  • Reduced number of samples taken for testing
  • Improved restore flow
  • Improved error handling for Azure Blob storage
  • Improved help text for remote synchronization tool
  • Implemented more rigorous validation and safeguards for failed backups
  • Better support for IPv6 and unmapped localhost scenarios
  • Added check to avoid block sizes that are the same or less than volume size
  • Introduced more async calls for better thread usage in handlers
  • Added forced culture for SQL strings and simpler transaction logic
  • Added Arm v7 Agent builds
  • Improved certificate validation to check expiration and support root or intermediate certificate hashes
1 Like

Cannot Submit job on ngclient. It seems to be tripping over Backup retention which comes up blank initially, but using dropdown hasn’t helped. I tried Keep all backups, but Submit had an alert flash by. If the latest is at top it was Http failure response for http://127.0.0.1:8111/api/v1/backups: 400 Bad Request, which didn’t help. Edge developer tools seems to say it tried this:

and got this:

{"Error":"Retention value must be more than 5 minutes","Code":400}

I tried some other choices. Smart backup retention fails the same way. Keep a specific number of backups doesn’t seem to have a place to specify the value.

Let me see if I can get further with Advanced options than with the main screen.

(this is keep-versions, and I had to use the search in order to find it in the big list)

image

{"Error":"Retention value must be a positive integer","Code":400}

So still no go. I also noticed that it thinks I want AES encryption despite my having turned it off. I went back to the first screen and used its dropdown again to turn off. Go to screen 2 and back, and it’s no longer showing my None.

What I was really hoping to do here was to see if Repair refuses to work at all in a time zone behind UTC time, per report in 2.1.0.110 and Issues. Any other testers?

EDIT 1:

I see the encryption problem was reported by me on 2.1.0.9 in an EDIT which might have been hidden by another poster the next day, so had no response the day after.

Probably some of those findings and other prior reports are still issues. I see some.

EDIT 2:

I see that the above reports did get an issue on it later, but not in duplicati.
Should ngclient issues found in Duplicati be filed there or in ngclient? E.g.:

It looks like ngclient is being done differently than other Canary tester finds.

I updated my Windows servers and they all seem fine so far, but when I started on Linux I hit a problem right away. On my Fedora 41 server, the upgrade installed but I can no longer log into the GUI - always get “login failed”.

I’ve tried by starting the service directly on the command-line:

/usr/bin/duplicati-server --webservice-port=8200 --webservice-interface=any --webservice-sslcertificatefile=/usr/share/Duplicati/maggie.mydomain.pfx --webservice-sslcertificatepassword=12345 --webservice-password=wxyz --disable-db-encryption

Which starts correctly:

Server has started and is listening on *, port 8200

Login fails with my original password and also with just “wxyz”

I tried using --webservice-disable-signin-tokens=true but it makes no difference

Nothing is logged to the terminal nor in the service journal

Mar 17 11:18:22 maggie.mydomain.com duplicati-server[3213]: Server has started and is listening on *, port 8200
Mar 17 11:27:05 maggie.mydomain.com systemd[1]: Stopping duplicati.service - Duplicati web-server...
Mar 17 11:27:05 maggie.mydomain.com systemd[1]: duplicati.service: Deactivated successfully.
Mar 17 11:27:05 maggie.mydomain.com systemd[1]: Stopped duplicati.service - Duplicati web-server.
Mar 17 11:27:05 maggie.mydomain.com systemd[1]: duplicati.service: Consumed 1.538s CPU time, 62.3M memory peak.

I also tried this

[root@maggie ~]# duplicati-server-util change-password --server-datafolder=/root/.config/Duplicati
Connecting to http://127.0.0.1:8200/...
Failed to obtain a signin token: Could not load file or assembly 'Microsoft.IdentityModel.Abstractions, Version=7.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.

Enter server password: ********************
Failed to connect to server: An error occurred while sending the request.

I’ve also noticed that each installation is overwriting the service environmental file in /etc/sysconfig so I lose the parameters, but I’m unsure how this has continued to work before and explains why for some time it always logged the unencrypted database in the journal, and now it doesn’t with the override --disable-db-encryption. Luckily I had a copy.

I have reinstalled .110 which also zapped the environment file, but re-copied it and it’s now working again. For now I will hold on any more Linux upgrades.

Sorry if the above is a mess, I was constantly adding/removing things as I would find fixes/new things.

I did find an issue for Windows, the permissions to files within the Duplicati had their permissions changed even though the insecure-permissions.txt file was present. The main folder was fine but files like the databases were changed to “System” only. Had to re-assert the folder permissions to get access back.

Ok, I have registered an issue for this.

Looks like this is the case. There is now advanced option in 2.1.0.111: --repair-ignore-outdated-database that converts the check to a warning and a PR ready for fixing the issue.

Generally, we try to keep ngclient as a separate project so issues should be filed there. But it can sometimes be hard to figure out where an issue lies, so feel free to create issues on the main repo, and I will move them as needed.

This sounds odd, and reminds me of the missing System.CommandLine.dll file in 2.1.0.5.
Can you verify that the file Microsoft.IdentityModel.Abstractions.dll is indeed missing?

Also, what package was this installed from?

That seems to indicate that you are somehow hitting another instance?

There was an update to this version that changed from using localhost to 127.0.0.1 which was done for better IPv6 compatibility. Could it be that you have one server running on IPv6 and another on IPv4?

This is just the mechanism that TrayIcon uses to log in, so it does not have any impact here.
It is also used to issue the first signin token when no password has been set.

Is this a new issue? The intention is that /etc/sysconfig/duplicati is for user-based modifications and should not be wiped on upgrades.

Sounds strange. I have registered an issue for this.

Very minor suggestion. If it is relativity easy to implement, it would be nice if the installer, having determined that duplicati needs to be restarted, would default to not launch duplicati on exit.

Thanks for the suggestion. I have registered an issue for that.

I will reinstall .111 later today and try and answer the above.

I can see the dll listed

I’m using the rpm package duplicati-2.1.0.111_canary_2025-03-15-linux-x64-cli.rpm and confirm on installation it overwrite the duplicati file in /etc/sysconfig so I have to copy the customised pone back manually. I get the feeling this may have been happening for a few releases as I do remember seeing the warning for service saying that the database was not encrypted, and .110 does the same.

When I start the service it shows this as the webservice status:

Mar 19 09:34:58 maggie.mydomain.com systemd[1]: Started duplicati.service - Duplicati web-server.
Mar 19 09:34:59 maggie.mydomain.com duplicati-server[104962]: Server has started and is listening on *, port 8200

And this is all it shows as listening on port 8200:

[root@maggie ~]# netstat -tunlp | grep -i duplicati
tcp6       0      0 :::8200                 :::*                    LISTEN      104962/duplicati-se

I’m using duplicati on podman (Rocky Linux) currently on version 2.1.0.110.
There I have the issue, that the ngclient shows only a blank screen (Safari on MacOS, iOS, iPadOS). As long the ngax GUI is available, I can live with that.
But after upgrading to 2.1.0.111, the login to the GUI is no longer working (wrong password?).
I set (already in 2.1.110) the following environment variables:

SETTINGS_ENCRYPTION_KEY=<key>
DUPLICATI__WEBSERVICE_PASSWORD=<ui password>

Also the debug log shows no helpful information.
After switching back to 2.1.0.110, login works with the defined ui password.

Sorry, I didn’t have time to really dig into this. But it seems that now verification is again broken. Yet it seems to backup ok.

Fatal error => unknown error
No transaction is active on this connection
Operation: get File: duplicati-20250320T072924Z.dlist.zip.aes Result: {"Size":50125,"Hash":"6oJuTXVwUq3Ty5i09wcm//mYT2QTqTEd\u002BS/Q7xXCZr4="}
Operation: get File: duplicati-iaf6480e2c5284bc9b9ed29aabab743d8.dindex.zip.aes Result: {"Size":48285,"Hash":"AdDyAFRIBS4kbaH34N7MaZEUvkt2JLmrjweh1piVai4="}
Operation: get File: duplicati-bd7145e19a4544423b9ac4005b04ea579.dblock.zip.aes Result: {"Size":3349133,"Hash":"A1ftAkIuJJ6Js3PwhFvUYV9YC3RZUsF2LFqzw/eYoDs="}

On the servers side it seems that the sessions logged in, and correctly issued RETR command. So something fishy is going on with the client (?).

Just letting people know, if anyone else has seen this. Or if anyone else immediately knows, that uh oh, the change we just did probably broke this.

FTP(S) is being used with Filezilla, yet Filezilla doesn’t report any errors in this case.

FTP (not Alternative, no advanced options) on Windows 10 doesn’t QUIT session. Visible in netstat -ano | findstr :21 or reading FileZilla Server log. .110 does

<Date/Time> Info [Type] Message
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Command] SIZE /test 2/duplicati-b8193c42f1a4e41cfb0ba80ecef4f493e.dblock.zip
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Response] 213 770
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Command] EPSV
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Response] 229 Entering Extended Passive Mode (|||56123|)
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Command] RETR /test 2/duplicati-b8193c42f1a4e41cfb0ba80ecef4f493e.dblock.zip
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Response] 150 Starting data transfer.
<3/20/2025 9:16:57 AM> FTP Session 38 127.0.0.1 duplicati [Response] 226 Operation successful
<3/20/2025 9:16:58 AM> FTP Session 38 127.0.0.1 duplicati [Command] QUIT
<3/20/2025 9:16:58 AM> FTP Session 38 127.0.0.1 duplicati [Response] 221 Goodbye.
<3/20/2025 9:16:58 AM> FTP Server [Status] Session 38 ended gracefully.

but .111 does

<Date/Time> Info [Type] Message
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Command] SIZE /test 2/duplicati-b8193c42f1a4e41cfb0ba80ecef4f493e.dblock.zip
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Response] 213 770
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Command] EPSV
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Response] 229 Entering Extended Passive Mode (|||56303|)
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Command] RETR /test 2/duplicati-b8193c42f1a4e41cfb0ba80ecef4f493e.dblock.zip
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Response] 150 Starting data transfer.
<3/20/2025 9:21:58 AM> FTP Session 39 127.0.0.1 duplicati [Response] 226 Operation successful

Above did testing on CLI because my .110 GUI is held for a reported problem, plus CLI is really easy for me to switch versions on by just changing Duplicati .exe path.

I still haven’t seen the reported verification error though. Might be testing differently.

EDIT 1:

Testing in GUI, Test connection does not cause a leftover. Verify files does.

Testing with BackendTool put, get, list, delete, all of them seem to end with a QUIT.

EDIT 2:

The problem was originally found somewhat accidentally when CLI backup did this:

Backup started at 3/20/2025 8:49:47 AM
Checking remote backup ...
  Listing remote folder ...
  Listing remote folder ...
  Listing remote folder ...
  Listing remote folder ...
  Listing remote folder ...
  Listing remote folder ...
The operation Backup has failed with error: Code: 421 Message: Too many active connections, try again later => Code: 421 Message: Too many active connections, try again later

FluentFTP.Exceptions.FtpAuthenticationException: Code: 421 Message: Too many active connections, try again later

I knew something was going wrong when listing a local FTP server was retrying…

EDIT 3:

BackendTester can’t make it through a default run with 3 session connection limit.

[10:28:18 277] Starting run no 3
[10:28:18 345] Unittest failed: FluentFTP.Exceptions.FtpAuthenticationException: Code: 421 Message: Too many active connections, try again later
   at FluentFTP.AsyncFtpClient.Authenticate(String userName, String password, String account, CancellationToken token)
   at FluentFTP.AsyncFtpClient.Authenticate(CancellationToken token)
   at FluentFTP.AsyncFtpClient.Connect(Boolean reConnect, CancellationToken token)
   at FluentFTP.AsyncFtpClient.Connect(CancellationToken token)
   at Duplicati.Library.Backend.FTP.CreateClient(CancellationToken cancellationToken, Nullable`1 cwdFlag)
   at Duplicati.Library.Backend.FTP.TestAsync(CancellationToken cancellationToken)
   at Duplicati.Library.Utility.Utility.Await(Task task)
   at Duplicati.CommandLine.BackendTester.Program.Run(List`1 args, Dictionary`2 options, Boolean first)
   at Duplicati.CommandLine.BackendTester.Program.Main(String[] _args)

EDIT 4:

Testing with SFTP, BackendTester seems prone to connection buildup as far back as 2.0.8.1. I also tripped on a new Test connection bug, which I’ll report on 2.1.0.110.

EDIT 5:

Or maybe not, as it seems to have gone into hiding. Anyway, .111 and .110 were showing a Test connection popup saying something like A task was canceled. Fortunately this didn’t seem to prevent actually using the SFTP destination.

I’ve been running duplicati canary 2.0.8.x for many months on a MBP M1 Pro on macOS 14.7.4 and decided to try the latest canary (2.1.0.111).

I left the GUI page up in Chrome > exited Duplicati from the tray > confirmed nothing was running in Activity Monitor > installed duplicati-2.1.0.111_canary_2025-03-15-osx-arm64-gui by overwriting the previous version > ran Duplicati.

I refreshed the GUI and was not allowed to login using the password I’d been using previously. I tried clicking the tray icon > Open which opened a new Chrome tab and was presented with a new (to me) set up a password page (even though I’d already set one up).

After setting the password, I was in. I wanted to edit the only backup configuration I have on this PC, but when on the first page (name, description, etc.) I cannot continue from there. I.e., the button to continue is lighter in color and unclickable.

Since I couldn’t move forward, I replaced the canary version with the duplicati-2.1.0.3_beta_2025-01-22-osx-arm64-gui version and am back in and can edit the backup config.

One side note (I can’t recall how it looked in canary, so this may already have been fixed since this beta was released): the tray icon color scheme does not display well if the macOS Appearance is set to Dark.
image

Question: the GUI for the beta is suggesting a new version (v2.1.0.5 - Stable). Is the beta channel no longer being used? What are the various “channels” moving forward? I’d assumed it was canary|beta|stable. Thanks!

Got an odd one where Duplicati leaves its log-file open, then on future run complains that it’s open – then manages to write complaint to log-file anyway.

Process Monitor view:

12:39:16.5194862 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	CreateFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SHARING VIOLATION	0.0000992	12:39:16.5195854 PM	Desired Access: Generic Write, Read Attributes, Disposition: OpenIf, Options: Synchronous IO Non-Alert, Non-Directory File, Open No Recall, Attributes: n/a, ShareMode: Read, AllocationSize: 0
12:39:16.5202490 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	WriteFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SUCCESS	0.0000175	12:39:16.5202665 PM	Offset: 5,009,703,650, Length: 1,661
12:39:16.6427156 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	WriteFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SUCCESS	0.0000215	12:39:16.6427371 PM	Offset: 5,009,705,311, Length: 217
12:39:16.6438987 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	WriteFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SUCCESS	0.0000138	12:39:16.6439125 PM	Offset: 5,009,705,528, Length: 229
12:39:16.8416895 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	WriteFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SUCCESS	0.0000139	12:39:16.8417034 PM	Offset: 5,009,705,757, Length: 161
12:39:16.8417709 PM	Duplicati.GUI.TrayIcon.exe	37540	17764	WriteFile	C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log	SUCCESS	0.0000051	12:39:16.8417760 PM	Offset: 5,009,705,918, Length: 173

Resource Monitor view of Duplicati when this job is not in progress. Seems wrong.


There were some mishaps before the first failure, such as a source file missing, however the last job run before the error seemingly ended normally, looking like

This Duplicati started at 8:02:41 PM 3/23/2025, and I’m trying a new setup with personal account as an Administrator instead of having to change for elevation.

Converting database permissions was required for some other jobs but not this.
I have a feeling that restarting Duplicati will clear the open file. I’ll wait a little bit.

EDIT 1:

The result of the writes seen by Process Monitor are probably:

2025-03-24 12:39:16 -04 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Test has failed with error: The process cannot access the file 'C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log' because it is being used by another process.
System.IO.IOException: The process cannot access the file 'C:\Duplicati\duplicati-2.1.0.111_canary_2025-03-15-win-x64-gui\RUN\HP4 clone 12 Backblaze B2 Profiling.log' because it is being used by another process.
   at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategyCore(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable`1 unixCreateMode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
   at Duplicati.Library.Logging.StreamLogDestination..ctor(String filename)
   at Duplicati.Library.Main.Controller.SetupCommonOptions(ISetCommonOptions result, String[]& paths, IFilter& filter)
   at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Func`3 method)
2025-03-24 12:39:16 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteReader]: Starting - ExecuteReader: SELECT "ID", "Timestamp" FROM "Operation" ORDER BY "Timestamp" DESC LIMIT 1
2025-03-24 12:39:16 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteReader]: ExecuteReader: SELECT "ID", "Timestamp" FROM "Operation" ORDER BY "Timestamp" DESC LIMIT 1 took 0:00:00:00.001
2025-03-24 12:39:16 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: Starting - ExecuteNonQuery: PRAGMA optimize
2025-03-24 12:39:16 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: ExecuteNonQuery: PRAGMA optimize took 0:00:00:00.000

EDIT 2:

Found a clue in the server log from another job that uses the same log and failed:

Mar 23, 2025 9:15 PM: Failed while executing ListRemote "HP4 clone 12 Backblaze B2 from sync2" (id: 3)
code = CantOpen (14), message = System.Data.SQLite.SQLiteException (0x800007FF): unable to open database file
   at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
   at System.Data.SQLite.SQLiteConnection.Open()
   at Duplicati.Library.SQLiteHelper.SQLiteLoader.OpenSQLiteFile(IDbConnection con, String path)
   at Duplicati.Library.SQLiteHelper.SQLiteLoader.LoadConnection(String targetpath)
   at Duplicati.Library.Main.Database.LocalDatabase.CreateConnection(String path)
   at Duplicati.Library.Main.Database.LocalDatabase..ctor(String path, String operation, Boolean shouldclose)
   at Duplicati.Library.Main.Controller.<ListRemote>b__31_0(ListRemoteResults result, IBackendManager backendManager)
   at Duplicati.Library.Utility.Utility.Await(Task task)
   at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Func`3 method)
   at Duplicati.Library.Main.Controller.RunAction[T](T result, Func`3 method)
   at Duplicati.Library.Main.Controller.ListRemote()
   at Duplicati.Server.Runner.Run(IRunnerData data, Boolean fromQueue)

I wasn’t able to get missing source to leave a log-file open, but maybe above did.

EDIT 3:

On a different job, I changed permissions to deny DB access, tried a backup, and wound up with another open log-file after the error. I don’t know if other operations could also cause this sort of thing, but finding one is a good start on fixing the bug.

Is there a way for a “run script after” to detect the status of the backup i.e. know if it worked or failed?

I use the “after script” to execute another backup job, but at the moment this always happens regardless of whether the backup was successful. I want to be able to detect this and then not continue with backups. Can the script detect this or is there a job option to only execute the after scripts if successful?

Scripts in the Duplicati Documentation says what you have available. Look at:

DUPLICATI__PARSED_RESULT, maybe DUPLICATI__OPERATIONNAME, and more.

1 Like

Thanks, I’ll give it a go for the next run of my job

Does it work now, when the file exists?

Ok, I have registered an issue for this

What are the symptopms here? Do you just get “wrong password”?
And nothing in the system logs? I am wondering if this somehow the same as reported by @Taomyn in a different context.

There are no changes to the authentication mode between the two versions. Could you perhaps check the list of installed .dll files in both versions and see if something is different?

That one is SQLite related. It happens if Duplicati tries to close down after starting a transaction, but not making any changes. It is a bug in SQLite’s C# library that it does not keep track of transactions, but just starts a transaction as needed.

There was not change in the FTP backend for this release.

Strange. There are no changes for the FTP client between those two versions.
What FTP server is this with?

So the connection buildup is no longer present?

That indicates that you are on a new database? Was your backup configurations already in there?

This has been somewhat fixed in the canary. It does not support ambient background color changes though.

The channels are canary, experimental, beta, stable. Due to a bug in 2.1.0.3 and 2.1.0.4 that could cause files to silently fail uploading, the channels currently all point to the stable release. At a later time they will point to their channel versions again.

Think I have seen this before on 2.0.8.1, but this looks like a promising way to try to reproduce it. I have created an issue for this.

I think this refers to something else. You should look at the context above that:

Starting here, I quoted my FileZilla Server log, then quoted a FluentFTP report.

just “wrong password”, btw also in 2.1.0.112 the same

I’m using docker (podman), should I compare around 500 dll’s which are inside the pulled image ?