Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Currently when LogFlusher thread flushes a full log tail buffer, it calls PrimaryIndexOpeartionTracker.completeOperation. If the completeOperation call results in generating a FLUSH log type and the LogManager has no empty log buffers available to log it, a deadlock happens.
To reproduce the deadlock with high probabilty, set the number of log pages in the asterix configuration to 1 and a small size, then load some data to the system.
The proposed solution is to have a different thread responsible for logging FLUSH logs. This way logging FLUSH logs will have to wait until an empty log buffer becomes available to the LogManager on a different thread than the LogFlusher.