There is a local database connected to each backup, and this is the one to delete.
It is possible to downgrade it bit it requires running an SQL query on the database.
I am very interested in hearing what you experienced here? The next beta/stable release will use the current canary FTP backend, so more users will experience this if we do not fix it.
Can you share some details on what your setup is and what did not work?
Source: Windows 11 Desktop with Duplicati Client 2.0.8.1 (2.0.9.111 canary by accident). Destination: TrueNAS Scale 24.04.2.5 Connection: FTP, no SSL, username and password required, no advanced options Error with canary release: Test connection returned “Folder does not exist” and folder creation, if selected, was not successful. Error code 550 was displayed.
In your solution, the step 1 of reinstall canary got Duplicati starting, so what problems remained?
With Canary I had the FTP problem mentioned before. Behavior was the same for first canary install and canary reinstall after attempted downgrade.
The error message should actually have given the numbers, which is another way to distinguish.
After downgrade, Duplicati crashed instantly without notification
These are the related Windows logs:
Application: Duplicati.GUI.TrayIcon.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Exception
at Duplicati.Server.Program.GetDatabaseConnection(System.Collections.Generic.Dictionary`2<System.String,System.String>)
at Duplicati.Server.Program.RealMain(System.String[])
Exception Info: System.Exception
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper..ctor(System.String[])
at Duplicati.GUI.TrayIcon.Program.RealMain(System.String[])
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Duplicati.Library.AutoUpdater.UpdaterManager.RunMethod(System.Reflection.MethodInfo, System.String[])
at Duplicati.Library.AutoUpdater.UpdaterManager+<>c__DisplayClass58_0.<RunFromMostRecentSpawn>b__0()
at Duplicati.Library.AutoUpdater.UpdaterManager.WrapWithUpdater(Duplicati.Library.AutoUpdater.AutoUpdateStrategy, System.Action)
at Duplicati.Library.AutoUpdater.UpdaterManager.RunFromMostRecentSpawn(System.Reflection.MethodInfo, System.String[], Duplicati.Library.AutoUpdater.AutoUpdateStrategy)
at Duplicati.GUI.TrayIcon.Program.Main(System.String[])
It should notify to the terminal if run by hand. I don’t think it can make Windows do a popup, but
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: A serious error occurred in Duplicati: System.Exception: Failed to create, open or upgrade the database.
Error message:
The database has version 106 but the largest supported version is 6.
This is likely caused by upgrading to a newer version and then downgrading.
If this is the case, there is likely a backup file of the previous database version in the folder C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN.
at Duplicati.Server.Program.GetDatabaseConnection(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.RealMain(String[] _args) ---> System.Exception: Failed to create, open or upgrade the database.
Error message:
The database has version 106 but the largest supported version is 6.
This is likely caused by upgrading to a newer version and then downgrading.
If this is the case, there is likely a backup file of the previous database version in the folder C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN.
at Duplicati.Server.Program.GetDatabaseConnection(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.RealMain(String[] _args)
--- End of inner exception stack trace ---
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper..ctor(String[] args)
at Duplicati.GUI.TrayIcon.Program.RealMain(String[] _args)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Duplicati.Library.AutoUpdater.UpdaterManager.RunMethod(MethodInfo method, String[] args)
(106 is just a large number that I hand-placed into the Version table Version column to error)
is written into updates\Duplicati-crashlog.txt The updates folder location can vary, but might be in C:\Users\<Duplicati user account>\AppData\Local\Duplicati
Of course this obscure error file doesn’t help the typical user much. Its location might be relevant.
Your 2.0.8.1 was crashing, but had you intentionally let Duplicati autoupdate in GUI to a Canary?
Those might be sitting in your updates folder. Initial Duplicati launch is from Program Files, then it checks the updates folder and tries to run whatever’s latest and also has no unexpected change.
Updates can be corrupted by files written into them (easy to see sorting by date) or other ways.
EDIT:
2.0.8.1 Beta would not jump to Canary on its own, but Settings can change the update channel.
Basically just trying to figure out the details of how you updated, to better debug how it reverted.
is written into updates\Duplicati-crashlog.txt The updates folder location can vary, but might be in C:\Users\<Duplicati user account>\AppData\Local\Duplicati
Your 2.0.8.1 was crashing, but had you intentionally let Duplicati autoupdate in GUI to a Canary?
See bullet point 1. GUI showed a manual update which I just downloaded and installed.
I assume I have somehow unintentionally changed to Canary in the GUI.
I have made a PR that changes the logic around path handling for FTP.
I would like to test it with TrueNAS, but preferably, I would like to not purchase another hardware device for testing.
Do you know or see somewhere what software+version is used for the FTP component on TrueNAS?
That seems like a logical explanation. The update checker calls different URLs for each channel, so it is unlikely that you should have seen the canary update, without manually changing the channel.
That makes sense to me.
You can see there was a backup made on roughly 2024-11-11 which is most likely the upgrade to the canary build. If you have no intention of using the canary build, you can “delete” the upgraded files. Be sure to stop Duplicati first.
Delete, or Ideally, move them to somewhere else until everything is working, then delete them later:
Duplicati-server.sqlite
IKEFDOAYGL.sqlite
Then rename/copy these two files to have those names:
Sicherung Duplicati-server 20241114050021.sqlite
to Duplicati-server.sqlite
Then start the previous version of Duplicati and you should be back on 2.0.8.1.
Beware, as I mentioned, we will be rolling out a beta soon, which will look very similar to 2.0.9.111.
If you install that beta, it should work the same as the canary build you have, so I would appreciate if you could spend a little time on trying to figure out what the problem is with the FTP “folder not found” issue.
My best guess is that it is related to relative vs absolute paths, so there is a change in how the working folder is chosen with TrueNAS. If you can see any logs on TrueNAS when getting the error from Duplicati, that could help pinpoint the issue.
If not, I have prepared a change in how the FTP paths are used, that will be part of the next canary:
This approach is a bit more robust as it ignores the server paths and allows you to choose paths with absolute names,
Do you know or see somewhere what software+version is used for the FTP component on TrueNAS?
TrueNAS 24.04 is based on Debian Bookworm.
Unfortunately APT is disabled to ensure integrity of the OS but only one FTP service is active which is ProFTPD.
Another Debian Bookworm based server I have has ProFTPD v1.3.8 installed.
If anyone knows how to determine package version on TrueNAS Scale, please chime in.
Correction. It needs set AUTOUPDATER_Duplicati_SKIP_UPDATE=true to see the output.
Basically, early death is hard to debug. I suspect new Duplicati has also lost the crashlog.
Is this going to give a manual update offer to 2.0.8.1 users?
If so, it’d be nice to figure out what went wrong here. Ideas?
The code used to be in UpdateManager in a catch inside RunMethod.
Stack traces above show it at work. That plan got removed for NET 8.
I just now tested with a manually too-high Version to check the result.
Two Application event log entries similar to 2.0.8.1 above were made.
Terminal output was made without having to suppress an autoupdate.
Duplicati-crashlog.txt was not made, at least that Everything shows.
Duplicati.GUI.TrayIcon.exe.5668.dmp was made.
in AppData\Local\CrashDump. I don’t know if 2.0.8.1 does this as well.
Yes. The seeming downgrade to 2.0.8.1 after the upgrade.to 2.0.9.111.
is unclear. @dhzl84 did you manually reinstall 2.0.8.1 again before hitting the “won’t start”?
EDIT:
Maybe 2.0.8.1 install was on list above as “5 Install release”. If so, that explains its presence and removes my concern that the new release found a way to downgrade unexpectedly like old may. Manual downgrade to avoid a new FTP issue is more appealing from an upgrade-bug viewpoint.
Getting ProFTPD up was the key to figuring this out.
Essentially, the now-removed FTP backend would send test as the folder name, where aFTP would send /test. When we removed the deprecated FTP library in favor of aFTP (using FluentFTP), both would send /test. On many FTP servers, this has no impact as they would wisely use a virtual filesystem, starting with /.
But on ProFTPD (in some configurations) it reflects the underlying filesystem, and here /test does not exist (and user should not have permissions there). It worked before because test would translate to /home/user/test.
I think this is a Windows feature, so it would probably be the same for all applications.
Ok, I understood it as later confirmed by @dhzl84 , that this was a manual upgrade.
It should not in any way be possible to auto-revert from the .NET8 builds.
https://updates.duplicati.com/experimental/latest.manifest seems to give 2.1.0.0 https://updates.duplicati.com/beta/latest.manifest seems to give 2.0.8.1
This is the sort of server-side control I speak of, but I’m just not sure if it’s intentionally paced.