You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have a bookie node which having run a period of time, and it runs with entryLogPerLedgerEnabled is false as default, Recently we change this property to true, unfortunately the program occurs exception as below
Steps to reproduce the behavior:
Startup a new bookie node, and the related properties as below:
ledgerStorageClass=org.apache.bookkeeper.bookie.SortedLedgerStorage
entryLogPerLedgerEnabled=false
Running this bookie after some time, change entryLogPerLedgerEnabled is true, reboot the bookie node.
The program throw IllegalReferenceCountException
System.exit(5)
Expected behavior
The bookie support switch entrylogPerLedgerEnabled normally.
Additional context
We review the code and find the Entrylogger#flush method will be triggered when GarbageCollectorThread doing compact entrylogs, which will make race condition with syncthread#checkpoint at flushRotatedLogs point, However, the flushRotatedLogs method in EntryLogManagerForEntryLogPerLedger is not protected by synchonzied,hence BufferedLogChannel#close throw IllegalReferenceCountException since a concurrency scenario.
Bookkeeper version : 4.15.0
The text was updated successfully, but these errors were encountered:
BUG REPORT
We have a bookie node which having run a period of time, and it runs with entryLogPerLedgerEnabled is false as default, Recently we change this property to true, unfortunately the program occurs exception as below
Steps to reproduce the behavior:
ledgerStorageClass=org.apache.bookkeeper.bookie.SortedLedgerStorage
entryLogPerLedgerEnabled=false
Expected behavior
The bookie support switch entrylogPerLedgerEnabled normally.
Additional context
We review the code and find the Entrylogger#flush method will be triggered when GarbageCollectorThread doing compact entrylogs, which will make race condition with syncthread#checkpoint at flushRotatedLogs point, However, the flushRotatedLogs method in EntryLogManagerForEntryLogPerLedger is not protected by synchonzied,hence BufferedLogChannel#close throw IllegalReferenceCountException since a concurrency scenario.
Bookkeeper version : 4.15.0
The text was updated successfully, but these errors were encountered: