@@ -147,6 +147,9 @@ class Peer(val nodeParams: NodeParams,
147147 stay() using d.copy(peerStorage = d.peerStorage.copy(written = true ))
148148
149149 case Event (e : ChannelReadyForPayments , d : DisconnectedData ) =>
150+ if (d.peerStorage.written == false && ! isTimerActive(" peer-storage-write" )) {
151+ startSingleTimer(" peer-storage-write" , WritePeerStorage , nodeParams.peerStorageConfig.writeDelay)
152+ }
150153 stay() using d.copy(activeChannels = d.activeChannels + e.channelId)
151154
152155 case Event (e : LocalChannelDown , d : DisconnectedData ) =>
@@ -441,6 +444,9 @@ class Peer(val nodeParams: NodeParams,
441444 }
442445 }
443446 }
447+ if (d.peerStorage.written == false && ! isTimerActive(" peer-storage-write" )) {
448+ startSingleTimer(" peer-storage-write" , WritePeerStorage , nodeParams.peerStorageConfig.writeDelay)
449+ }
444450 stay() using d.copy(activeChannels = d.activeChannels + e.channelId)
445451
446452 case Event (e : LocalChannelDown , d : ConnectedData ) =>
@@ -539,17 +545,20 @@ class Peer(val nodeParams: NodeParams,
539545 stay()
540546
541547 case Event (store : PeerStorageStore , d : ConnectedData ) =>
542- if (nodeParams.features.hasFeature(Features .ProvideStorage ) && d.activeChannels.nonEmpty ) {
548+ if (nodeParams.features.hasFeature(Features .ProvideStorage )) {
543549 // If we don't have any pending write operations, we write the updated peer storage to disk after a delay.
544550 // This ensures that when we receive a burst of peer storage updates, we will rate-limit our IO disk operations.
545551 // If we already have a pending write operation, we must not reset the timer, otherwise we may indefinitely delay
546552 // writing to the DB and may never store our peer's backup.
547- if (d.peerStorage.written) {
553+ if (d.activeChannels.isEmpty) {
554+ log.debug(" received peer storage from peer with no active channel" )
555+ }
556+ else if (! isTimerActive(" peer-storage-write" )) {
548557 startSingleTimer(" peer-storage-write" , WritePeerStorage , nodeParams.peerStorageConfig.writeDelay)
549558 }
550559 stay() using d.copy(peerStorage = PeerStorage (Some (store.blob), written = false ))
551560 } else {
552- log.debug(" ignoring peer storage ( feature={}, channels={}) " , nodeParams.features.hasFeature( Features . ProvideStorage ), d.activeChannels.mkString( " , " ) )
561+ log.debug(" ignoring peer storage, feature disabled " )
553562 stay()
554563 }
555564
0 commit comments