A custom storage engine of Nethermind, benefiting from the alignment of the underlying data structure with the layout of State & Storage trees of Ethereum.
This PR amends the prefetching one more time. The previous implementation was not thread safe and resulted in some undefined behavior from time to time (reading/writing when it should not to). The current implementation moves back to being single threaded and scheduling its work using ThreadPool.UnsafeQueueUserWorkItem and by implementing IThreadPoolWorkItem.
BitFilter issue
To limit the overhead of merging a prefetcher filter with the filter from BlockState, the block's filter is used directly so no copying at the end happens. This requires AddAtomic but it should not be a burden (runs show that it's not).
This PR amends the prefetching one more time. The previous implementation was not thread safe and resulted in some undefined behavior from time to time (reading/writing when it should not to). The current implementation moves back to being single threaded and scheduling its work using
ThreadPool.UnsafeQueueUserWorkItem
and by implementingIThreadPoolWorkItem
.BitFilter issue
To limit the overhead of merging a prefetcher filter with the filter from
BlockState
, the block's filter is used directly so no copying at the end happens. This requiresAddAtomic
but it should not be a burden (runs show that it's not).Benchmarks