finish open offer manager tasks before shut down

This commit is contained in:
woodser 2023-12-29 11:17:27 -05:00
parent e2e2963b99
commit 7f3fd0af08

View file

@ -316,20 +316,22 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
int size = openOffers.size(); int size = openOffers.size();
log.info("Remove open offers at shutDown. Number of open offers: {}", size); log.info("Remove open offers at shutDown. Number of open offers: {}", size);
if (offerBookService.isBootstrapped() && size > 0) { if (offerBookService.isBootstrapped() && size > 0) {
UserThread.execute(() -> { HavenoUtils.submitToThread(() -> { // finish tasks
openOffers.forEach(openOffer -> offerBookService.removeOfferAtShutDown(openOffer.getOffer().getOfferPayload())); UserThread.execute(() -> {
openOffers.forEach(openOffer -> offerBookService.removeOfferAtShutDown(openOffer.getOffer().getOfferPayload()));
// Force broadcaster to send out immediately, otherwise we could have a 2 sec delay until the // Force broadcaster to send out immediately, otherwise we could have a 2 sec delay until the
// bundled messages sent out. // bundled messages sent out.
broadcaster.flush(); broadcaster.flush();
if (completeHandler != null) { if (completeHandler != null) {
// For typical number of offers we are tolerant with delay to give enough time to broadcast. // For typical number of offers we are tolerant with delay to give enough time to broadcast.
// If number of offers is very high we limit to 3 sec. to not delay other shutdown routines. // If number of offers is very high we limit to 3 sec. to not delay other shutdown routines.
int delay = Math.min(3000, size * 200 + 500); int delay = Math.min(3000, size * 200 + 500);
UserThread.runAfter(completeHandler, delay, TimeUnit.MILLISECONDS); UserThread.runAfter(completeHandler, delay, TimeUnit.MILLISECONDS);
} }
}); });
}, THREAD_ID);
} else { } else {
broadcaster.flush(); broadcaster.flush();
if (completeHandler != null) if (completeHandler != null)