There seems to be an issue when hasher is used concurrently in parallel
execution. This change will ensure no hasher is used by multiple
executors at the same time.
* Create MVHashMap and use it StateDB
* Parallel state processor
* Move fee burning and tipping out of state transition to reduce read/write dependencies between transactions
* Re-execute parallel tasks when there is a read in coinbase or burn address
* Block-stm optimization
Added tests for executor and two major improvements:
1. Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
2. Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.
* Remove cache from executor test
* added mvhashmap unit tests (with as key)
* Shard mvhashmap to reduce the time spent in global mutex
* Skip applying intermediate states
* Dependency improvement
* added test for status
* Create MVHashMap and use it StateDB
* Parallel state processor
* Move fee burning and tipping out of state transition to reduce read/write dependencies between transactions
* Re-execute parallel tasks when there is a read in coinbase or burn address
* Txn prioritizer implemented using mutex map (#487)
* basic txn prioritizer implemented using mutex map
* Re-execute parallel tasks when there is a read in coinbase or burn address
* Re-execute parallel tasks when there is a read in coinbase or burn address
* using *sync.RWMutex{} in mutexMap
Co-authored-by: Jerry <jerrycgh@gmail.com>
* added getReadMap and getWriteMap (#473)
* Block-stm optimization
Added tests for executor and some improvements:
1. Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
2. Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.
3. Use sync.Map to reduce the time spent in global mutex.
4. Skip applying intermediate states.
5. Estimate dependency when an execution fails without dependency information.
6. Divide execution task queue into two separate queues. One for relatively certain transactions, and the other for speculative future transactions.
7. Setting dependencies of Txs coming from the same sender before starting parallel execution.
8. Process results in their semantic order (transaction index) instead of the order when they arrive. Replace result channel with a priority queue.
* Do not write entire objects directly when applying write set in blockstm
* fixed a small bug in the Report function (#530)
* linters
Co-authored-by: Jerry <jerrycgh@gmail.com>
Added tests for executor and some improvements:
1. Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
2. Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.
3. Use sync.Map to reduce the time spent in global mutex.
4. Skip applying intermediate states.
5. Estimate dependency when an execution fails without dependency information.
6. Divide execution task queue into two separate queues. One for relatively certain transactions, and the other for speculative future transactions.
7. Setting dependencies of Txs coming from the same sender before starting parallel execution.
8. Process results in their semantic order (transaction index) instead of the order when they arrive. Replace result channel with a priority queue.
* basic txn prioritizer implemented using mutex map
* Re-execute parallel tasks when there is a read in coinbase or burn address
* Re-execute parallel tasks when there is a read in coinbase or burn address
* using *sync.RWMutex{} in mutexMap
Co-authored-by: Jerry <jerrycgh@gmail.com>
* remove setting maxpeers to 0 for nodiscover flag
* set default prometheus and open-collector endpoint
* skip building grpc address from pprof address and port
* fix: linters
* fix and improve tests
* use loopback address for prometheus and open-collector endpoint
* add logs for prometheus and open-collector setup
* updated the script to handle prometheus-addr
* updated builder/files/config.toml
Co-authored-by: Pratik Patil <pratikspatil024@gmail.com>
* added go and bash script to get config out of start.sh and updated flagset.go
* changed 'requiredblocks' flag back to 'eth.requiredblocks'
* updated script
* changed 'requiredblocks' flag back to 'eth.requiredblocks'
* updated tests, and removed requiredblocks from json and hcl
* addressed comments