Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino
, '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

Update BP NetworkGraph and Scorer persist frequency - #2226

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs
May 20, 2023
Merged

Update BP NetworkGraph and Scorer persist frequency#2226
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
alecchendev:2023-04-persist-network-graph-on-rgs

Conversation

@alecchendev

@alecchendevalecchendev commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

Closes#2117.

For NetworkGraph, we normally wait an initial 60 seconds for an initial prune, but since that's likely too long for RGS, we allow pruning before the 60s timer when the RGS initial sync completes. For P2P it still waits the 60s, otherwise both prune/persist hourly as it currently does.

For Scorer, instead of persisting every 30 seconds, this persists each time the scorer is updated from an event, and once every hour similar to the network graph.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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.

Wondering is it still necessary to keep this regular 30s persist if we're persisting on every update to the scorer?

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

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.

It doesn't, indeed, though I also don't think there's any harm in persisting it once an hour with the graph, so would prefer to just leave it.

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.

The timer for the scorer was set to persist every 30s, so I just changed it to an hour to be similar with the graph.

@codecov-commenter

codecov-commenter commented Apr 25, 2023

Copy link
Copy Markdown

Codecov Report

Patch coverage: 100.00% and project coverage change: +1.06 🎉

Comparison is base (ec3aa49) 91.56% compared to head (2afbdf5) 92.63%.

❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.

Additional details and impacted files
@@ Coverage Diff @@## main #2226 +/- ##
==========================================
+ Coverage 91.56% 92.63% +1.06% 
==========================================
Files 104 105 +1 Lines 51749 70952 +19203 Branches 51749 70952 +19203 ==========================================
+ Hits 47386 65725 +18339 - Misses 4363 5227 +864 
Impacted FilesCoverage Δ
lightning-background-processor/src/lib.rs87.62% <100.00%> (+4.41%)⬆️

... and 43 files with indirect coverage changes

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

@wpaulinowpaulino added this to the 0.0.116 milestone Apr 28, 2023
// continuing our normal cadence.
let prune_timer = if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER };
if $timer_elapsed(&mut last_prune_call, prune_timer) {
if !have_pruned || $timer_elapsed(&mut last_prune_call, NETWORK_PRUNE_TIMER) {

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'm not sure if we want to prune immediately when syncing via P2P. Previously, we'd wait 60 seconds, which gave us some time to sync with peers any updates that happened while offline. If we happened to be offline for a while, we may end up pruning a large portion of our graph before we sync with any peers, just to add them back once syncing completes. Maybe we should also expose a notion of "initial sync" when syncing via P2P that checks whether we've done a sufficient amount of syncs?

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.

Yea, indeed, probably we should not.

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.

I couldn't find a great way to expose when an "initial sync" would be considered over for P2P, since IIUC we basically do an "unofficial" sync of just getting either a full dump (no-std) or latest 2 weeks (std) through the gossip timestamp filter for our first 5 peers we connect to? For now I just left the 60s initial prune timer for P2P but allowed pruning before this once RGS initial sync has completed.

last_prune_call = $get_timer(NETWORK_PRUNE_TIMER);
}

if $timer_elapsed(&mut last_scorer_persist_call, SCORER_PERSIST_TIMER) {

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'm not too familiar with the scorer, but I don't think it does anything in the background to warrant persisting on a timer, as it mostly relies on datapoints received from events (cc @TheBlueMatt).

Previously we would wait 60 seconds after startup, however for RGS we
prune/persist after its initial sync since 60 seconds is likely too
long.
Now that we persist the scorer upon events, we extend timer persistence
from 30 seconds to 1 hour, similar to network graph persistence.
@alecchendev
alecchendevforce-pushed the 2023-04-persist-network-graph-on-rgs branch from 8ac39c9 to 2afbdf5CompareMay 15, 2023 23:56
@TheBlueMatt
TheBlueMatt merged commit 6aca7e1 into lightningdevkit:mainMay 20, 2023
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.

Persist NetworkGraph in BP upon RGS updates

4 participants

@alecchendev@codecov-commenter@TheBlueMatt@wpaulino