Skip to content

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

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

Add async variant of MigratableKVStore (0.3 backport) - #4661

Merged
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3
Jun 9, 2026
Merged

Add async variant of MigratableKVStore (0.3 backport)#4661
tnull merged 3 commits into
lightningdevkit:0.3from
tnull:2026-06-migratable-kv-store-async-0.3

Conversation

@tnull

@tnulltnull commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Backport of #4658.

@ldk-reviews-bot

ldk-reviews-bot commented Jun 4, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

/// Migrates all data from one asynchronous store to another.
///
/// This operation assumes that `target_store` is empty, i.e., any data present under copied keys
/// might get overriden. User must ensure `source_store` is not modified during operation,

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.

Nit: "overriden" → "overridden" (double 'd'). The same typo exists in the sync version's doc comment above, so this is pre-existing, but worth fixing in both places while you're here.

@ldk-claude-review-bot

ldk-claude-review-bot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

No new issues found.

I re-examined the entire PR including the unified migrate_kv_store_data_inner adapter pattern, the two blanket MigratableKVStore impls (confirmed no coherence conflict since KVStoreSyncWrapper doesn't implement Deref), the spawn_blocking-based async fs_store implementation, and the moved list_all_keys logic. Everything mirrors the existing sync/async patterns correctly.

The only previously-flagged item was the "overriden" → "overridden" typo at lightning/src/util/persist.rs:712 (already commented in the prior pass). No new bugs, security issues, or logic errors.

@valentinewallace

Copy link
Copy Markdown
Contributor

Looks like I can't merge, also I'm not sure what's going on with CI.

@tnull

tnull commented Jun 8, 2026

Copy link
Copy Markdown
ContributorAuthor

Looks like I can't merge, also I'm not sure what's going on with CI.

Same here. Will need to wait for @TheBlueMatt it seems.

@tnull
tnull requested a review from TheBlueMattJune 8, 2026 09:08

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

These comits need Backport-of tags.

tnull added 3 commits June 9, 2026 10:01
Prepare the migration API naming for an async variant by giving the
existing synchronous trait an explicit Sync suffix.
Backport of 4060b62
Co-Authored-By: HAL 9000
Expose an async migratable KV store trait and async migration helper so
async stores can migrate data without using the synchronous API.
Backport of 9b11fda
Co-Authored-By: HAL 9000
Allow the filesystem stores to use the async migration helper and cover
both store versions with async migration tests.
Backport of 94cff3b
Co-Authored-By: HAL 9000
@tnull
tnullforce-pushed the 2026-06-migratable-kv-store-async-0.3 branch from 0445413 to c4442a0CompareJune 9, 2026 08:02
@tnull

tnull commented Jun 9, 2026

Copy link
Copy Markdown
ContributorAuthor

These comits need Backport-of tags.

Done, going ahead landing this as only the commit message changed since the last ACK.

@tnull
tnull merged commit 3dfcc4c into lightningdevkit:0.3Jun 9, 2026
1 check passed
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

@tnull@ldk-reviews-bot@ldk-claude-review-bot@valentinewallace@TheBlueMatt