From: AsamK Date: Wed, 6 Dec 2023 17:08:35 +0000 (+0100) Subject: Fix overlapping sqlite sessions in migration X-Git-Tag: v0.12.6~1 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/6efca4f5cfc9f2fb01f6f7306ce314f6715242b9?ds=sidebyside Fix overlapping sqlite sessions in migration Fixes #1394 --- diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java index fd2eb5da..7d0aaf5c 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java @@ -478,10 +478,6 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re @Override public ProfileKey getProfileKey(final RecipientId recipientId) { - final var selfRecipientId = resolveRecipient(selfAddressProvider.getSelfAddress()); - if (recipientId.equals(selfRecipientId)) { - return selfProfileKeyProvider.getSelfProfileKey(); - } try (final var connection = database.getConnection()) { return getProfileKey(connection, recipientId); } catch (SQLException e) { @@ -662,9 +658,9 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re Connection connection, RecipientId recipientId, final ProfileKey profileKey, boolean resetProfile ) throws SQLException { if (profileKey != null) { - final var recipientProfileKey = getProfileKey(recipientId); + final var recipientProfileKey = getProfileKey(connection, recipientId); if (profileKey.equals(recipientProfileKey)) { - final var recipientProfile = getProfile(recipientId); + final var recipientProfile = getProfile(connection, recipientId); if (recipientProfile == null || ( recipientProfile.getUnidentifiedAccessMode() != Profile.UnidentifiedAccessMode.UNKNOWN && recipientProfile.getUnidentifiedAccessMode() @@ -985,6 +981,10 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re } private ProfileKey getProfileKey(final Connection connection, final RecipientId recipientId) throws SQLException { + final var selfRecipientId = resolveRecipientLocked(connection, selfAddressProvider.getSelfAddress()); + if (recipientId.equals(selfRecipientId)) { + return selfProfileKeyProvider.getSelfProfileKey(); + } final var sql = ( """ SELECT r.profile_key