-
Notifications
You must be signed in to change notification settings - Fork 116
Fix backwards compatibility of NodeMetrics reads
#748
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
Fix backwards compatibility of NodeMetrics reads
#748
Conversation
In commit dd55d47 we started ignoring the legacy `latest_channel_monitor_archival_height` field of `NodeMetrics`. However, we erroneously started reading it as `Option<u32>`, though, given it's an optional field, it should have been read as a plain `u32` that might or might not be present. Here we fix this error.
|
👋 Thanks for assigning @TheBlueMatt as a reviewer! |
TheBlueMatt
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops thanks
We previously added a test asserting backwards compatibility for nodes reinitializing from a VSS backend. However, given VSS tests are only continously run in CI we here add the same test using the default SQLite backend, ensuring backwards compatibility breakage is also checked when running tests locally.
e07e9f5 to
93b6b42
Compare
Sorry, force-pushed some minor fixups dropping VSS-specific comments from the testcase: > git diff-tree -U2 e07e9f5c 93b6b425
diff --git a/tests/integration_tests_rust.rs b/tests/integration_tests_rust.rs
index 2855c425..4b82d1f4 100644
--- a/tests/integration_tests_rust.rs
+++ b/tests/integration_tests_rust.rs
@@ -41,5 +41,4 @@ use lightning_invoice::{Bolt11InvoiceDescription, Description};
use lightning_types::payment::{PaymentHash, PaymentPreimage};
use log::LevelFilter;
-use rand::{rng, Rng};
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
@@ -2449,5 +2448,5 @@ async fn persistence_backwards_compatibility() {
let node_entropy = NodeEntropy::from_seed_bytes(seed_bytes);
- // Setup a v0.6.2 `Node` persisted with the v0 scheme.
+ // Setup a v0.6.2 `Node`
let (old_balance, old_node_id) = {
let mut builder_old = ldk_node_062::Builder::new();
@@ -2473,9 +2472,5 @@ async fn persistence_backwards_compatibility() {
let node_id = node_old.node_id();
- // Workaround necessary as v0.6.2's VSS runtime wasn't dropsafe in a tokio context.
- tokio::task::block_in_place(move || {
- node_old.stop().unwrap();
- drop(node_old);
- });
+ node_old.stop().unwrap();
(balance, node_id) |
|
CI is still sad though. |
Yeah, that seems really unrelated this time: |
In commit dd55d47 we started ignoring the legacy
latest_channel_monitor_archival_heightfield ofNodeMetrics. However, we erroneously started reading it asOption<u32>, though, given it's an optional field, it should have been read as a plainu32that might or might not be present. Here we fix this error.We also add a test case asserting serialization backwards compatibility for non-VSS backends.