Release: 2.0.9.107 (Canary) 2024-09-11

Looks like one update of an SQL string from double-quoted (now illegal) to single got missed.

"Remotevolume"."State" = "Temporary"

2024-09-21 09:09:28 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: Starting - ExecuteNonQuery: CREATE TEMPORARY TABLE "SwapBlocks-A593DDE69D1BCB4889F19349B5679F41" AS SELECT "A"."ID" AS "BlockID", "A"."VolumeID" AS "SourceVolumeID", "A"."State" AS "SourceVolumeState", "B"."VolumeID" AS "TargetVolumeID", "B"."State" AS "TargetVolumeState" FROM (SELECT "Block"."ID", "Block"."VolumeID", "Remotevolume"."State" FROM "Block", "Remotevolume" WHERE "Block"."VolumeID" = "Remotevolume"."ID" and "Remotevolume"."State" = "Temporary") A, (SELECT "DuplicateBlock"."BlockID", "DuplicateBlock"."VolumeID", "Remotevolume"."State" FROM "DuplicateBlock", "Remotevolume" WHERE "DuplicateBlock"."VolumeID" = "Remotevolume"."ID" and "Remotevolume"."State" = 'Verified') B WHERE "A"."ID" = "B"."BlockID";

While waiting for developer input, how old are the dindex files whose dblock files are missing?

EDIT:

BTW a repro for the bug was to copy a dindex file into another backup, then recreate other DB.

Example usage of CleanupMissingVolumes:

You wouldn’t happen to be using log-file option, would you? Database logs are less reliable.