forked from bytemaster/chainbase
-
Notifications
You must be signed in to change notification settings - Fork 76
Open
Description
I'm using chainbase in Chronicle project in concurrent mode: one process opens the database in read-write mode and is constantly updating it as state history data arrives. Then, multiple read-only processes read from the same shared memory.
I define CHAINBASE_CHECK_LOCKING globally.
I get the following error when read-only client opens the database and defines the indexes:
May 25 01:05:46 sthist chronicle-receiver[5523]: warn 2019-05-25T01:05:46.141 chronicle receiver_plugin.cpp:1201 plugin_initialize ] 13 N5boost16exception_detail10clone_implINS0_19error_info_injectorISt11logic_errorEEEE: existing index for chronicle::received_block_object has an undo stack (revision range [-1, 23598015]) that is inconsistent with other indices in the database (revision range [23597735, 23597736]); corrupted database?
May 25 01:05:46 sthist chronicle-receiver[5523]: rethrow existing index for chronicle::received_block_object has an undo stack (revision range [-1, 23598015]) that is inconsistent with other indices in the database (revision range [23597735, 23597736]); corrupted database?:
May 25 01:05:46 sthist chronicle-receiver[5523]: {"what":"existing index for chronicle::received_block_object has an undo stack (revision range [-1, 23598015]) that is inconsistent with other indices in the database (revision range [23597735, 23597736]); corrupted database?"}
May 25 01:05:46 sthist chronicle-receiver[5523]: chronicle-recei receiver_plugin.cpp:1201 plugin_initialize
so, there should be a global lock wrapping around add_index(). For now I will wrap the locks around calling add_index in my program, but I think it makes sense to protect it inside chainbase.
Metadata
Metadata
Assignees
Labels
No labels