neo-go/pkg/core
Roman Khimov 5fbe838fd4 core: add and use synchronous persist to avoid OOM
b9be892bf9 has made Persist asynchronous which
is very effective in allowing the system to continue processing
blocks/transactions while flushing things to disk. It at the same time is very
dangerous in that if the disk is slow and it takes much time to flush KV set
(more than persisting interval), there might be even bigger new KV set in
MemCachedStore by the time it finishes. Even if the system immediately starts
to flush this new data set it (being bigger) can take more time than the
previous one. And while doing so a new data set will appear in memory,
potentially again bigger than this.

So we can easily end up with the system going out of control, consuming more
and more memory and taking more and more time to persist a single set of
data. To avoid this we need to detect such condition and just wait for Persist
to really finish its job and release the resources.
2021-11-22 10:41:40 +03:00
..
block network: remove priority queue from block queue 2021-11-01 11:49:01 +03:00
blockchainer core: store NEP-11 transfers, add accessor functions 2021-11-18 00:09:10 +03:00
chaindump block: drop Network from the Header 2021-03-26 13:45:18 +03:00
dao core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
fee vm: add PACKMAP/PACKSTRUCT, extend UNPACK 2021-11-12 17:19:59 +03:00
interop native/interop: use oracle request signers for oracle response witness 2021-11-16 11:51:15 +03:00
mempool mempool: reword ErrConflict message, fix #2197 2021-09-28 09:57:42 +03:00
mempoolevent core: move mempool.Event to a separate package 2021-06-01 12:24:28 +03:00
mpt core: handle empty MPT batch properly 2021-10-27 18:44:39 +03:00
native *: use NEP-XX naming consistently in docs/comments 2021-11-19 12:58:46 +03:00
state *: use NEP-XX naming consistently in docs/comments 2021-11-19 12:58:46 +03:00
stateroot rpc: refactor calculatenetworkfee handler 2021-10-25 19:07:25 +03:00
statesync rpc: implement findstates RPC handler 2021-10-13 11:41:05 +03:00
storage core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
test_data core/block: add Nonce field to header 2021-07-15 15:58:49 +03:00
transaction transaction: add new Rules witness scope 2021-11-12 15:29:28 +03:00
bench_test.go rpc: refactor calculatenetworkfee handler 2021-10-25 19:07:25 +03:00
blockchain.go core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
blockchain_test.go core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
doc.go core: add Blockchain event subscription mechanism 2020-05-25 00:27:39 +03:00
helper_test.go *: use NEP-XX naming consistently in docs/comments 2021-11-19 12:58:46 +03:00
interop_system.go core: add finalizer functions to interop context 2021-10-21 10:05:12 +03:00
interop_system_test.go native/interop: use oracle request signers for oracle response witness 2021-11-16 11:51:15 +03:00
interops.go interop: implement System.Runtime.GetRandom 2021-07-15 16:00:01 +03:00
interops_test.go core: remove conflicting transactions wrt MaxTraceableBlocks 2021-08-18 13:31:47 +03:00
native_contract_test.go core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
native_designate_test.go core/test: get rid of empty tx scripts 2021-07-15 15:58:49 +03:00
native_gas_test.go core: store NEP-11 transfers, add accessor functions 2021-11-18 00:09:10 +03:00
native_ledger_test.go core/block: add Nonce field to header 2021-07-15 15:58:49 +03:00
native_management_test.go core: maintain a set of NEP17-compliant contracts 2021-07-28 13:22:53 +03:00
native_neo_test.go core: move NNS test out of core 2021-11-11 11:15:15 +03:00
native_notary_test.go config: make MaxValidUntilBlockIncrement configurable 2021-05-17 13:43:03 +03:00
native_oracle_test.go native/interop: use oracle request signers for oracle response witness 2021-11-16 11:51:15 +03:00
native_policy_test.go core: add and use synchronous persist to avoid OOM 2021-11-22 10:41:40 +03:00
notary_test.go core: fix data race in notary test 2021-11-15 17:33:02 +03:00
oracle_test.go *: simplify some error messages 2021-07-23 10:08:09 +03:00
prometheus.go stateroot: move state-root related logic to core/stateroot 2021-03-09 13:48:29 +03:00
stateroot_test.go *: make tests use TempDir(), fix #1319 2021-08-26 17:29:40 +03:00
statesync_test.go core: check MPT node is not requested twice by StateSync module 2021-10-12 14:08:56 +03:00
util.go core/block: add Nonce field to header 2021-07-15 15:58:49 +03:00
util_test.go core/block: add Nonce field to header 2021-07-15 15:58:49 +03:00