mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-04-19 07:15:54 -04:00
shut down p2p service last to fix timeout on shut down
This commit is contained in:
parent
ad38e3b80c
commit
974c6a0d86
@ -366,36 +366,37 @@ public abstract class HavenoExecutable implements GracefulShutDownHandler, Haven
|
||||
log.error("Failed to notify all services to prepare for shutdown: {}\n", e.getMessage(), e);
|
||||
}
|
||||
|
||||
injector.getInstance(TradeManager.class).shutDown();
|
||||
injector.getInstance(PriceFeedService.class).shutDown();
|
||||
injector.getInstance(ArbitratorManager.class).shutDown();
|
||||
injector.getInstance(TradeStatisticsManager.class).shutDown();
|
||||
injector.getInstance(AvoidStandbyModeService.class).shutDown();
|
||||
|
||||
// shut down open offer manager
|
||||
log.info("Shutting down OpenOfferManager, OfferBookService, and P2PService");
|
||||
log.info("Shutting down OpenOfferManager");
|
||||
injector.getInstance(OpenOfferManager.class).shutDown(() -> {
|
||||
|
||||
// shut down offer book service
|
||||
injector.getInstance(OfferBookService.class).shutDown();
|
||||
// listen for shut down of wallets setup
|
||||
injector.getInstance(WalletsSetup.class).shutDownComplete.addListener((ov, o, n) -> {
|
||||
|
||||
// shut down p2p service
|
||||
injector.getInstance(P2PService.class).shutDown(() -> {
|
||||
// shut down p2p service
|
||||
log.info("Shutting down P2P service");
|
||||
injector.getInstance(P2PService.class).shutDown(() -> {
|
||||
|
||||
// shut down monero wallets and connections
|
||||
log.info("Shutting down wallet and connection services");
|
||||
injector.getInstance(WalletsSetup.class).shutDownComplete.addListener((ov, o, n) -> {
|
||||
|
||||
// done shutting down
|
||||
log.info("Graceful shutdown completed. Exiting now.");
|
||||
module.close(injector);
|
||||
completeShutdown(resultHandler, EXIT_SUCCESS, systemExit);
|
||||
});
|
||||
injector.getInstance(BtcWalletService.class).shutDown();
|
||||
injector.getInstance(XmrWalletService.class).shutDown();
|
||||
injector.getInstance(XmrConnectionService.class).shutDown();
|
||||
injector.getInstance(WalletsSetup.class).shutDown();
|
||||
});
|
||||
|
||||
// shut down trade and wallet services
|
||||
log.info("Shutting down trade and wallet services");
|
||||
injector.getInstance(OfferBookService.class).shutDown();
|
||||
injector.getInstance(TradeManager.class).shutDown();
|
||||
injector.getInstance(BtcWalletService.class).shutDown();
|
||||
injector.getInstance(XmrWalletService.class).shutDown();
|
||||
injector.getInstance(XmrConnectionService.class).shutDown();
|
||||
injector.getInstance(WalletsSetup.class).shutDown();
|
||||
});
|
||||
} catch (Throwable t) {
|
||||
log.error("App shutdown failed with exception: {}\n", t.getMessage(), t);
|
||||
|
@ -127,25 +127,21 @@ public abstract class ExecutableForAppWithP2p extends HavenoExecutable {
|
||||
}
|
||||
|
||||
JsonFileManager.shutDownAllInstances();
|
||||
injector.getInstance(TradeManager.class).shutDown();
|
||||
injector.getInstance(PriceFeedService.class).shutDown();
|
||||
injector.getInstance(ArbitratorManager.class).shutDown();
|
||||
injector.getInstance(TradeStatisticsManager.class).shutDown();
|
||||
injector.getInstance(AvoidStandbyModeService.class).shutDown();
|
||||
|
||||
// shut down open offer manager
|
||||
log.info("Shutting down OpenOfferManager, OfferBookService, and P2PService");
|
||||
log.info("Shutting down OpenOfferManager");
|
||||
injector.getInstance(OpenOfferManager.class).shutDown(() -> {
|
||||
|
||||
// shut down offer book service
|
||||
injector.getInstance(OfferBookService.class).shutDown();
|
||||
// listen for shut down of wallets setup
|
||||
injector.getInstance(WalletsSetup.class).shutDownComplete.addListener((ov, o, n) -> {
|
||||
|
||||
// shut down p2p service
|
||||
injector.getInstance(P2PService.class).shutDown(() -> {
|
||||
|
||||
// shut down monero wallets and connections
|
||||
log.info("Shutting down wallet and connection services");
|
||||
injector.getInstance(WalletsSetup.class).shutDownComplete.addListener((ov, o, n) -> {
|
||||
// shut down p2p service
|
||||
log.info("Shutting down P2P service");
|
||||
injector.getInstance(P2PService.class).shutDown(() -> {
|
||||
module.close(injector);
|
||||
PersistenceManager.flushAllDataToDiskAtShutdown(() -> {
|
||||
|
||||
@ -155,6 +151,11 @@ public abstract class ExecutableForAppWithP2p extends HavenoExecutable {
|
||||
UserThread.runAfter(() -> System.exit(HavenoExecutable.EXIT_SUCCESS), 1);
|
||||
});
|
||||
});
|
||||
|
||||
// shut down trade and wallet services
|
||||
log.info("Shutting down trade and wallet services");
|
||||
injector.getInstance(OfferBookService.class).shutDown();
|
||||
injector.getInstance(TradeManager.class).shutDown();
|
||||
injector.getInstance(BtcWalletService.class).shutDown();
|
||||
injector.getInstance(XmrWalletService.class).shutDown();
|
||||
injector.getInstance(XmrConnectionService.class).shutDown();
|
||||
|
@ -2541,7 +2541,7 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
||||
|
||||
if (pollWallet) doPollWallet();
|
||||
} catch (Exception e) {
|
||||
ThreadUtils.execute(() -> requestSwitchToNextBestConnection(sourceConnection), getId());
|
||||
if (!isShutDownStarted) ThreadUtils.execute(() -> requestSwitchToNextBestConnection(sourceConnection), getId());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
@ -257,12 +257,13 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
|
||||
}
|
||||
|
||||
public void maybeSendDepositsConfirmedMessages() {
|
||||
if (!trade.isInitialized() || trade.isShutDownStarted()) return;
|
||||
if (!trade.isInitialized() || trade.isShutDownStarted()) return; // skip if shutting down
|
||||
ThreadUtils.execute(() -> {
|
||||
if (!trade.isInitialized() || trade.isShutDownStarted()) return;
|
||||
if (!trade.isDepositsConfirmed() || trade.isDepositsConfirmedAcked() || trade.isPayoutPublished() || depositsConfirmedTasksCalled) return;
|
||||
depositsConfirmedTasksCalled = true;
|
||||
synchronized (trade.getLock()) {
|
||||
if (!trade.isInitialized() || trade.isShutDownStarted()) return; // skip if shutting down
|
||||
if (!trade.isInitialized() || trade.isShutDownStarted()) return;
|
||||
latchTrade();
|
||||
expect(new Condition(trade))
|
||||
.setup(tasks(getDepositsConfirmedTasks())
|
||||
|
Loading…
x
Reference in New Issue
Block a user