From 157c84a4e06cd76d305d39c364b9daeea48ddb9a Mon Sep 17 00:00:00 2001 From: Ben Carman Date: Fri, 19 Jun 2020 14:41:53 -0500 Subject: [PATCH] Have BroadcastTransactionTest rebroadcast on failure (#1561) --- .../bitcoins/node/BroadcastTransactionTest.scala | 14 +++++++++++++- node/src/main/scala/org/bitcoins/node/Node.scala | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/node-test/src/test/scala/org/bitcoins/node/BroadcastTransactionTest.scala b/node-test/src/test/scala/org/bitcoins/node/BroadcastTransactionTest.scala index 6fbfbc033e..39fb309a61 100644 --- a/node-test/src/test/scala/org/bitcoins/node/BroadcastTransactionTest.scala +++ b/node-test/src/test/scala/org/bitcoins/node/BroadcastTransactionTest.scala @@ -70,7 +70,19 @@ class BroadcastTransactionTest extends NodeUnitTest { bitcoindBalancePreBroadcast <- balanceF _ <- node.broadcastTransaction(tx) _ <- - TestAsyncUtil.awaitConditionF(() => hasSeenTx(tx), duration = 1.second) + TestAsyncUtil + .awaitConditionF(() => hasSeenTx(tx), + duration = 1.second, + maxTries = 25) + .recoverWith { + case _: Throwable => + for { + _ <- node.broadcastTransaction(tx) + _ <- TestAsyncUtil.awaitConditionF(() => hasSeenTx(tx), + duration = 1.second, + maxTries = 25) + } yield () + } _ <- rpc.generateToAddress(blocks = 1, junkAddress) bitcoindBalancePostBroadcast <- rpc.getBalance diff --git a/node/src/main/scala/org/bitcoins/node/Node.scala b/node/src/main/scala/org/bitcoins/node/Node.scala index f9f6a45fb7..004bb1be48 100644 --- a/node/src/main/scala/org/bitcoins/node/Node.scala +++ b/node/src/main/scala/org/bitcoins/node/Node.scala @@ -208,7 +208,7 @@ trait Node extends NodeApi with ChainQueryApi with P2PLogger { override def broadcastTransaction(transaction: Transaction): Future[Unit] = { val broadcastTx = BroadcastAbleTransaction(transaction) - txDAO.create(broadcastTx).onComplete { + txDAO.upsert(broadcastTx).onComplete { case Failure(exception) => logger.error(s"Error when writing broadcastable TX to DB", exception) case Success(written) =>