Commit graph

10 commits

Author SHA1 Message Date
Arpit Temani
08b4937cb6 fix lint 2023-09-23 16:26:23 +05:30
Shivam Sharma
811c90f549 Merge branch 'develop' into mardizzone/upstream-merge 2023-07-24 14:19:30 +05:30
marcello33
f3ffacf2d7 dev: fix: most of wsl lint issues 2023-06-15 15:48:26 +02:00
Jerry
01fc7e3a53
Run serial and parallel processor at the same time 2023-04-24 21:48:41 -07:00
Jerry
48c1f9078d Allow parallel state processor to be interrupted by caller 2023-04-19 12:22:59 -07:00
Pratik Patil
d53c2e7902
Block stm miner dependency (#561)
* added support for dependencies (executor_tests)

* added a function to get dependency map

* getting all dependencies in the GetDep function

* updated GetDep function

* changed the type of AllDeps

* added a function to get dependency map

* updated GetDep function

* generate and get dependencies from block producer

* optimized getDep function

* bug fix regarding txn index and dep structure

* fixed gas bug

* optimized getDep function

* tests updated/added

* few updates regarding dependencies

* added channel to calculate the dependencies in a separate go routine

* minor changes in the executor which uses latest changes of dependecies + removed metadata flag/argument

* Use channel when metadata is available

* small bug fix

* getting reads and writes only when the transaction succeeds

* fixed bug in adding dependencies

* updated logic for delay/not delay

* bug fix (shouldDelayFeeCal) in parallel state processor

* lint fix

* using EnableMVHashMap flag

* fixed worker and stateProcessor and removed SetMVHashMapNil fumction from stateDB

* addredded few comments and fixed bug in executor tests

* commented executor tests with metadata (panic: test timed out after 5m0s)

* added a check to check len(mvReadMapList) > 0 in miner

* addressed comments, minor refactoring in dag.go

* moved blockContext out of Execute and adding it in execution task

* removed Author() from Settle() and added  in execution task

* not calling block.Header() again and again, using  instead

* removed EnableMVHashMap flag, and updated applyTransaction function

* addressed comments

* added unit test to check dependencies in the block header

Co-authored-by: Jerry <jerrycgh@gmail.com>
2022-12-23 09:14:09 +05:30
Jerry
6f0d16fbeb Add ability to calculate the longest execution path in a block 2022-10-05 11:37:46 -07:00
Jerry
e63e390ec7 Recognize bad transactions and break loop in blockstm executor 2022-09-29 23:05:09 -07:00
Jerry
471afc8da2 Refactor blockstm executor 2022-09-29 23:05:09 -07:00
Jerry
c36ad88aec 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.
2022-09-28 16:12:20 -07:00