Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

@jurvis@jkczyz@codecov-commenter@valentinewallace@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

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

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

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

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

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

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

@jurvis@jkczyz@codecov-commenter@valentinewallace@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

@jurvis@jkczyz@codecov-commenter@valentinewallace@TheBlueMatt
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

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

Calculate InFlightHtlcs based on information in ChannelManager - #1830

Merged
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager
Nov 21, 2022
Merged

Calculate InFlightHtlcs based on information in ChannelManager#1830
TheBlueMatt merged 5 commits into
lightningdevkit:mainfrom
jurvis:jurvis/2022-10-calculate-inflight-with-chanmanager

Conversation

@jurvis

Copy link
Copy Markdown
Contributor

Follow-up of #1643 (comment).

Currently, we populate path information about payments we attempt to send/retry in InvoicePayer's payment_cache. It allows us to compute an InFlightHtlcs struct that we pass to the router so that its values can be considered when routing.

This PR introduces an improvement since ChannelManager actually knows about changing liquidity information since it produces the payment events that InvoicePayer relies on to populate path information in payment_cache

@jurvis

Copy link
Copy Markdown
ContributorAuthor

we probably need to rework the testing strategy for InFlightHtlcs' values, but wanted to get a concept ack before proceeding. cc // @jkczyz

@jkczyz
jkczyz self-requested a review November 4, 2022 20:17
@jkczyz

Copy link
Copy Markdown
Contributor

Concept ACK with caveats discussed offline about testing and payment cache.

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch 2 times, most recently from d5c8465 to 30d7805CompareNovember 13, 2022 01:43
});
}

#[test]

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.

we no longer populate inflight path information based on events, so there is probably no need to have tests for this any longer.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 30d7805 to 2806be6CompareNovember 13, 2022 01:51
@jurvis

Copy link
Copy Markdown
ContributorAuthor

rebased to resolve conflict in payment.rs

@codecov-commenter

codecov-commenter commented Nov 13, 2022

Copy link
Copy Markdown

Codecov Report

Base: 90.61% // Head: 90.97% // Increases project coverage by +0.36% 🎉

Coverage data is based on head (3136d73) compared to base (7269fa2).
Patch coverage: 99.36% of modified lines in pull request are covered.

Additional details and impacted files
@@ Coverage Diff @@## main #1830 +/- ##
==========================================
+ Coverage 90.61% 90.97% +0.36% 
==========================================
Files 90 91 +1 Lines 47623 50202 +2579 Branches 47623 50202 +2579 ==========================================
+ Hits 43152 45670 +2518 - Misses 4471 4532 +61 
Impacted FilesCoverage Δ
lightning/src/ln/channel.rs92.13% <90.90%> (+3.38%)⬆️
lightning-invoice/src/payment.rs89.27% <100.00%> (-0.45%)⬇️
lightning-invoice/src/utils.rs95.20% <100.00%> (+<0.01%)⬆️
lightning/src/ln/channelmanager.rs85.11% <100.00%> (+0.07%)⬆️
lightning/src/ln/payment_tests.rs98.89% <100.00%> (+0.12%)⬆️
lightning/src/routing/router.rs91.73% <100.00%> (+0.03%)⬆️
lightning/src/offers/offer.rs92.26% <0.00%> (-2.30%)⬇️
lightning/src/util/events.rs25.25% <0.00%> (-0.25%)⬇️
lightning/src/ln/functional_tests.rs97.13% <0.00%> (-0.03%)⬇️
lightning/src/offers/parse.rs93.47% <0.00%> (ø)
... and 6 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@jurvis
jurvis marked this pull request as ready for review November 13, 2022 04:17

@valentinewallacevalentinewallace 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.

Looking good!

Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis

Copy link
Copy Markdown
ContributorAuthor

thanks for the review @valentinewallace! I'll make the changes.

additional note: I'm going to be writing an additional tests to make sure HTLCs in holding cells are calculated when producing InflightHtlcs.

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 853282a to 673d36fCompareNovember 15, 2022 05:03
@jurvis

Copy link
Copy Markdown
ContributorAuthor

Resolved review comments, added a functional test in 673d36f to check if holding cells HTLCs show up in InflightHtlcs

Comment threadlightning/src/ln/functional_tests.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment on lines +5706 to +5707
/// Gets inflight HTLC information by processing pending outbound `HTLCSource`s that are in
/// our channels.

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.

I think we should document the usage, because IIRC this isn't intended to be used for users to view their in-flight payments, just for routing purposes? Lmk if I'm off there

@jurvisjurvisNov 15, 2022

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.

Yeah, that's correct. We'll work on an API for viewing pending payments in a follow-up PR, since we think it may need a different solution.

I'll add a little bit more context here to make its intended use more explicit.

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.

@valentinewallace I added a comment to specify that we use this information for pathfinding, but let me know if it can be better :)

@TheBlueMattTheBlueMatt left a comment

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.

LGTM, otherwise.

Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/channelmanager.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 673d36f to 2c8fdd3CompareNovember 16, 2022 02:56
TheBlueMatt
TheBlueMatt previously approved these changes Nov 16, 2022
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs
Comment threadlightning-invoice/src/payment.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@valentinewallace

Copy link
Copy Markdown
Contributor

Needs rebase as well, sorry!

@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 8449c71 to 7d6b109CompareNovember 17, 2022 01:50
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace thanks for pointing that out -- rebased!

Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 7d6b109 to b51db04CompareNovember 17, 2022 17:47
Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from b51db04 to 3e8926dCompareNovember 17, 2022 18:50
valentinewallace
valentinewallace previously approved these changes Nov 17, 2022

@valentinewallacevalentinewallace 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.

LGTM, feel free to take or leave nits

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/ln/channel.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from 3e8926d to fd4792aCompareNovember 17, 2022 20:18
@jurvis

Copy link
Copy Markdown
ContributorAuthor

@valentinewallace nits very much appreciated :) thanks!

valentinewallace
valentinewallace previously approved these changes Nov 17, 2022
TheBlueMatt
TheBlueMatt previously approved these changes Nov 17, 2022

@TheBlueMattTheBlueMatt left a comment

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.

Will let @jkczyz review + merge.

Comment threadlightning/src/ln/channelmanager.rs Outdated
Comment threadlightning/src/routing/router.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
Comment threadlightning/src/ln/payment_tests.rs Outdated
In c70bd1f, we implemented tracking HTLCs by adding path information
for pending HTLCs to `InvoicePayer`’s `payment_cache` when receiving
specific events.
Since we can now track inflight HTLCs entirely within ChannelManager,
there is no longer a need for this to exist.
@jurvis
jurvisforce-pushed the jurvis/2022-10-calculate-inflight-with-chanmanager branch from fd4792a to 3136d73CompareNovember 19, 2022 19:20
@TheBlueMatt
TheBlueMatt merged commit a4c4301 into lightningdevkit:mainNov 21, 2022
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.

5 participants

@jurvis@jkczyz@codecov-commenter@valentinewallace@TheBlueMatt