Make cryptosim state store backend configurable + No Op Wrapper + Read Disable Config#3145
Make cryptosim state store backend configurable + No Op Wrapper + Read Disable Config#3145
Conversation
Thread state store config through SS-backed cryptosim backends so benchmark runs can select PebbleDB or RocksDB without code changes while preserving the existing benchmark defaults. Made-with: Cursor
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
Update the historical state wrapper test to pass the benchmark state store config after making SS backend selection configurable. Made-with: Cursor
Allow cryptosim stress runs to continue when account existence sanity checks drift instead of canceling the benchmark early. Made-with: Cursor
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3145 +/- ##
==========================================
+ Coverage 58.74% 58.75% +0.01%
==========================================
Files 2095 2095
Lines 173533 173475 -58
==========================================
- Hits 101935 101925 -10
+ Misses 62473 62437 -36
+ Partials 9125 9113 -12
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
cody-littley
left a comment
There was a problem hiding this comment.
Will give ✅ once temporary fixes in transaction.go have been resolved.
| switch c.StateStoreConfig.Backend { | ||
| case config.PebbleDBBackend, config.RocksDBBackend: | ||
| default: | ||
| return fmt.Errorf("StateStoreConfig.Backend must be one of %q or %q (got %q)", | ||
| config.PebbleDBBackend, config.RocksDBBackend, c.StateStoreConfig.Backend) | ||
| } | ||
| if c.StateStoreConfig.WriteMode != "" && !c.StateStoreConfig.WriteMode.IsValid() { | ||
| return fmt.Errorf("StateStoreConfig.WriteMode must be valid (got %q)", c.StateStoreConfig.WriteMode) | ||
| } | ||
| if c.StateStoreConfig.ReadMode != "" && !c.StateStoreConfig.ReadMode.IsValid() { | ||
| return fmt.Errorf("StateStoreConfig.ReadMode must be valid (got %q)", c.StateStoreConfig.ReadMode) | ||
| } |
There was a problem hiding this comment.
It might be nice to give state store config it's own validation method, then just call into that validation method here.
Add a write-only transaction mode plus a no-op backend so cryptosim can isolate benchmark overhead before comparing FlatKV and state-store backends. Made-with: Cursor
Check in the RocksDB and PebbleDB cryptosim configs used for the write-only split_write benchmark runs so they are part of the branch. Made-with: Cursor
Use the standard state store async write buffer in cryptosim benchmark defaults and checked-in SS benchmark configs instead of forcing synchronous writes. Made-with: Cursor
| fmt.Printf("Logs are being routed to: %s\n", config.LogDir) | ||
|
|
||
| db, err := wrappers.NewDBImpl(ctx, config.Backend, config.DataDir) | ||
| db, err := wrappers.NewDBImplWithSSConfig(ctx, config.Backend, config.DataDir, config.StateStoreConfig) |
There was a problem hiding this comment.
Why not just pass the whole config as a parameter? In that case, we don't need to change the function here
Switch the benchmark SS defaults and sample configs to split_write while keeping evm_first reads and the standard async write buffer. Made-with: Cursor
There was a problem hiding this comment.
It might be worth removing the config entries in this file that shadow the default values. Otherwise, this file is going to drift out of sync with default test configuration over time.
* main: Make cryptosim state store backend configurable + No Op Wrapper + Read Disable Config (#3145) Add warning message for IAVL deprecation (#3159) Change default min valid per window to zero (#3157) support for starting autobahn from non-zero global block (#3136) Fix upgrade list comparison to respect semver (#3153)
* main: plt-228 fixed static check on app and evmrpc package (#3154) flatkv cache (#3027) Make cryptosim state store backend configurable + No Op Wrapper + Read Disable Config (#3145) Add warning message for IAVL deprecation (#3159) Change default min valid per window to zero (#3157) support for starting autobahn from non-zero global block (#3136) Fix upgrade list comparison to respect semver (#3153)
Describe your changes and provide context
Testing performed to validate your change