Polykey icon indicating copy to clipboard operation
Polykey copied to clipboard

Allow `NodeManager` to start lazily without network entry procedure

Open tegefaulkes opened this issue 2 years ago • 5 comments

Specification

When starting the PolykeyAgent the NodeManager takes two steps to enter the network. When NodeManager is started it calls this.setupRefreshBucketTasks() and shortly after starting the PolykeyAgent calls this.nodeManager.syncNodeGraph. The fact that these two steps happen by default when starting a PolykeyAgent` can interfere with testing and adds a bunch of processing that doesn't need to be done.

We need to update this behaviour as specified in this comment https://github.com/MatrixAI/Polykey/pull/451#issuecomment-1261697179.

Additional context

  • Related #451
  • https://github.com/MatrixAI/Polykey/pull/451#issuecomment-1261697179

Tasks

  1. Add a lazy parameter to NodeManager.start that when true, skips the creation of refreshBucket tasks with setupRefreshBucketTasks and skips running syncNodeGraph.
  2. Add a method to NodeManager called startSync that combines the setupRefreshBucketTasks and syncNodeGraph operations
  3. rename syncNodeGraph to syncSeedNodes
  4. Have the PolykeyAgent creation and start optionally skip the startSync process based on a parameter.
  5. Update any PolykeyAgent usage in testing to skip the sync process where needed.
  6. Remove any mocking of refreshBucket to stub it out and replace it with usage of 5.

tegefaulkes avatar Sep 29 '22 08:09 tegefaulkes

Would this be something we should do as part of 6th testnet deployment?

CMCDragonkai avatar Aug 11 '23 06:08 CMCDragonkai

Not strictly needed but is nice to have for testing and should be reasonably quick to implement. I'll add it in.

tegefaulkes avatar Aug 14 '23 01:08 tegefaulkes

I think this is the case now. You can start the NodeManager and then need to call syncNodeGraph. I'd like to extend this to all background functionality in NodeGraph. So we can disable all background operations for tests. They tend to add a bunch of noise when testing and can interfere in some cases.

I'd also like to add a option PolykeyAgent to disable background tasks such as these.

tegefaulkes avatar Dec 13 '23 02:12 tegefaulkes

I suggest we use the stealth mode #199 feature to side-step this problem. Essentially it would temporarily (togglable) disable all background network tasks (that includes social discovery, node discovery, mdns... etc) across the board, then we don't need to add special configuration just to disable certain things for testing.

CMCDragonkai avatar Dec 15 '23 03:12 CMCDragonkai

To do such a thing, you can make use of the pattern used in the TaskManager with substart commands. Like startProcessing stopProcessing.

Any domain that has backgrounded network operations should have a substart/substop operations that can be called independently to switch its operating modes.

CMCDragonkai avatar Dec 15 '23 03:12 CMCDragonkai