Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add `ChannelReady` event by tnull · Pull Request #1743 · lightningdevkit/rust-lightning · GitHub
Skip to content

Add ChannelReady event - #1743

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events
Nov 3, 2022
Merged

Add ChannelReady event#1743
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
tnull:2022-09-channel-events

Conversation

@tnull

@tnulltnull commented Sep 26, 2022

Copy link
Copy Markdown
Contributor

Closes#1394.

This adds a ChannelReady event that will be emitted as soon as a new
channel becomes usable, i.e., after both sides have sent channel_ready.

@tnull
tnull marked this pull request as draft September 26, 2022 12:17
@tnull

tnull commented Sep 26, 2022

Copy link
Copy Markdown
ContributorAuthor

Draft for now, since tests are still failing.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelEstablished eventSep 26, 2022
@tnulltnull changed the title Add ChannelEstablished eventAdd ChannelOpened eventSep 28, 2022
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@TheBlueMattTheBlueMatt added this to the 0.0.113 milestone Oct 21, 2022
@tnull
tnullforce-pushed the 2022-09-channel-events branch from 33dbc0c to 405c589CompareOctober 26, 2022 12:30
@tnulltnull changed the title Add ChannelOpened eventAdd ChannelReady eventOct 26, 2022
@tnull
tnull marked this pull request as ready for review October 26, 2022 12:31
@tnull

Copy link
Copy Markdown
ContributorAuthor

Rebased on main and reworked the approach: a bool is now bubbled up from Channel::check_get_channel_ready along side the msgs::ChannelReady and used in ChannelManager to decide whether to emit_channel_ready!.

In the second commit I included the discussed renaming of ChannelState::ChannelFunded to ChannelState::ChannelReady, and since all three align nicely then, I now reconsidered and named the event Event::ChannelReady after all.

Finally, the third commit includes a minor fix for unused import warnings.

Tests currently still failing, looking into it.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from b7135dd to 2526975CompareOctober 26, 2022 13:15
Comment threadlightning/src/ln/channelmanager.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from f7d8c41 to dabe755CompareOctober 28, 2022 10:52
@tnull

Copy link
Copy Markdown
ContributorAuthor

Fixed tests and rebased on main.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 4 times, most recently from 7fde0f7 to f969b45CompareOctober 28, 2022 11:54
@codecov-commenter

codecov-commenter commented Oct 28, 2022

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.03361% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.28%. Comparing base (ad7ff0b) to head (49dfcb6).
⚠️ Report is 7080 commits behind head on main.

Files with missing linesPatch %Lines
lightning/src/util/events.rs28.57%15 Missing ⚠️
lightning-background-processor/src/lib.rs71.42%2 Missing ⚠️
lightning/src/ln/channelmanager.rs91.66%1 Missing ⚠️
lightning/src/ln/functional_test_utils.rs92.85%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1743 +/- ##
==========================================
+ Coverage 90.73% 91.28% +0.55% 
==========================================
Files 87 87 Lines 47336 49835 +2499 Branches 47336 49835 +2499 ==========================================
+ Hits 42950 45494 +2544 + Misses 4386 4341 -45 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tnull
tnullforce-pushed the 2022-09-channel-events branch 5 times, most recently from 75861b2 to 735fa78CompareOctober 28, 2022 13:43
@tnull
tnullforce-pushed the 2022-09-channel-events branch 3 times, most recently from ae803b8 to 85ee73aCompareOctober 28, 2022 15:32

@wpaulinowpaulino left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to squash.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 43e5538 to 71a999bCompareNovember 1, 2022 09:06
@tnull

tnull commented Nov 1, 2022

Copy link
Copy Markdown
ContributorAuthor

I now reverted the 'bubble-up' approach after all since all required checks are conducted in the should_emit_channel_ready_event and send_channel_ready!, which makes this much less intrusive.

Squashed changes.

@dunxendunxen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just noticed we use "0conf" and "0-conf" in comments throughout the project. The hyphenated one looks "more correct". No biggie.

Comment threadlightning-background-processor/src/lib.rs Outdated
Comment threadlightning/src/ln/channel.rs
@tnull
tnullforce-pushed the 2022-09-channel-events branch 2 times, most recently from 9033c30 to f3c23a8CompareNovember 1, 2022 09:25
Comment threadlightning-invoice/src/utils.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/functional_test_utils.rs Outdated
Comment threadlightning/src/ln/functional_tests.rs Outdated
let bs_htlc_claim_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
assert_eq!(bs_htlc_claim_txn.len(), 1);
check_spends!(bs_htlc_claim_txn[0], as_commitment_tx);
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], None, false, false);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand why we have to move this up?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we want to move this because the PaymentForwarded event is emitted by the handle_update_fulfill_htlc already and then the expect_channel_ready_event call in create_announced_chan_between_nodes fails due to 2 events being queued.

Comment threadlightning/src/util/events.rs Outdated
Comment threadlightning/src/ln/peer_handler.rs
Comment threadlightning/src/util/events.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

@tnull
tnullforce-pushed the 2022-09-channel-events branch from 2f10adf to a8720b2CompareNovember 2, 2022 20:39
@tnull

tnull commented Nov 2, 2022

Copy link
Copy Markdown
ContributorAuthor

I think this is good - can you squash the fixups into the appropriate commits? Its somewhat hard to re-review when the fixups are all at the end rather than with the commit they'll eventually get squashed into.

Think all fixups belonged to the first commit => Done.

@TheBlueMatt

TheBlueMatt commented Nov 2, 2022

Copy link
Copy Markdown
Collaborator

Is it worth having a release notes entry for this that says that "no ChannelReady events will be generated for existing channels, including those which become ready on 0.0.113"? I don't think its worth having complicated logic for whether we default channel_ready_event_emitted to true or false based on state, but I also think it may be worth calling out.

@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Either way, current code LGTM, probably fine to squash given the reviewers currently. You can leave a diff-tree of the fixups if you want.

This adds a `ChannelReady` event that is emitted as soon as a new
channel becomes usable, i.e., after both sides have sent
`channel_ready`.
We rename `ChannelState::ChannelFunded` to `ChannelState::ChannelReady`
as we'll be in this state when both sides sent the `ChannelReady`
messages, which may also be before funding in the 0conf case.
Previously introduced during release commit.
@tnull
tnullforce-pushed the 2022-09-channel-events branch from a8720b2 to 49dfcb6CompareNovember 3, 2022 10:47
@tnull

tnull commented Nov 3, 2022

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups and included the pending changelog message

> git diff-tree -U2 a8720b2 49dfcb6
diff --git a/pending_changelog/1743.txt b/pending_changelog/1743.txt
new file mode 100644
index 00000000..93e41202
--- /dev/null
+++ b/pending_changelog/1743.txt
@@ -0,0 +1,7 @@
+## API Updates
+- A new `ChannelReady` event is generated whenever a channel becomes ready to
+ be used, i.e., after both sides sent the `channel_ready` message.
+
+## Backwards Compatibilty
+- No `ChannelReady` events will be generated for previously existing channels, including
+ those which become ready after upgrading 0.0.113.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ChannelConfirmed Event

7 participants

@tnull@codecov-commenter@TheBlueMatt@dunxen@wpaulino@valentinewallace@ViktorT-11