mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-05-17 14:00:35 -04:00
fix bug to delete scheduled failed trade after restart
This commit is contained in:
parent
2d46b2ab7c
commit
8b1d2aa203
2 changed files with 13 additions and 8 deletions
|
@ -1618,15 +1618,16 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
||||||
// done if wallet already deleted
|
// done if wallet already deleted
|
||||||
if (!walletExists()) return;
|
if (!walletExists()) return;
|
||||||
|
|
||||||
// move to failed trades
|
|
||||||
processModel.getTradeManager().onMoveInvalidTradeToFailedTrades(this);
|
|
||||||
|
|
||||||
// set error height
|
// set error height
|
||||||
if (processModel.getTradeProtocolErrorHeight() == 0) {
|
if (processModel.getTradeProtocolErrorHeight() == 0) {
|
||||||
log.warn("Scheduling to remove trade if unfunded for {} {} from height {}", getClass().getSimpleName(), getId(), xmrConnectionService.getLastInfo().getHeight());
|
log.warn("Scheduling to remove trade if unfunded for {} {} from height {}", getClass().getSimpleName(), getId(), xmrConnectionService.getLastInfo().getHeight());
|
||||||
processModel.setTradeProtocolErrorHeight(xmrConnectionService.getLastInfo().getHeight());
|
processModel.setTradeProtocolErrorHeight(xmrConnectionService.getLastInfo().getHeight()); // height denotes scheduled error handling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// move to failed trades
|
||||||
|
processModel.getTradeManager().onMoveInvalidTradeToFailedTrades(this);
|
||||||
|
requestPersistence();
|
||||||
|
|
||||||
// listen for deposits published to restore trade
|
// listen for deposits published to restore trade
|
||||||
protocolErrorStateSubscription = EasyBind.subscribe(stateProperty(), state -> {
|
protocolErrorStateSubscription = EasyBind.subscribe(stateProperty(), state -> {
|
||||||
if (isDepositsPublished()) {
|
if (isDepositsPublished()) {
|
||||||
|
@ -1680,6 +1681,10 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isProtocolErrorHandlingScheduled() {
|
||||||
|
return processModel.getTradeProtocolErrorHeight() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
private void restoreDepositsPublishedTrade() {
|
private void restoreDepositsPublishedTrade() {
|
||||||
|
|
||||||
// close open offer
|
// close open offer
|
||||||
|
|
|
@ -450,8 +450,8 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip if marked as failed
|
// skip if failed and error handling not scheduled
|
||||||
if (failedTradesManager.getObservableList().contains(trade)) {
|
if (failedTradesManager.getObservableList().contains(trade) && !trade.isProtocolErrorHandlingScheduled()) {
|
||||||
log.warn("Skipping initialization of failed trade {} {}", trade.getClass().getSimpleName(), trade.getId());
|
log.warn("Skipping initialization of failed trade {} {}", trade.getClass().getSimpleName(), trade.getId());
|
||||||
tradesToSkip.add(trade);
|
tradesToSkip.add(trade);
|
||||||
return;
|
return;
|
||||||
|
@ -460,8 +460,8 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
||||||
// initialize trade
|
// initialize trade
|
||||||
initPersistedTrade(trade);
|
initPersistedTrade(trade);
|
||||||
|
|
||||||
// remove trade if protocol didn't initialize
|
// record if protocol didn't initialize
|
||||||
if (getOpenTradeByUid(trade.getUid()).isPresent() && !trade.isDepositsPublished()) {
|
if (!trade.isDepositsPublished()) {
|
||||||
uninitializedTrades.add(trade);
|
uninitializedTrades.add(trade);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue