in service/src/main/java/org/apache/fineract/cn/stellarbridge/service/internal/horizonadapter/HorizonServerUtilities.java [262:300]
private <T extends Exception> void submitTransaction(
final Account transactionSubmitter,
final Transaction.Builder transactionBuilder,
final KeyPair signingKeyPair,
final Supplier<T> failureHandler)
throws T
{
try {
//final Long sequenceNumberSubmitted = account.getSequenceNumber();
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (transactionSubmitter) {
final Transaction transaction = transactionBuilder.build();
transaction.sign(signingKeyPair);
final SubmitTransactionResponse transactionResponse = server.submitTransaction(transaction);
if (!transactionResponse.isSuccess()) {
if (transactionResponse.getExtras() != null) {
logger.info("Stellar transaction failed, request: {}", transactionResponse.getExtras().getEnvelopeXdr());
logger.info("Stellar transaction failed, response: {}", transactionResponse.getExtras().getResultXdr());
}
else
{
logger.info("Stellar transaction failed. No extra information available.");
}
//TODO: resend transaction if you get a bad sequence.
/*Thread.sleep(6000); //Wait for ledger to close.
Long sequenceNumberShouldHaveBeen =
server.accounts().account(account.getKeypair()).getSequenceNumber();
if (sequenceNumberSubmitted != sequenceNumberShouldHaveBeen) {
logger.info("Sequence number submitted: {}, Sequence number should have been: {}",
sequenceNumberSubmitted, sequenceNumberShouldHaveBeen);
}*/
throw failureHandler.get();
}
}
} catch (final IOException e) {
throw InvalidConfigurationException.unreachableStellarServerAddress(stellarBridgeProperties.getHorizonAddress());
}
}