hived complains if new config has subset of plugins from old config
Similar to #654 and related to !1204 (merged)
I've found another use case that produces false positive (I'm not sure if it's already fixed or not, so just reporting it here)
When I distribute general purpose snapshot, that can be used as an exchange node (because it already has few tracked accounts with account history plugin, and other useful plugins such as account_by_key or transaction status) the idea is that on the receiving side, a node operator can chose to ignore some unneeded plugins, but still being able to use the very same snapshot for a simple seed node. Extraneous data there shouldn't be a problem, and yet hived complains about it.
See the config for which snapshot is generated:
https://gtg.openhive.network/get/snapshot/exchange/example-exchange-config.ini
Problem is that when I chose to comment out plugins such as account_history_rocksdb (i.e. those that are in the snapshot but I chose not to have them enabled when loading, hived fails with:
2024-05-03T14:46:18.322989 state_snapshot_plugin.cpp:1547 load_snapshot ] 4130100 snapshot_state_definitions_mismatch_exception: State objects definitions from snapshot mismatch current version of app.
Details:
Amount of decoded types differs from amount of loaded decoded types. Current amount of decoded types: 182, loaded amount of decoded types: 191
Type is in loaded decoded types map but not in current decoded types map: boost::container::vector<char, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >, void>
Type is in loaded decoded types map but not in current decoded types map: boost::container::vector<hive::protocol::fixed_string_impl<fc::erpair<unsigned long, unsigned long> >, boost::interprocess::allocator<hive::protocol::fixed_string_impl<fc::erpair<unsigned long, unsigned long> >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >, void>
Type is in loaded decoded types map but not in current decoded types map: boost::interprocess::allocator<hive::protocol::fixed_string_impl<fc::erpair<unsigned long, unsigned long> >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >