diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala b/eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala index 017fda896..47fa0286c 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/NodeParams.scala @@ -96,11 +96,6 @@ case class NodeParams(nodeKeyManager: NodeKeyManager, val pluginMessageTags: Set[Int] = pluginParams.collect { case p: CustomFeaturePlugin => p.messageTags }.toSet.flatten - def forceReconnect(nodeId: PublicKey): Boolean = pluginParams.exists { - case p: ConnectionControlPlugin => p.forceReconnect(nodeId) - case _ => false - } - def currentBlockHeight: Long = blockCount.get def featuresFor(nodeId: PublicKey): Features = overrideFeatures.getOrElse(nodeId, features) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/PluginParams.scala b/eclair-core/src/main/scala/fr/acinq/eclair/PluginParams.scala index c14e36f0f..785c54e27 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/PluginParams.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/PluginParams.scala @@ -40,11 +40,6 @@ trait CustomFeaturePlugin extends PluginParams { def pluginFeature: UnknownFeature = UnknownFeature(feature.optional) } -trait ConnectionControlPlugin extends PluginParams { - /** Once disconnect happens, should Eclair attempt periodic reconnects to a given remote node even if there is no normal channels left */ - def forceReconnect(nodeId: PublicKey): Boolean -} - /** Parameters for a plugin that defines custom commitment transactions (or non-standard HTLCs). */ trait CustomCommitmentsPlugin extends PluginParams { /** diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/io/ReconnectionTask.scala b/eclair-core/src/main/scala/fr/acinq/eclair/io/ReconnectionTask.scala index 8a951e82f..c196d06cb 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/io/ReconnectionTask.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/io/ReconnectionTask.scala @@ -83,7 +83,7 @@ class ReconnectionTask(nodeParams: NodeParams, remoteNodeId: PublicKey) extends when(IDLE) { case Event(Peer.Transition(previousPeerData, nextPeerData: Peer.DisconnectedData), d: IdleData) => - if (nodeParams.autoReconnect && (nodeParams.forceReconnect(remoteNodeId) || nextPeerData.channels.nonEmpty)) { // we only reconnect if nodeParams explicitly instructs us to or there are existing channels + if (nodeParams.autoReconnect && nextPeerData.channels.nonEmpty) { // we only reconnect if nodeParams explicitly instructs us to or there are existing channels val (initialDelay, firstNextReconnectionDelay) = (previousPeerData, d.previousData) match { case (Peer.Nothing, _) => // When restarting, we add some randomization before the first reconnection attempt to avoid herd effect diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/io/ReconnectionTaskSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/io/ReconnectionTaskSpec.scala index 872ad9c06..bab44be75 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/io/ReconnectionTaskSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/io/ReconnectionTaskSpec.scala @@ -46,12 +46,6 @@ class ReconnectionTaskSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike import com.softwaremill.quicklens._ val aliceParams = TestConstants.Alice.nodeParams .modify(_.autoReconnect).setToIf(test.tags.contains("auto_reconnect"))(true) - .modify(_.pluginParams).setToIf(test.tags.contains("plugin_force_reconnect"))(List(new ConnectionControlPlugin { - // @formatter:off - override def forceReconnect(nodeId: PublicKey): Boolean = true - override def name = "plugin with force-reconnect" - // @formatter:on - })) if (test.tags.contains("with_node_announcements")) { val bobAnnouncement = NodeAnnouncement(randomBytes64, Features.empty, 1, remoteNodeId, Color(100.toByte, 200.toByte, 300.toByte), "node-alias", fakeIPAddress :: Nil) @@ -87,15 +81,6 @@ class ReconnectionTaskSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike monitor.expectNoMessage() } - test("reconnect when there are no channels if plugin instructs to", Tag("auto_reconnect"), Tag("with_node_announcements"), Tag("plugin_force_reconnect")) { f => - import f._ - - val peer = TestProbe() - peer.send(reconnectionTask, Peer.Transition(PeerNothingData, Peer.DisconnectedData(channels = Map.empty))) - val TransitionWithData(ReconnectionTask.IDLE, ReconnectionTask.WAITING, _, _) = monitor.expectMsgType[TransitionWithData] - val TransitionWithData(ReconnectionTask.WAITING, ReconnectionTask.CONNECTING, _, _: ReconnectionTask.ConnectingData) = monitor.expectMsgType[TransitionWithData] - } - test("only try to connect once at startup if auto-reconnect is enabled but there are no known address", Tag("auto_reconnect")) { f => import f._