Add fix for nightly desktop users that broke their db for some contacts

This commit is contained in:
Sebastian Kürten
2023-01-31 11:25:17 +01:00
committed by ialokim
parent 87ef5e58ee
commit 606739b93d

View File

@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser;
import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Metadata; import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.db.NoSuchGroupException;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook; import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.bramble.api.sync.ClientId;
@@ -109,7 +110,24 @@ abstract class SharingManagerImpl<S extends Shareable>
// Create a local group to indicate that we've set this client up // Create a local group to indicate that we've set this client up
Group localGroup = contactGroupFactory.createLocalGroup(getClientId(), Group localGroup = contactGroupFactory.createLocalGroup(getClientId(),
getMajorVersion()); getMajorVersion());
if (db.containsGroup(txn, localGroup.getId())) return;
if (db.containsGroup(txn, localGroup.getId())) {
// Check each contact one by one and see if a group already exists.
// If none exists, call addingContact() for that contact.
for (Contact c : db.getContacts(txn)) {
try {
getGroupCount(txn, c.getId());
} catch (NoSuchGroupException e) {
System.out.println(
"no such group for " + c.getAuthor().getName() +
" " +
c.getAlias());
addingContact(txn, c);
}
}
return;
}
db.addGroup(txn, localGroup); db.addGroup(txn, localGroup);
// Set things up for any pre-existing contacts // Set things up for any pre-existing contacts
for (Contact c : db.getContacts(txn)) addingContact(txn, c); for (Contact c : db.getContacts(txn)) addingContact(txn, c);