Recreate constraint violation on DuplicateBlock

Thanks for waiting, I found the cause for this and made a new version 2.1.0.107 that should fix it.

The details for this was slightly different. You need to have:

i1 -> b1 (missing b1)
i2 -> b2
i3 -> b3

Each of b1, b2, and b3 must reference the same data block.

If you have such a setup, the order of files needs to first process one index file where the block file is missing. This causes the recreate to assign the blocks to the missing file (b1).

Later, when reading i2 & i3, these will be recorded as duplicate blocks. After this, Duplicati will attempt to fix this by using either b2 or b3 instead of the missing b1.

But since there are now two sources to pick from, it would try to use both sources, causing a constraint violation. With the update, it picks just one of them.