Release: 2.1.0.120 (Canary) 2025-06-24

Could it be implicit with an operator overload on == and !=? If not, lots are omitted.
GitHub search FullRemoteVerification then see if you like TestHandler.cs and LocalTestDatabase.cs. If you dislike those, then look at some of the similar enums.

It has huge value if the regular person ever wants to consult with others on some option because otherwise all one can do is post help text or images around in many languages. Having to use the translation files in source (for text) or Google Lens (images) is terrible.

Agreed, although it’s a bit out of the way, but hopefully such a need isn’t all that common. Option names are also useful as the initial picker mechanism on the unsorted options list.

Interestingly, I found that options already in use are removed from the picker, so one can type a known name and if it’s not there, then try to find it from its help in the options set…

It will be interesting to see what feedback comes from regular users on what’s nice or not. Problem is that it might be too late then, which is why I keep hoping a UX expert is in this.

That happens after the parsing. The Options.cs class is constructed so it exposes the parsed values. (As a side note, it is parsing on each request, which is not efficient).

See:

This means that this line:

Is doing a compare of the parsed enum, so there is no case-sensitivity issues (in fact it is an integer compare when compiled).

I see. So you are saying that it is hard to find the option mentioned (especially if UI is localized).
I will take it up with the designer.

We do have an expert onboard for the UI/UX part

1 Like

I didn’t see this until after I upgraded to .122 just now, so I hope this hasn’t made things worse. I tried the create bug report and got this:

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'cannot VACUUM from within a transaction'.
   at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
   at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery()
   at System.Data.Common.DbCommand.ExecuteNonQueryAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Duplicati.Library.Main.Database.ExtensionMethods.ExecuteNonQueryAsync(SqliteCommand self, Boolean writeLog, String cmd, Dictionary`2 values, CancellationToken cancellationToken)
   at Duplicati.Library.Main.Database.ExtensionMethods.ExecuteNonQueryAsync(SqliteCommand self, String cmdtext, CancellationToken cancellationToken)
   at Duplicati.Library.Main.Database.LocalBugReportDatabase.Fix(CancellationToken token)
   at Duplicati.Library.Main.Database.LocalBugReportDatabase.Fix(CancellationToken token)
   at Duplicati.Library.Main.Operation.CreateBugReportHandler.RunAsync()
   at Duplicati.Library.Main.Operation.CreateBugReportHandler.RunAsync()
   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, String[]& paths, Func`3 method)
   at Duplicati.Library.Main.Controller.CreateLogDatabase(String targetpath)
   at Duplicati.Server.Runner.RunInternal(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IRunnerData data, Boolean fromQueue)

Should I still delete the files?

Arh, another casualty from the SQLite upgrade. I have a fix ready.

To progress, then yes. If you can wait a bit, I would still very much like to get the bugreport before the files are deleted. Can you use 2.1.0.120 to create the bugreport if you cannot wait?

1 Like

I can wait, I presume the fix will be in .123?

A post was split to a new topic: Increased memory usage in 2.1.0.123

What partition is fine? A bug report uses tempdir space (maybe three times the DB size).

This is one bit I hate with Linux, Fedora + LVM especially. You’re probably right as I think the /tmp is probably not large enough:

Filesystem                                        Size  Used Avail Use% Mounted on
/dev/mapper/fedora_fedora-root                     99G   37G   63G  37% /
devtmpfs                                          412M     0  412M   0% /dev
tmpfs                                             5.0G   84K  5.0G   1% /dev/shm
efivarfs                                          256K   83K  168K  34% /sys/firmware/efi/efivars
tmpfs                                             2.0G  2.4M  2.0G   1% /run
tmpfs                                             1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs                                             5.0G  890M  4.1G  18% /tmp
/dev/sda2                                        1014M  275M  740M  28% /boot
/dev/sdb                                          200G  152G   49G  76% /srv/nextcloud
/dev/sda1                                         599M  7.5M  592M   2% /boot/efi
tmpfs                                             1.0M     0  1.0M   0% /run/credentials/systemd-resolved.service
tmpfs                                             1.0M     0  1.0M   0% /run/credentials/getty@tty1.service
tmpfs                                            1008M  8.0K 1008M   1% /run/user/0

Just no clue about extending it if that’s what I must do - my guess, I need to extend the partition for fedora_fedora-root then extend one of the tmpfs :face_exhaling:

It’s easier to tell Duplicati to use a different tempdir. There’s an option by that name in Advanced options, but I’m not certain it works exactly as it says, especially with Linux.

gives me hope, and you can read the rest of the discussion there on difficulties with this. There was at least one case I found where it seemed like SQLite had set itself up before request for change was processed. Maybe prior action already had gotten it initialized…

Thanks, I was able to do with the --tempdir parameter and got the file.

FYI I could have used this to temporarily change the size of /tmp

mount -o remount,size=10G /tmp

Which on reboot would fall back to 5G

But I’m wondering if perhaps having just 5G could have caused some issues - this is the biggest of my Linux servers, and on all my Windows servers I used the same parameter to point Duplicati to a separate drive mostly for performance. For now, I have left it pointing at a separate directory on another disk but I might do the same as Windows and create a separate disk for temporary storage like this.

Is the ngax ā€œStop nowā€ supposed to error

image

instead of the ngax ā€œStop after the current fileā€

Often users think ā€œA task was canceledā€ means they did something. It’s true here though.
I’m actually testing on 2.1.0.124, but the stop issue first began discussion roughly here…

If ngclient stop button is supposed to be like ngax ā€œStop nowā€, it seems to do a lot more, such as uploading a partial dlist file, and it also doesn’t need any changes to cause that.

2.1.0.122 Canary ngclient stop uploads a short dlist file

EDIT 1:

As evidence of no changes, I don’t have upload-unchanged-backups set, so no backup version and no dlist file is created on a normal repeat backup without any stops before it.

If I may be a pest and butt in here, I’m encountering what I think is the same issue through a different path. Trying to vacuum any of my backup databases, whether using the command line tool from the GUI or using the auto vacuum option, gives a ā€˜database is locked’ error. Checking out the code myself and stepping over and into some methods shows there’s an underlying instance of that ā€˜cannot VACUUM from within a transaction’ exception. Version .120 is the last one that works, .121 onwards fail to vacuum. Git bisect shows commit 5ff613b, merging the big async PR, introduced the issue.

Sysinternals Process Explorer also shows that every attempt to vacuum increases the number of handles open to whatever backup database I’m working with. I can’t say for sure that it’s related, but it seems suspicious.

I’m able to reproduce the issue with any attempt to vacuum any of my databases, so I suspect it’s easy enough for you to reproduce too, but if you’d like me to create a dedicated thread or Github issue I’ll be happy to do so.