Skip to content

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

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

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

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

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

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

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

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

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

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

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

@tnull@TheBlueMatt@jkczyz@vincenzopalazzo
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); `lightning-block-sync`: Fix `synchronize_listeners` always calling default implementation by tnull · Pull Request #3354 · lightningdevkit/rust-lightning · GitHub
Skip to content

lightning-block-sync: Fix synchronize_listeners always calling default implementation - #3354

Merged
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize
Oct 14, 2024
Merged

lightning-block-sync: Fix synchronize_listeners always calling default implementation#3354
TheBlueMatt merged 1 commit into
lightningdevkit:mainfrom
tnull:2024-10-fix-block-init-synchronize

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Previously, the ChainListenerSetListen implementation wouldn't forward to the listeners block_connected implementation outside of tests. This would result in the default implementation of Listen::block_connected being used and the listeners implementation never being called.

Previously, the `ChainListenerSet` `Listen` implementation wouldn't
forward to the listeners `block_connected` implementation outside of
tests. This would result in the default implementation of
`Listen::block_connected` being used and the listeners implementation
never being called.
@tnull
tnull requested a review from jkczyzOctober 10, 2024 15:19
@codecov

codecovBot commented Oct 10, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 89.61%. Comparing base (a952d2d) to head (f4fe450).
Report is 13 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #3354 +/- ##
==========================================
- Coverage 89.61% 89.61% -0.01% 
==========================================
Files 127 127 Lines 103531 103531 Branches 103531 103531 ==========================================
- Hits 92782 92779 -3 + Misses 8052 8048 -4 - Partials 2697 2704 +7 

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

Comment on lines -242 to -243
// Needed to differentiate test expectations.
#[cfg(test)]

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.

It looks like it was calling each listener's filtered_block_connected method, though, instead of block_connected. Is that a problem? Not clear from the commit message why.

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.

As also discussed offline, the issue here is that the overridden Listen::block_connected implementation would never be called for the listeners. I.e., if they implement some behavior diverging from the default implementation, it would never be used which is clearly a bug.

If we don't expect users to override block_connected, it shouldn't be a trait method in the first place, IMO. Although I really think we should allow it (as we'll now also require it for LDK Node onchain wallet's listener).

tnull added a commit to tnull/ldk-node that referenced this pull request Oct 14, 2024
We previously discovered a minor bug that resulted in
`synchronize_listeners` not calling the actual implementation of
`Listen::block_connected`. While we will fix this upstream
(lightningdevkit/rust-lightning#3354), we now
copy over the fixed code in question to not be blocked on the next LDK
release. We also slightly adjusted it to account for types/APIs that are
only visible inside of `lightning-block-sync`.
We intend to drop the newly added module as soon as we can upgrade to
the next LDK release shipping the fixed version.

@vincenzopalazzovincenzopalazzo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGMT

@TheBlueMatt
TheBlueMatt merged commit 46d8a0d into lightningdevkit:mainOct 14, 2024
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.

4 participants

@tnull@TheBlueMatt@jkczyz@vincenzopalazzo