shared_memory.bin file is not removed while replay or force-replay
Steps to reproduce:
stop node in old version
use new version of binary that requires replay
use --replay --force-replay
get errors:
chain_plugin.cpp:733 plugin_startup ] Database opening...
chain_plugin.cpp:504 open ] Opening shared memory from /run/hive
Compiler and build environment read from persistent storage: `{"compiler":"7.5.0", "debug":0, "apple":0, "windows":0, "version" : { "hive_blockchain_hard_fork" : "1.24.0", "hive_git_revision" : "4bb55d5181e29e9dc4ace145a475159aa7dcf349" }, "plugins" : ["account_by_key", "account_by_key_api", "account_history_api", "account_history_rocksdb", "block_api", "chain", "condenser_api", "database_api", "json_rpc", "market_history", "market_history_api", "network_broadcast_api", "p2p", "rc", "rc_api", "reputation", "reputation_api", "transaction_status", "transaction_status_api", "webserver", "witness"]}'
database.cpp:160 operator() ] Persistent storage was created according to the version: "version" : { "hive_blockchain_hard_fork" : "1.24.0", "hive_git_revision" : "4bb55d5181e29e9dc4ace145a475159aa7dcf349" } but current node has the version: "version" : { "hive_blockchain_hard_fork" : "1.24.2", "hive_git_revision" : "00b5ff5573dcaa1c54ed8ed9cfbde06dee269c7e" }
database.cpp:160 operator() ] Persistent storage was created using plugins: "plugins" : ["account_by_key", "account_by_key_api", "account_history_api", "account_history_rocksdb", "block_api", "chain", "condenser_api", "database_api", "json_rpc", "market_history", "market_history_api", "network_broadcast_api", "p2p", "rc", "rc_api", "reputation", "reputation_api", "transaction_status", "transaction_status_api", "webserver", "witness"] but current node has following plugins: "plugins" : ["account_by_key", "account_by_key_api", "account_history_api", "account_history_rocksdb", "block_api", "chain", "condenser_api", "database_api", "json_rpc", "market_history", "market_history_api", "network_broadcast_api", "p2p", "rc", "rc_api", "reputation", "reputation_api", "state_snapshot", "transaction_status", "transaction_status_api", "webserver", "witness"]
database.cpp:247 open ] 13 N5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE: content of memory does not match data expected by executable
rethrow content of memory does not match data expected by executable:
{"args.data_dir":"/optane/blockchain","args.shared_mem_dir":"/run/hive","args.shared_file_size":"25769803776","what":"content of memory does not match data expected by executable"}
database.cpp:247 open
database.cpp:247 open ] args.data_dir: /optane/blockchain args.shared_mem_dir: /run/hive args.shared_file_size: 25769803776
chain_plugin.cpp:513 open ] Error opening database. If the binary or configuration has changed, replay the blockchain explicitly using `--replay-blockchain`.
chain_plugin.cpp:514 open ] If you know what you are doing you can skip this check and force open the database using `--force-open`.
chain_plugin.cpp:515 open ] WARNING: THIS MAY CORRUPT YOUR DATABASE. FORCE OPEN AT YOUR OWN RISK.
chain_plugin.cpp:516 open ] Error: {"code":13,"name":"N5boost16exception_detail10clone_implINS0_19error_info_injectorISt13runtime_errorEEEE","message":"content of memory does not match data expected by executable","stack":[{"context":{"level":"warn","file":"database.cpp","line":247,"method":"open","hostname":"","timestamp":"2020-09-25T17:14:43"},"format":"rethrow ${what}: ","data":{"args.data_dir":"/optane/blockchain","args.shared_mem_dir":"/run/hive","args.shared_file_size":"25769803776","what":"content of memory does not match data expected by executable"}}]}
easy workaround is just to remove shared_memory.bin
from location defined by shared dir (which is by default data dir)