Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make tests run in parallel #1112

Merged
merged 64 commits into from
Sep 11, 2019
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
5b5f1f1
removed globals for feerates
pm47 Aug 28, 2019
edf53ec
removed global variable for blockcount
pm47 Aug 28, 2019
e6edcc0
Update OpenChannelController.scala
pm47 Aug 28, 2019
3e9e2ee
Update CltvExpirySpec.scala
pm47 Aug 28, 2019
115c081
enable parallelization of tests
pm47 Aug 28, 2019
4d6fa6c
Disable scoverage
pm47 Aug 28, 2019
01d5b9e
made bitcoind/electrumx tests run in parallel
pm47 Aug 29, 2019
4fef019
removed debug comments
pm47 Aug 29, 2019
77a62b2
add `NodeParams.currentBlockHeight` method
pm47 Aug 29, 2019
2154d98
remove unnecessary changes to `sendAdd`
pm47 Aug 29, 2019
c32a0d1
try giving more memory for compile/test
pm47 Aug 29, 2019
11c61fb
Funding fee UI input now fetches fees from node params
dpad85 Aug 29, 2019
c12778d
Revert "Disable scoverage"
pm47 Aug 29, 2019
88fe60d
more parallel tests
pm47 Aug 30, 2019
427f4e7
removed useless code
pm47 Aug 30, 2019
de6a4bf
Merge branch 'master' into parallel-tests
pm47 Aug 30, 2019
5ef9a6d
adjusted timeouts and fixed test
pm47 Aug 30, 2019
df95ffc
longer timeouts
pm47 Aug 30, 2019
5f99f7b
even larger timeouts
pm47 Aug 30, 2019
e13cc05
rewrite fuzzy checks
pm47 Aug 30, 2019
3dea43d
try increasing file limit on travis
pm47 Aug 30, 2019
e8812dd
added sudo
pm47 Aug 30, 2019
db98ea7
set ulimit in a shell
pm47 Aug 30, 2019
fb6b773
reverted to more reasonable timeouts
pm47 Aug 30, 2019
594b33a
removed println's
pm47 Aug 30, 2019
bef43b6
Revert "reverted to more reasonable timeouts"
pm47 Aug 30, 2019
f7c68c3
cosmetic change
pm47 Aug 30, 2019
9ba6ddb
cleaner way of getting `currentBlockHeight`
pm47 Aug 30, 2019
b504312
final (?) fix to fuzzy test
pm47 Aug 30, 2019
2260356
Merge branch 'master' into parallel-tests
pm47 Aug 30, 2019
1971b2f
more printlns
pm47 Aug 30, 2019
e66980e
this time it's fixed
pm47 Aug 30, 2019
2cdd34a
Revert "more printlns"
pm47 Aug 30, 2019
8d5b04c
more timeouts
pm47 Aug 31, 2019
b4f8c75
Revert "more parallel tests"
pm47 Aug 31, 2019
77b131e
Revert "Revert "more parallel tests""
pm47 Sep 2, 2019
ea2e74b
temporarily disable RoutingSyncSpec
pm47 Sep 2, 2019
87789a6
Merge branch 'master' into parallel-tests
pm47 Sep 2, 2019
fdd0e3b
fixed build
pm47 Sep 2, 2019
564a05d
proper initialization of bitcoind in tests
pm47 Sep 2, 2019
81f9286
Revert "temporarily disable RoutingSyncSpec"
pm47 Sep 2, 2019
64ddb53
disable parallel testing in travis
pm47 Sep 3, 2019
88dea06
Merge branch 'master' into parallel-tests
pm47 Sep 3, 2019
0253456
only generate nodes for 100 channels
pm47 Sep 4, 2019
5f349ac
Merge branch 'master' into parallel-tests
pm47 Sep 4, 2019
f7b105f
re-enabled parallel testing on travis
pm47 Sep 4, 2019
ad47309
increased akka.test.timefactor
pm47 Sep 4, 2019
8d9eb5f
Revert "only generate nodes for 100 channels"
pm47 Sep 4, 2019
18a2c98
made sync params configurable
pm47 Sep 4, 2019
d607962
Revert "re-enabled parallel testing on travis"
pm47 Sep 4, 2019
2ed5c52
fixed test condition in fuzzy spec
pm47 Sep 5, 2019
c888b5a
Merge branch 'master' into parallel-tests
pm47 Sep 5, 2019
d8171aa
revert to previous memory settings
pm47 Sep 5, 2019
394d7ba
removed ParallelTestExecution annotation
pm47 Sep 5, 2019
1b99758
Merge branch 'master' into parallel-tests
pm47 Sep 5, 2019
3443750
increased timefactor back to 10
pm47 Sep 5, 2019
10fcac0
Merge branch 'master' into parallel-tests
pm47 Sep 5, 2019
a25fc89
put back parallel tests (now that we are on semaphore ci)
pm47 Sep 5, 2019
5ee98a6
enabled logs
pm47 Sep 5, 2019
2985fb7
re-enabled parallel build on travis
pm47 Sep 5, 2019
b778fd7
tentatively cache docker image dir
pm47 Sep 5, 2019
5f76fa5
Revert "tentatively cache docker image dir"
pm47 Sep 5, 2019
e147a67
Merge branch 'master' into parallel-tests
pm47 Sep 11, 2019
8138f30
consistent naming for test actor systems
pm47 Sep 11, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ before_install:
- export M2_HOME=$PWD/apache-maven-3.6.0
- export PATH=$M2_HOME/bin:$PATH
script:
- mvn scoverage:report
- mvn install
cache:
directories:
- .autoconf
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ case class CltvExpiryDelta(private val underlying: Int) extends Ordered[CltvExpi
/**
* Adds the current block height to the given delta to obtain an absolute expiry.
*/
def toCltvExpiry = CltvExpiry(Globals.blockCount.get() + underlying)
def toCltvExpiry(blockHeight: Long) = CltvExpiry(blockHeight + underlying)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Crazy idea: maybe we could also define a second helper one like that:

def toCltvExpiry(implicit nodeParams: NodeParams): CltvExpiry


// @formatter:off
def +(other: Int): CltvExpiryDelta = CltvExpiryDelta(underlying + other)
Expand Down
2 changes: 1 addition & 1 deletion eclair-core/src/main/scala/fr/acinq/eclair/Eclair.scala
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ class EclairImpl(appKit: Kit) extends Eclair {
GetInfoResponse(nodeId = appKit.nodeParams.nodeId,
alias = appKit.nodeParams.alias,
chainHash = appKit.nodeParams.chainHash,
blockHeight = Globals.blockCount.intValue(),
blockHeight = appKit.nodeParams.currentBlockHeight.toInt,
publicAddresses = appKit.nodeParams.publicAddresses)
)

Expand Down
48 changes: 0 additions & 48 deletions eclair-core/src/main/scala/fr/acinq/eclair/Globals.scala

This file was deleted.

6 changes: 5 additions & 1 deletion eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import java.io.File
import java.net.InetSocketAddress
import java.nio.file.Files
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicLong

import com.typesafe.config.{Config, ConfigFactory}
import fr.acinq.bitcoin.Crypto.PublicKey
Expand All @@ -41,6 +42,7 @@ import scala.concurrent.duration.FiniteDuration
* Created by PM on 26/02/2017.
*/
case class NodeParams(keyManager: KeyManager,
private val blockCount: AtomicLong,
alias: String,
color: Color,
publicAddresses: List[NodeAddress],
Expand Down Expand Up @@ -79,6 +81,7 @@ case class NodeParams(keyManager: KeyManager,
maxPaymentAttempts: Int) {
val privateKey = keyManager.nodeKey.privateKey
val nodeId = keyManager.nodeId
def currentBlockHeight: Long = blockCount.get
}

object NodeParams {
Expand Down Expand Up @@ -123,7 +126,7 @@ object NodeParams {
}
}

def makeNodeParams(config: Config, keyManager: KeyManager, torAddress_opt: Option[NodeAddress], database: Databases, feeEstimator: FeeEstimator): NodeParams = {
def makeNodeParams(config: Config, keyManager: KeyManager, torAddress_opt: Option[NodeAddress], database: Databases, blockCount: AtomicLong, feeEstimator: FeeEstimator): NodeParams = {

val chain = config.getString("chain")
val chainHash = makeChainHash(chain)
Expand Down Expand Up @@ -198,6 +201,7 @@ object NodeParams {

NodeParams(
keyManager = keyManager,
blockCount = blockCount,
alias = nodeAlias,
color = Color(color(0), color(1), color(2)),
publicAddresses = addresses,
Expand Down
46 changes: 33 additions & 13 deletions eclair-core/src/main/scala/fr/acinq/eclair/Setup.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import java.io.File
import java.net.InetSocketAddress
import java.sql.DriverManager
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.{AtomicLong, AtomicReference}

import akka.Done
import akka.actor.{ActorRef, ActorSystem, Props, SupervisorStrategy}
Expand Down Expand Up @@ -96,12 +97,31 @@ class Setup(datadir: File,
case None => Databases.sqliteJDBC(chaindir)
}

/**
* This counter holds the current blockchain height.
* It is mainly used to calculate htlc expiries.
* The value is read by all actors, hence it needs to be thread-safe.
*/
val blockCount = new AtomicLong(0)

/**
* This holds the current feerates, in satoshi-per-kilobytes.
* The value is read by all actors, hence it needs to be thread-safe.
*/
val feeratesPerKB = new AtomicReference[FeeratesPerKB](null)

/**
* This holds the current feerates, in satoshi-per-kw.
* The value is read by all actors, hence it needs to be thread-safe.
*/
val feeratesPerKw = new AtomicReference[FeeratesPerKw](null)

val feeEstimator = new FeeEstimator {
override def getFeeratePerKb(target: Int): Long = Globals.feeratesPerKB.get().feePerBlock(target)
override def getFeeratePerKw(target: Int): Long = Globals.feeratesPerKw.get().feePerBlock(target)
override def getFeeratePerKb(target: Int): Long = feeratesPerKB.get().feePerBlock(target)
override def getFeeratePerKw(target: Int): Long = feeratesPerKw.get().feePerBlock(target)
}

val nodeParams = NodeParams.makeNodeParams(config, keyManager, initTor(), database, feeEstimator)
val nodeParams = NodeParams.makeNodeParams(config, keyManager, initTor(), database, blockCount, feeEstimator)

val serverBindingAddress = new InetSocketAddress(
config.getString("server.binding-ip"),
Expand Down Expand Up @@ -173,7 +193,7 @@ class Setup(datadir: File,
val stream = classOf[Setup].getResourceAsStream(addressesFile)
ElectrumClientPool.readServerAddresses(stream, sslEnabled)
}
val electrumClient = system.actorOf(SimpleSupervisor.props(Props(new ElectrumClientPool(addresses)), "electrum-client", SupervisorStrategy.Resume))
val electrumClient = system.actorOf(SimpleSupervisor.props(Props(new ElectrumClientPool(blockCount, addresses)), "electrum-client", SupervisorStrategy.Resume))
Electrum(electrumClient)
}

Expand All @@ -196,8 +216,8 @@ class Setup(datadir: File,
blocks_72 = config.getLong("on-chain-fees.default-feerates.72"),
blocks_144 = config.getLong("on-chain-fees.default-feerates.144")
)
Globals.feeratesPerKB.set(confDefaultFeerates)
Globals.feeratesPerKw.set(FeeratesPerKw(confDefaultFeerates))
feeratesPerKB.set(confDefaultFeerates)
feeratesPerKw.set(FeeratesPerKw(confDefaultFeerates))
confDefaultFeerates
}
minFeeratePerByte = config.getLong("min-feerate")
Expand All @@ -211,10 +231,10 @@ class Setup(datadir: File,
}
_ = system.scheduler.schedule(0 seconds, 10 minutes)(feeProvider.getFeerates.map {
case feerates: FeeratesPerKB =>
Globals.feeratesPerKB.set(feerates)
Globals.feeratesPerKw.set(FeeratesPerKw(feerates))
system.eventStream.publish(CurrentFeerates(Globals.feeratesPerKw.get))
logger.info(s"current feeratesPerKB=${Globals.feeratesPerKB.get()} feeratesPerKw=${Globals.feeratesPerKw.get()}")
feeratesPerKB.set(feerates)
feeratesPerKw.set(FeeratesPerKw(feerates))
system.eventStream.publish(CurrentFeerates(feeratesPerKw.get))
logger.info(s"current feeratesPerKB=${feeratesPerKB.get()} feeratesPerKw=${feeratesPerKw.get()}")
feeratesRetrieved.trySuccess(Done)
})
_ <- feeratesRetrieved.future
Expand All @@ -223,11 +243,11 @@ class Setup(datadir: File,
case Bitcoind(bitcoinClient) =>
system.actorOf(SimpleSupervisor.props(Props(new ZMQActor(config.getString("bitcoind.zmqblock"), Some(zmqBlockConnected))), "zmqblock", SupervisorStrategy.Restart))
system.actorOf(SimpleSupervisor.props(Props(new ZMQActor(config.getString("bitcoind.zmqtx"), Some(zmqTxConnected))), "zmqtx", SupervisorStrategy.Restart))
system.actorOf(SimpleSupervisor.props(ZmqWatcher.props(new ExtendedBitcoinClient(new BatchingBitcoinJsonRPCClient(bitcoinClient))), "watcher", SupervisorStrategy.Resume))
system.actorOf(SimpleSupervisor.props(ZmqWatcher.props(blockCount, new ExtendedBitcoinClient(new BatchingBitcoinJsonRPCClient(bitcoinClient))), "watcher", SupervisorStrategy.Resume))
case Electrum(electrumClient) =>
zmqBlockConnected.success(Done)
zmqTxConnected.success(Done)
system.actorOf(SimpleSupervisor.props(Props(new ElectrumWatcher(electrumClient)), "watcher", SupervisorStrategy.Resume))
system.actorOf(SimpleSupervisor.props(Props(new ElectrumWatcher(blockCount, electrumClient)), "watcher", SupervisorStrategy.Resume))
}

router = system.actorOf(SimpleSupervisor.props(Router.props(nodeParams, watcher, Some(routerInitialized)), "router", SupervisorStrategy.Resume))
Expand Down Expand Up @@ -293,7 +313,7 @@ class Setup(datadir: File,
val getInfo = GetInfoResponse(nodeId = nodeParams.nodeId,
alias = nodeParams.alias,
chainHash = nodeParams.chainHash,
blockHeight = Globals.blockCount.intValue(),
blockHeight = nodeParams.currentBlockHeight.toInt,
publicAddresses = nodeParams.publicAddresses)
val apiPassword = config.getString("api.password") match {
case "" => throw EmptyAPIPasswordException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
package fr.acinq.eclair.blockchain.bitcoind

import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicLong

import akka.actor.{Actor, ActorLogging, Cancellable, Props, Terminated}
import akka.pattern.pipe
import fr.acinq.bitcoin._
import fr.acinq.eclair.Globals
import fr.acinq.eclair.blockchain._
import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient
import fr.acinq.eclair.channel.BITCOIN_PARENT_TX_CONFIRMED
Expand All @@ -39,7 +39,7 @@ import scala.util.Try
* - also uses bitcoin-core rpc api, most notably for tx confirmation count and blockcount (because reorgs)
* Created by PM on 21/02/2016.
*/
class ZmqWatcher(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext = ExecutionContext.global) extends Actor with ActorLogging {
class ZmqWatcher(blockCount: AtomicLong, client: ExtendedBitcoinClient)(implicit ec: ExecutionContext = ExecutionContext.global) extends Actor with ActorLogging {

import ZmqWatcher._

Expand Down Expand Up @@ -80,7 +80,7 @@ class ZmqWatcher(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext =
client.getBlockCount.map {
case count =>
log.debug(s"setting blockCount=$count")
Globals.blockCount.set(count)
blockCount.set(count)
context.system.eventStream.publish(CurrentBlockCount(count))
}
// TODO: beware of the herd effect
Expand Down Expand Up @@ -151,7 +151,7 @@ class ZmqWatcher(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext =
context become watching(watches + w, addWatchedUtxos(watchedUtxos, w), block2tx, nextTick)

case PublishAsap(tx) =>
val blockCount = Globals.blockCount.get()
val blockCount = this.blockCount.get()
val cltvTimeout = Scripts.cltvTimeout(tx)
val csvTimeout = Scripts.csvTimeout(tx)
if (csvTimeout > 0) {
Expand All @@ -168,7 +168,7 @@ class ZmqWatcher(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext =

case WatchEventConfirmed(BITCOIN_PARENT_TX_CONFIRMED(tx), blockHeight, _, _) =>
log.info(s"parent tx of txid=${tx.txid} has been confirmed")
val blockCount = Globals.blockCount.get()
val blockCount = this.blockCount.get()
val csvTimeout = Scripts.csvTimeout(tx)
val absTimeout = blockHeight + csvTimeout
if (absTimeout > blockCount) {
Expand Down Expand Up @@ -226,7 +226,7 @@ class ZmqWatcher(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext =

object ZmqWatcher {

def props(client: ExtendedBitcoinClient)(implicit ec: ExecutionContext = ExecutionContext.global) = Props(new ZmqWatcher(client)(ec))
def props(blockCount: AtomicLong, client: ExtendedBitcoinClient)(implicit ec: ExecutionContext = ExecutionContext.global) = Props(new ZmqWatcher(blockCount, client)(ec))

case object TickNewBlock

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ package fr.acinq.eclair.blockchain.electrum

import java.io.InputStream
import java.net.InetSocketAddress
import java.util.concurrent.atomic.AtomicLong

import akka.actor.{Actor, ActorRef, FSM, OneForOneStrategy, Props, SupervisorStrategy, Terminated}
import fr.acinq.bitcoin.BlockHeader
import fr.acinq.eclair.Globals
import fr.acinq.eclair.blockchain.CurrentBlockCount
import fr.acinq.eclair.blockchain.electrum.ElectrumClient.SSL
import fr.acinq.eclair.blockchain.electrum.ElectrumClientPool.ElectrumServerAddress
Expand All @@ -32,7 +32,7 @@ import scala.concurrent.ExecutionContext
import scala.concurrent.duration._
import scala.util.Random

class ElectrumClientPool(serverAddresses: Set[ElectrumServerAddress])(implicit val ec: ExecutionContext) extends Actor with FSM[ElectrumClientPool.State, ElectrumClientPool.Data] {
class ElectrumClientPool(blockCount: AtomicLong, serverAddresses: Set[ElectrumServerAddress])(implicit val ec: ExecutionContext) extends Actor with FSM[ElectrumClientPool.State, ElectrumClientPool.Data] {
import ElectrumClientPool._

val statusListeners = collection.mutable.HashSet.empty[ActorRef]
Expand Down Expand Up @@ -166,10 +166,10 @@ class ElectrumClientPool(serverAddresses: Set[ElectrumServerAddress])(implicit v

private def updateBlockCount(blockCount: Long): Unit = {
// when synchronizing we don't want to advertise previous blocks
if (Globals.blockCount.get() < blockCount) {
if (this.blockCount.get() < blockCount) {
log.debug("current blockchain height={}", blockCount)
context.system.eventStream.publish(CurrentBlockCount(blockCount))
Globals.blockCount.set(blockCount)
this.blockCount.set(blockCount)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,21 @@
package fr.acinq.eclair.blockchain.electrum

import java.net.InetSocketAddress
import java.util.concurrent.atomic.AtomicLong

import akka.actor.{Actor, ActorLogging, ActorRef, ActorSystem, Props, Stash, Terminated}
import fr.acinq.bitcoin.{BlockHeader, ByteVector32, Satoshi, Script, Transaction, TxIn, TxOut}
import fr.acinq.eclair.blockchain._
import fr.acinq.eclair.blockchain.electrum.ElectrumClient.{SSL, computeScriptHash}
import fr.acinq.eclair.channel.{BITCOIN_FUNDING_DEPTHOK, BITCOIN_FUNDING_SPENT, BITCOIN_PARENT_TX_CONFIRMED}
import fr.acinq.eclair.transactions.Scripts
import fr.acinq.eclair.{Globals, ShortChannelId, TxCoordinates}
import fr.acinq.eclair.{ShortChannelId, TxCoordinates}

import scala.collection.SortedMap
import scala.collection.immutable.Queue


class ElectrumWatcher(client: ActorRef) extends Actor with Stash with ActorLogging {
class ElectrumWatcher(blockCount: AtomicLong, client: ActorRef) extends Actor with Stash with ActorLogging {

client ! ElectrumClient.AddStatusListener(self)

Expand Down Expand Up @@ -163,7 +164,7 @@ class ElectrumWatcher(client: ActorRef) extends Actor with Stash with ActorLoggi
case ElectrumClient.ServerError(ElectrumClient.GetTransaction(txid, Some(origin: ActorRef)), _) => origin ! GetTxWithMetaResponse(txid, None, tip.time)

case PublishAsap(tx) =>
val blockCount = Globals.blockCount.get()
val blockCount = this.blockCount.get()
val cltvTimeout = Scripts.cltvTimeout(tx)
val csvTimeout = Scripts.csvTimeout(tx)
if (csvTimeout > 0) {
Expand All @@ -184,7 +185,7 @@ class ElectrumWatcher(client: ActorRef) extends Actor with Stash with ActorLoggi

case WatchEventConfirmed(BITCOIN_PARENT_TX_CONFIRMED(tx), blockHeight, _, _) =>
log.info(s"parent tx of txid=${tx.txid} has been confirmed")
val blockCount = Globals.blockCount.get()
val blockCount = this.blockCount.get()
val csvTimeout = Scripts.csvTimeout(tx)
val absTimeout = blockHeight + csvTimeout
if (absTimeout > blockCount) {
Expand Down Expand Up @@ -231,7 +232,7 @@ object ElectrumWatcher extends App {
def receive = {
case ElectrumClient.ElectrumReady(_, _, _) =>
log.info(s"starting watcher")
context become running(context.actorOf(Props(new ElectrumWatcher(client)), "watcher"))
context become running(context.actorOf(Props(new ElectrumWatcher(new AtomicLong(0), client)), "watcher"))
t-bast marked this conversation as resolved.
Show resolved Hide resolved
}

def running(watcher: ActorRef): Receive = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ class Channel(val nodeParams: NodeParams, val wallet: EclairWallet, remoteNodeId
handleCommandError(AddHtlcFailed(d.channelId, c.paymentHash, error, origin(c), Some(d.channelUpdate), Some(c)), c)

case Event(c: CMD_ADD_HTLC, d: DATA_NORMAL) =>
Try(Commitments.sendAdd(d.commitments, c, origin(c))) match {
Try(Commitments.sendAdd(d.commitments, c, origin(c), nodeParams.currentBlockHeight)) match {
case Success(Right((commitments1, add))) =>
if (c.commit) self ! CMD_SIGN
handleCommandSuccess(sender, d.copy(commitments = commitments1)) sending add
Expand Down
Loading