forked from Qortal/qortal
Automatically backup trade bot data when starting a new trade (from either side).
This commit is contained in:
parent
4312ebfcc3
commit
e9b4a3f6b3
@ -211,6 +211,9 @@ public class LitecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
|
|
||||||
TradeBot.updateTradeBotState(repository, tradeBotData, () -> String.format("Built AT %s. Waiting for deployment", atAddress));
|
TradeBot.updateTradeBotState(repository, tradeBotData, () -> String.format("Built AT %s. Waiting for deployment", atAddress));
|
||||||
|
|
||||||
|
// Attempt to backup the trade bot data
|
||||||
|
TradeBot.backupTradeBotData(repository);
|
||||||
|
|
||||||
// Return to user for signing and broadcast as we don't have their Qortal private key
|
// Return to user for signing and broadcast as we don't have their Qortal private key
|
||||||
try {
|
try {
|
||||||
return DeployAtTransactionTransformer.toBytes(deployAtTransactionData);
|
return DeployAtTransactionTransformer.toBytes(deployAtTransactionData);
|
||||||
@ -283,6 +286,9 @@ public class LitecoinACCTv1TradeBot implements AcctTradeBot {
|
|||||||
tradeForeignPublicKey, tradeForeignPublicKeyHash,
|
tradeForeignPublicKey, tradeForeignPublicKeyHash,
|
||||||
crossChainTradeData.expectedForeignAmount, xprv58, null, lockTimeA, receivingPublicKeyHash);
|
crossChainTradeData.expectedForeignAmount, xprv58, null, lockTimeA, receivingPublicKeyHash);
|
||||||
|
|
||||||
|
// Attempt to backup the trade bot data
|
||||||
|
TradeBot.backupTradeBotData(repository);
|
||||||
|
|
||||||
// Check we have enough funds via xprv58 to fund P2SH to cover expectedForeignAmount
|
// Check we have enough funds via xprv58 to fund P2SH to cover expectedForeignAmount
|
||||||
long p2shFee;
|
long p2shFee;
|
||||||
try {
|
try {
|
||||||
|
@ -7,6 +7,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -267,6 +268,22 @@ public class TradeBot implements Listener {
|
|||||||
return secret;
|
return secret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*package*/ static void backupTradeBotData(Repository repository) {
|
||||||
|
// Attempt to backup the trade bot data. This an optional step and doesn't impact trading, so don't throw an exception on failure
|
||||||
|
try {
|
||||||
|
LOGGER.info("About to backup trade bot data...");
|
||||||
|
ReentrantLock blockchainLock = Controller.getInstance().getBlockchainLock();
|
||||||
|
blockchainLock.lockInterruptibly();
|
||||||
|
try {
|
||||||
|
repository.exportNodeLocalData(true);
|
||||||
|
} finally {
|
||||||
|
blockchainLock.unlock();
|
||||||
|
}
|
||||||
|
} catch (InterruptedException | DataException e) {
|
||||||
|
LOGGER.info(String.format("Failed to obtain blockchain lock when exporting trade bot data: %s", e.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Updates trade-bot entry to new state, with current timestamp, logs message and notifies state-change listeners. */
|
/** Updates trade-bot entry to new state, with current timestamp, logs message and notifies state-change listeners. */
|
||||||
/*package*/ static void updateTradeBotState(Repository repository, TradeBotData tradeBotData,
|
/*package*/ static void updateTradeBotState(Repository repository, TradeBotData tradeBotData,
|
||||||
String newState, int newStateValue, Supplier<String> logMessageSupplier) throws DataException {
|
String newState, int newStateValue, Supplier<String> logMessageSupplier) throws DataException {
|
||||||
|
Loading…
Reference in New Issue
Block a user