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.