Skip to content

Commit c8e459b

Browse files
ovitrifclaude
andcommitted
fix: skip migration on unreadable existing monitor instead of failing (rc.36)
When orphaned channel migration encounters an existing monitor that can't be deserialized (e.g. UnknownVersion), skip the migration instead of killing node startup with ReadFailed. The existing data is preserved. Also adds HTLC timeout force-close fix to CHANGELOG (from rc.35). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent db5ce1b commit c8e459b

12 files changed

Lines changed: 38 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
1-
# 0.7.0-rc.35 (Synonym Fork)
1+
# 0.7.0-rc.36 (Synonym Fork)
22

33
## Bug Fixes
44

5+
- Fixed orphaned channel migration blocking node startup when the existing monitor
6+
in the KV store can't be deserialized (e.g., `UnknownVersion` from a newer LDK
7+
version). The migration now skips writing and lets the node start normally,
8+
preserving the existing monitor data.
9+
- Fixed HTLC timeout force-close during stale monitor recovery. The healing keysend
10+
created HTLCs with a stale `cltv_expiry` (based on the ChannelManager's outdated
11+
best block height for users offline >24h). When chain sync caught up, LDK
12+
force-closed the channel (HTLCsTimedOut). Fix: sync the chain tip before sending
13+
healing payments so HTLCs get a valid CLTV expiry. If sync fails, skip the keysend
14+
to avoid the stale-CLTV force-close.
515
- Fixed native crash (SIGABRT) during stale channel monitor recovery. The
616
`CounterpartyCommitmentSecrets` store was not reset when force-syncing the
717
monitor's `update_id`, causing `provide_secret()` to fail validation after

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ exclude = ["bindings/uniffi-bindgen"]
44

55
[package]
66
name = "ldk-node"
7-
version = "0.7.0-rc.35"
7+
version = "0.7.0-rc.36"
88
authors = ["Elias Rohrer <dev@tnull.de>"]
99
homepage = "https://lightningdevkit.org/"
1010
license = "MIT OR Apache-2.0"

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
import PackageDescription
55

6-
let tag = "v0.7.0-rc.35"
7-
let checksum = "c9e0da5dfb353a7540c57f5547d3839cff4e914e4f2bbc796adbd24b9ee54fa0"
6+
let tag = "v0.7.0-rc.36"
7+
let checksum = "6b566ec65a293f4f67051c6385fbab791af329d65cf0f830953f1f3e87a3fd2b"
88
let url = "https://github.com/synonymdev/ldk-node/releases/download/\(tag)/LDKNodeFFI.xcframework.zip"
99

1010
let package = Package(

bindings/kotlin/ldk-node-android/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ android.useAndroidX=true
33
android.enableJetifier=true
44
kotlin.code.style=official
55
group=com.synonym
6-
version=0.7.0-rc.35
6+
version=0.7.0-rc.36
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
org.gradle.jvmargs=-Xmx1536m
22
kotlin.code.style=official
33
group=com.synonym
4-
version=0.7.0-rc.35
4+
version=0.7.0-rc.36
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)