Skip to content

Commit 9e4042f

Browse files
authored
Migrate ZmqWatcher to akka-typed (#1759)
And re-work watch types and bitcoin events. The type architecture is cleaner and more future-proof. More tests have also been added.
1 parent 223a14c commit 9e4042f

37 files changed

+1140
-985
lines changed

eclair-core/src/main/scala/fr/acinq/eclair/Logs.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import akka.event.DiagnosticLoggingAdapter
2020
import akka.io.Tcp
2121
import fr.acinq.bitcoin.ByteVector32
2222
import fr.acinq.bitcoin.Crypto.PublicKey
23-
import fr.acinq.eclair.blockchain.ValidateResult
23+
import fr.acinq.eclair.blockchain.bitcoind.ZmqWatcher.ValidateResult
2424
import fr.acinq.eclair.channel.{LocalChannelDown, LocalChannelUpdate}
2525
import fr.acinq.eclair.crypto.TransportHandler.HandshakeCompleted
2626
import fr.acinq.eclair.io.Peer.PeerRoutingMessage

eclair-core/src/main/scala/fr/acinq/eclair/Setup.scala

+7-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
package fr.acinq.eclair
1818

1919
import akka.Done
20-
import akka.actor.{ActorContext, ActorRef, ActorSystem, Props, SupervisorStrategy}
20+
import akka.actor.typed
21+
import akka.actor.typed.scaladsl.Behaviors
22+
import akka.actor.typed.scaladsl.adapter.ClassicActorSystemOps
23+
import akka.actor.{ActorRef, ActorSystem, Props, SupervisorStrategy}
2124
import akka.pattern.after
2225
import akka.util.Timeout
2326
import com.softwaremill.sttp.okhttp.OkHttpFutureBackend
@@ -28,7 +31,7 @@ import fr.acinq.eclair.blockchain.bitcoind.rpc.{BasicBitcoinJsonRPCClient, Batch
2831
import fr.acinq.eclair.blockchain.bitcoind.zmq.ZMQActor
2932
import fr.acinq.eclair.blockchain.bitcoind.{BitcoinCoreWallet, ZmqWatcher}
3033
import fr.acinq.eclair.blockchain.fee._
31-
import fr.acinq.eclair.channel.{Channel, Register, TxPublisher}
34+
import fr.acinq.eclair.channel.{Channel, Register}
3235
import fr.acinq.eclair.crypto.keymanager.{LocalChannelKeyManager, LocalNodeKeyManager}
3336
import fr.acinq.eclair.db.Databases.FileBackup
3437
import fr.acinq.eclair.db.{Databases, DbEventHandler, FileBackupHandler}
@@ -234,7 +237,7 @@ class Setup(datadir: File,
234237
watcher = {
235238
system.actorOf(SimpleSupervisor.props(Props(new ZMQActor(config.getString("bitcoind.zmqblock"), Some(zmqBlockConnected))), "zmqblock", SupervisorStrategy.Restart))
236239
system.actorOf(SimpleSupervisor.props(Props(new ZMQActor(config.getString("bitcoind.zmqtx"), Some(zmqTxConnected))), "zmqtx", SupervisorStrategy.Restart))
237-
system.actorOf(SimpleSupervisor.props(ZmqWatcher.props(nodeParams.chainHash, blockCount, extendedBitcoinClient), "watcher", SupervisorStrategy.Resume))
240+
system.spawn(Behaviors.supervise(ZmqWatcher(nodeParams.chainHash, blockCount, extendedBitcoinClient)).onFailure(typed.SupervisorStrategy.resume), "watcher")
238241
}
239242

240243
router = system.actorOf(SimpleSupervisor.props(Router.props(nodeParams, watcher, Some(routerInitialized)), "router", SupervisorStrategy.Resume))
@@ -347,7 +350,7 @@ object Setup {
347350

348351
case class Kit(nodeParams: NodeParams,
349352
system: ActorSystem,
350-
watcher: ActorRef,
353+
watcher: typed.ActorRef[ZmqWatcher.Command],
351354
paymentHandler: ActorRef,
352355
register: ActorRef,
353356
relayer: ActorRef,

eclair-core/src/main/scala/fr/acinq/eclair/blockchain/WatcherTypes.scala

-123
This file was deleted.

0 commit comments

Comments
 (0)