Replies: 5 comments 5 replies
-
I'm fine with this approach. Couple of questions:
|
Beta Was this translation helpful? Give feedback.
-
Another consideration: we can either support Unix only, or Unix and Windows.
|
Beta Was this translation helpful? Give feedback.
-
I'm against having a special process that spawn 3 children processes. There are many reasons why, here are some:
|
Beta Was this translation helpful? Give feedback.
-
One thing that I'd like to mention, this discussion skipped the conversation of why docker is better to directly go for a start script. Here are the reasons why I recommend docker:
I also am not sure how to handle the initialization of servers for integration tests. Ideally the testsuite should take care of everything, meaning it should be easy to run and fast to get started (this is quite important for development cycle, and integration tests will very easily eat lots of time). It would be ideal to find a test runner for rust that can run fixture setup for that. |
Beta Was this translation helpful? Give feedback.
-
After discussion, we are going to go with simply running everything in the same process; i.e. the gRPC server/clients will be the same process. |
Beta Was this translation helpful? Give feedback.
-
In our weekly meeting, we discussed different ways to start the node. Specifically, given that we currently need at least 3 processes (store, rpc, and block-producer), and there are currently dependencies between these (i.e. store must be started before rpc), how does a user start everything?
I looked at how Reth and Erigon do it:
reth
withcargo build --release
, and then execute it to run the full node.make erigon
, which generates a single binary./build/bin/erigon
which you can execute to get the full node. Even though Erigon can be run on multiple machines or in docker containers, they specifically recommend only to do that if necessary.I think we should have the same approach. Very simply, we generate an executable which spawns 3 child processes which open their gRPC endpoints at configurable ports (with sensible defaults that just work). This is easy, and it would work just fine for our initial testnet. In the future, we can offer Docker images, prebuilt binaries for each component, etc.
What do people think?
Beta Was this translation helpful? Give feedback.
All reactions