Thank you Charan, Can you create a JIRA? Do you already have a fix? Il ven 28 apr 2017, 00:27 Charan Reddy G <reddychara...@gmail.com> ha scritto:
> Hey, > > With Bookkeeper-833 Bug ( > > https://github.com/apache/bookkeeper/commit/da1a2fa6b19ddcdba68834147bf6afbe5bf90cbf > ), > entryLogId in EntryLogger is capped at Int.MAX, so preallocatedLogId rolls > over to 0 after reaching Int.MAX. In EntryLogger.flushRotatedLogs we set > "leastUnflushedLogId = flushedLogId + 1;", so it makes leastUnflushedLogId > also to roll over. But this affects the > GarbageCollectorThread.extractMetaFromEntryLogs logic. This method extracts > EntryLogMetadata from the newly rotated entrylogs, but when rollover > happens this logic seems to be broken > > in GarbageCollectorThread.java > > protected Map<Long, EntryLogMetadata> > extractMetaFromEntryLogs(Map<Long, EntryLogMetadata> entryLogMetaMap) { > // Extract it for every entry log except for the current one. > // Entry Log ID's are just a long value that starts at 0 and > increments > // by 1 when the log fills up and we roll to a new one. > long curLogId = entryLogger.getLeastUnflushedLogId(); > <------when rollover happens, this will start from 1 > boolean hasExceptionWhenScan = false; > for (long entryLogId = scannedLogId; entryLogId < curLogId; > entryLogId++) { <------- because of "entryLogId < curLogId" condition it > will skip the newly rotated logs > > Thanks, > Charan > -- -- Enrico Olivelli