forked from Qortal/qortal
Now Transaction.importAsConfirmed() calls Controller.onNewTransaction(), removing call from API POST /transactions/process and Controller.onNetworkTransactionMessage()
This commit is contained in:
parent
064e12a57b
commit
58ff338ab3
@ -539,6 +539,8 @@ public class TransactionsResource {
|
||||
} finally {
|
||||
blockchainLock.unlock();
|
||||
}
|
||||
|
||||
return "true";
|
||||
} catch (NumberFormatException e) {
|
||||
throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_DATA, e);
|
||||
} catch (DataException e) {
|
||||
@ -546,11 +548,6 @@ public class TransactionsResource {
|
||||
} catch (InterruptedException e) {
|
||||
throw createTransactionInvalidException(request, ValidationResult.NO_BLOCKCHAIN_LOCK);
|
||||
}
|
||||
|
||||
// Notify controller of new transaction
|
||||
Controller.getInstance().onNewTransaction(transactionData, null);
|
||||
|
||||
return "true";
|
||||
}
|
||||
|
||||
@POST
|
||||
|
@ -1048,11 +1048,16 @@ public class Controller extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
/** Callback for when we've received a new transaction via API or peer. */
|
||||
public void onNewTransaction(TransactionData transactionData, Peer peer) {
|
||||
/**
|
||||
* Callback for when we've received a new transaction via API or peer.
|
||||
* <p>
|
||||
* @implSpec performs actions in a new thread
|
||||
*/
|
||||
public void onNewTransaction(TransactionData transactionData) {
|
||||
this.callbackExecutor.execute(() -> {
|
||||
// Notify all peers (except maybe peer that sent it to us if applicable)
|
||||
Network.getInstance().broadcast(broadcastPeer -> broadcastPeer == peer ? null : new TransactionSignaturesMessage(Arrays.asList(transactionData.getSignature())));
|
||||
// Notify all peers
|
||||
Message newTransactionSignatureMessage = new TransactionSignaturesMessage(Arrays.asList(transactionData.getSignature()));
|
||||
Network.getInstance().broadcast(broadcastPeer -> newTransactionSignatureMessage);
|
||||
|
||||
// Notify listeners
|
||||
EventBus.INSTANCE.notify(new NewTransactionEvent(transactionData));
|
||||
@ -1234,9 +1239,6 @@ public class Controller extends Thread {
|
||||
} catch (DataException e) {
|
||||
LOGGER.error(String.format("Repository issue while processing transaction %s from peer %s", Base58.encode(transactionData.getSignature()), peer), e);
|
||||
}
|
||||
|
||||
// Notify controller so it can notify other peers, etc.
|
||||
Controller.getInstance().onNewTransaction(transactionData, peer);
|
||||
}
|
||||
|
||||
private void onNetworkGetBlockSummariesMessage(Peer peer, Message message) {
|
||||
|
@ -765,7 +765,13 @@ public abstract class Transaction {
|
||||
/**
|
||||
* Import into our repository as a new, unconfirmed transaction.
|
||||
* <p>
|
||||
* Calls <tt>repository.saveChanges()</tt>
|
||||
* @implSpec <i>tries</i> to obtain blockchain lock
|
||||
* <p>
|
||||
* If transaction is valid, then:
|
||||
* <ul>
|
||||
* <li>calls {@link Repository#discardChanges()}</li>
|
||||
* <li>calls {@link Controller#onNewTransaction(TransactionData, Peer)}</li>
|
||||
* </ul>
|
||||
*
|
||||
* @throws DataException
|
||||
*/
|
||||
@ -804,6 +810,9 @@ public abstract class Transaction {
|
||||
|
||||
repository.saveChanges();
|
||||
|
||||
// Notify controller of new transaction
|
||||
Controller.getInstance().onNewTransaction(transactionData);
|
||||
|
||||
return ValidationResult.OK;
|
||||
} finally {
|
||||
blockchainLock.unlock();
|
||||
|
Loading…
Reference in New Issue
Block a user