This commit is contained in:
Joey Hess 2020-12-23 13:41:02 -04:00
parent 2e72590a48
commit b370e6b0ad
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -0,0 +1,27 @@
borg uses a non-unique ContentIdentifier ("") for everything.
I think this is why, it eventually gets lost from the sqlite database,
preventing retrieval of content from the remote.
Repositories affected by this problem can be fixed up by just:
`rm -rf .git/annex/cidsdb`
The ContentIdentifiers table has a
"ContentIndentifiersCidRemoteIndex cid remote", and that's not just an
index, it's a uniqueness constraint.
And that makes sense generally, the point of a ContentIdentifier is that
wherever a remote uses it, it identifies the same content.
I think sqlite probably lets things be added
that violate the constraint at first, but then later writes it removes
the "non-unique" row. Which in this case associates the same cid with
a different key.
I'm thinking this was a mistaken optimisation. getContentIdentifierKeys
is supposed to return a [Key] for a ContentIdentifier; there can be more
than one and it contains code that assumes it will get back all of them.
And if a remote uses a hash for generating ContentIdentifiers, two different
Key can have the same content in edge cases.
So, need to upgrade the database, removing this constraint from it.
--[[Joey]]