[CLI] Exit if the node / faucet stops when running a local testnet
Description
As it is now, if you run this command and the node thread panics, it just prints the panic without exiting. Worse than that, if it returns an error, it prints nothing at all and just silently sits there, broken.
cargo run -p aptos -- node run-local-testnet --force-restart --assume-yes
This PR fixes that, making sure that the CLI exists if the local testnet / faucet exit.
This is a very imperfect fix. Really what we want is something like what we do in the tap: https://github.com/aptos-labs/aptos-tap/blob/main/src/server/run.rs#L170. In this setup, all never-ending tasks are represented as futures (whereas this is a blend of future and blocking thread) and all tasks return errors, so instead of printing the error and then bubbling up a (), it actually returns the error, which can then get propagated all the way up to main.
Test Plan
Command:
cargo run -p aptos -- node run-local-testnet --force-restart --config-path /tmp/yes_api.yaml --assume-yes
No error introduced:
Completed generating configuration:
Log file: "/Users/dport/a/core/.aptos/testnet/validator.log"
Test dir: "/Users/dport/a/core/.aptos/testnet"
Aptos root key path: "/Users/dport/a/core/.aptos/testnet/mint.key"
Waypoint: 0:0d22c659f2a6e918612c9be311a0efdfa1fc9cf9751a4968f866924faf73bb9b
ChainId: testing
REST API endpoint: http://0.0.0.0:8080
Metrics endpoint: http://0.0.0.0:9102/metrics
Aptosnet Fullnode network endpoint: /ip4/0.0.0.0/tcp/6184
Aptos is running, press ctrl-c to exit
Error introduced in the node thread:
Node stopped unexpectedly Err(
"manual error",
)
{
"Error": "Unexpected error: One of the components stopped unexpectedly"
}
Panic introduced in the faucet future. Output: https://gist.github.com/banool/c6b4392aa1f41e9fb4f22c6a6b839a8c.
Forge is running suite land_blocking on 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite compat on 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite land_blocking success on 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
performance benchmark with full nodes : 6765 TPS, 5849 ms latency, 10900 ms p99 latency,(!) expired 1314 out of 2890100 txns
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite compat success on 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
Compatibility test results for 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468 (PR)
1. Check liveness of validators at old version: 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b
compatibility::simple-validator-upgrade::liveness-check : 7634 TPS, 5097 ms latency, 7000 ms p99 latency,no expired txns
2. Upgrading first Validator to new version: 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
compatibility::simple-validator-upgrade::single-validator-upgrade : 4904 TPS, 7774 ms latency, 10400 ms p99 latency,no expired txns
3. Upgrading rest of first batch to new version: 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
compatibility::simple-validator-upgrade::half-validator-upgrade : 4514 TPS, 8874 ms latency, 11400 ms p99 latency,no expired txns
4. upgrading second batch to new version: 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468
compatibility::simple-validator-upgrade::rest-validator-upgrade : 6534 TPS, 5887 ms latency, 11600 ms p99 latency,no expired txns
5. check swarm health
Compatibility test for 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> 0d7d17ab844e55cbe42fd7f6b6333c2867ae2468 passed
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite land_blocking on b2ab567bf643580a080a3c43bf24a6856e5d5b72
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite compat on 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b2ab567bf643580a080a3c43bf24a6856e5d5b72
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite compat success on 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b2ab567bf643580a080a3c43bf24a6856e5d5b72
Compatibility test results for 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b2ab567bf643580a080a3c43bf24a6856e5d5b72 (PR)
1. Check liveness of validators at old version: 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b
compatibility::simple-validator-upgrade::liveness-check : 7507 TPS, 5167 ms latency, 7200 ms p99 latency,no expired txns
2. Upgrading first Validator to new version: b2ab567bf643580a080a3c43bf24a6856e5d5b72
compatibility::simple-validator-upgrade::single-validator-upgrade : 4441 TPS, 9318 ms latency, 12600 ms p99 latency,no expired txns
3. Upgrading rest of first batch to new version: b2ab567bf643580a080a3c43bf24a6856e5d5b72
compatibility::simple-validator-upgrade::half-validator-upgrade : 4620 TPS, 8567 ms latency, 11400 ms p99 latency,no expired txns
4. upgrading second batch to new version: b2ab567bf643580a080a3c43bf24a6856e5d5b72
compatibility::simple-validator-upgrade::rest-validator-upgrade : 6688 TPS, 5764 ms latency, 10700 ms p99 latency,no expired txns
5. check swarm health
Compatibility test for 2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b2ab567bf643580a080a3c43bf24a6856e5d5b72 passed
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite land_blocking success on b2ab567bf643580a080a3c43bf24a6856e5d5b72
performance benchmark with full nodes : 6701 TPS, 5918 ms latency, 11700 ms p99 latency,(!) expired 580 out of 2862200 txns
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite land_blocking on f4d8df146bc7416df973f814fbd7da3026985d40
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite compat on testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> f4d8df146bc7416df973f814fbd7da3026985d40
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite land_blocking success on f4d8df146bc7416df973f814fbd7da3026985d40
performance benchmark with full nodes : 6856 TPS, 5791 ms latency, 18600 ms p99 latency,(!) expired 160 out of 2927880 txns
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite compat success on testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> f4d8df146bc7416df973f814fbd7da3026985d40
Compatibility test results for testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> f4d8df146bc7416df973f814fbd7da3026985d40 (PR)
1. Check liveness of validators at old version: testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b
compatibility::simple-validator-upgrade::liveness-check : 7433 TPS, 5188 ms latency, 7500 ms p99 latency,no expired txns
2. Upgrading first Validator to new version: f4d8df146bc7416df973f814fbd7da3026985d40
compatibility::simple-validator-upgrade::single-validator-upgrade : 4969 TPS, 8435 ms latency, 11100 ms p99 latency,no expired txns
3. Upgrading rest of first batch to new version: f4d8df146bc7416df973f814fbd7da3026985d40
compatibility::simple-validator-upgrade::half-validator-upgrade : 4578 TPS, 9031 ms latency, 11300 ms p99 latency,no expired txns
4. upgrading second batch to new version: f4d8df146bc7416df973f814fbd7da3026985d40
compatibility::simple-validator-upgrade::rest-validator-upgrade : 6988 TPS, 5466 ms latency, 8600 ms p99 latency,no expired txns
5. check swarm health
Compatibility test for testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> f4d8df146bc7416df973f814fbd7da3026985d40 passed
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite land_blocking on b955b2316af43085f706ec3d2af70d00f8bd50a5
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
Forge is running suite compat on testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b955b2316af43085f706ec3d2af70d00f8bd50a5
- Grafana dashboard (auto-refresh)
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite land_blocking success on b955b2316af43085f706ec3d2af70d00f8bd50a5
performance benchmark with full nodes : 6445 TPS, 6201 ms latency, 35400 ms p99 latency,(!) expired 360 out of 2752720 txns
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking
:white_check_mark: Forge suite compat success on testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b955b2316af43085f706ec3d2af70d00f8bd50a5
Compatibility test results for testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b955b2316af43085f706ec3d2af70d00f8bd50a5 (PR)
1. Check liveness of validators at old version: testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b
compatibility::simple-validator-upgrade::liveness-check : 7054 TPS, 5468 ms latency, 8200 ms p99 latency,no expired txns
2. Upgrading first Validator to new version: b955b2316af43085f706ec3d2af70d00f8bd50a5
compatibility::simple-validator-upgrade::single-validator-upgrade : 4602 TPS, 9120 ms latency, 12300 ms p99 latency,no expired txns
3. Upgrading rest of first batch to new version: b955b2316af43085f706ec3d2af70d00f8bd50a5
compatibility::simple-validator-upgrade::half-validator-upgrade : 4415 TPS, 9301 ms latency, 12200 ms p99 latency,no expired txns
4. upgrading second batch to new version: b955b2316af43085f706ec3d2af70d00f8bd50a5
compatibility::simple-validator-upgrade::rest-validator-upgrade : 6982 TPS, 5709 ms latency, 10100 ms p99 latency,no expired txns
5. check swarm health
Compatibility test for testnet_2d8b1b57553d869190f61df1aaf7f31a8fc19a7b ==> b955b2316af43085f706ec3d2af70d00f8bd50a5 passed
Test Ok
- Grafana dashboard
- Humio Logs
- Test runner output
- Test run is land-blocking