mirror of https://github.com/qortal/qortal
Browse Source
Symptoms are: * db/blockchain.log is pretty much exactly 50MB - the checkpoint-triggering size. * Loads of threads are stuck waiting for HSQLDB's CountUpDownLatch$Sync.await() * Synchronizer, or some other thread, possibly orphaning blocks. The cause seems to be method A, which has a repository session, calls EventBus.INSTANCE.notify() and one of the event listeners then obtains their own repository session to do repository 'work'. In the meantime, the HSQLDB log has reached 50MB, triggering auto-checkpoint. HSQLDB attempts to CHECKPOINT, but waits for existing transactions to complete, and also blocks starting new transactions. Thus, one of the event listeners is blocked when they try to obtain a new repository session, but HSQLDB never performs CHECKPOINT because the event notifier (method A) still has an unfinished transaction - hence deadlock.split-DB
catbref
4 years ago
5 changed files with 26 additions and 1 deletions
Loading…
Reference in new issue