@Override public void onUnspentTransactionUpdate(AddressStatus status, List<UnspentTx> unspentTxes) { lock.lock(); try { AddressStatus updatingStatus = statusPendingUpdates.get(status.getAddress()); // Check if this updating status is valid if (updatingStatus != null && updatingStatus.equals(status)) { updatingStatus.queueUnspentTransactions(unspentTxes); fetchTransactionsIfNeeded(unspentTxes); tryToApplyState(updatingStatus); } else { log.info("Ignoring unspent tx call because no entry found or newer entry."); } } finally { lock.unlock(); } }