From f936210717f65dc2702b3e3f42b8ca690d40816c Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Tue, 2 Mar 2021 13:42:34 -0600 Subject: [PATCH] fix mailbox bootstrap issue --- .../main/java/bisq/network/p2p/P2PService.java | 8 +++++--- .../p2p/mailbox/MailboxMessageService.java | 16 ++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/p2p/src/main/java/bisq/network/p2p/P2PService.java b/p2p/src/main/java/bisq/network/p2p/P2PService.java index 6f363ddc31f..01eae454304 100644 --- a/p2p/src/main/java/bisq/network/p2p/P2PService.java +++ b/p2p/src/main/java/bisq/network/p2p/P2PService.java @@ -334,12 +334,14 @@ private void applyIsBootstrapped(Consumer listenerHandler) { p2PDataStorage.onBootstrapped(); + // We don't use a listener at mailboxMessageService as we require the correct + // order of execution. The mailboxMessageService must be called before. + mailboxMessageService.onBootstrapped(); + // Once we have applied the state in the P2P domain we notify our listeners p2pServiceListeners.forEach(listenerHandler); - // We don't use a listener at mailboxMessageService as we require the correct - // order of execution. The p2pServiceListeners must be called before. - mailboxMessageService.onBootstrapped(); + mailboxMessageService.initAfterBootstrapped(); } } diff --git a/p2p/src/main/java/bisq/network/p2p/mailbox/MailboxMessageService.java b/p2p/src/main/java/bisq/network/p2p/mailbox/MailboxMessageService.java index e505c457388..3271dd9acc0 100644 --- a/p2p/src/main/java/bisq/network/p2p/mailbox/MailboxMessageService.java +++ b/p2p/src/main/java/bisq/network/p2p/mailbox/MailboxMessageService.java @@ -221,13 +221,18 @@ public void readPersisted(Runnable completeHandler) { public void onBootstrapped() { if (!isBootstrapped) { isBootstrapped = true; - // Only now we start listening and processing. The p2PDataStorage is our cache for data we have received - // after the hidden service was ready. - addHashMapChangedListenerAndApply(); - maybeRepublishMailBoxMessages(); } } + // second stage starup for MailboxMessageService ... apply existing messages to their modules + public void initAfterBootstrapped() { + // Only now we start listening and processing. The p2PDataStorage is our cache for data we have received + // after the hidden service was ready. + addHashMapChangedListener(); + onAdded(p2PDataStorage.getMap().values()); + maybeRepublishMailBoxMessages(); + } + public void sendEncryptedMailboxMessage(NodeAddress peer, PubKeyRing peersPubKeyRing, @@ -374,9 +379,8 @@ public void onRemoved(Collection protectedStorageEntries) // Private /////////////////////////////////////////////////////////////////////////////////////////// - private void addHashMapChangedListenerAndApply() { + private void addHashMapChangedListener() { p2PDataStorage.addHashMapChangedListener(this); - onAdded(p2PDataStorage.getMap().values()); } private void processSingleMailboxEntry(Collection protectedMailboxStorageEntries) {