问题跟进中,等测试结束,会删除此提示
当在config.ini中开启 filter-on = *
并且激活 history_plugin
插件时,运行一段时间后会出现以下错误
terminate called after throwing an instance of 'boost::interprocess::bad_alloc'
what(): boost::interprocess::bad_alloc
或者
2018-08-09T07:21:22.037 thread-0 producer_plugin.cpp:331 on_incoming_block ] Received block adaceec950230d1e... #10209388 @ 2018-08-09T07:19:23.500 signed by helloeoscnbp [trxs: 254, lib: 10209272, conf: 0, latency: 118537 ms]
terminate called after throwing an instance of 'std::bad_alloc'
terminate called recursively
what(): std::bad_alloc
原因是由于filter-on = *
,共享内存映射文件已满。(github)
解决方案是
- 增加
chain-state-db-size-mb
来提高 shared_memory_size
,确保您的硬件与您设置的较高值兼容。
还有种错误如下
1733735ms thread-0 controller.cpp:625 push_scheduled_trans ] 3050003 eosio_assert_message_exception: eosio_assert_message assertion failure
assertion failure with message: refund request not found
{"s":"refund request not found"}
thread-0 wasm_interface.cpp:930 eosio_assert
pending console output:
{"console":""}
thread-0 apply_context.cpp:61 exec_one
1766924ms thread-0 controller.cpp:153 emit ] bad alloc
解决方案
- 同步似乎已超过可逆块日志的默认大小,即340 MB。通过添加reversible-blocks-db-size-mb = 500 MB(或任何更大的数字)来增加其大小config.ini。(github)
注意
您将需要重新同步所有块,因为错误的alloc通常会导致数据库损坏。
如果config.ini开启 filter-on = *
,那么它实际上需要无限量。如果您正在连接到主网并且没有使用任何额外的插件,那么64 GB今天可以使用,但不会长期工作。