[ 
https://issues.apache.org/jira/browse/BOOKKEEPER-700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13808901#comment-13808901
 ] 

Rakesh R commented on BOOKKEEPER-700:
-------------------------------------

Here to fix this, I just made simple size check. Could you please review the 
changes. Thanks.

While seeing this issue, I just noticed one case. If a thread is a critical 
thread(for ex: GarbageCollectorThread) and assume any unexpected exceptions 
occured, it may exit without any logs and makes debugging difficult.

*Proposal:*
If we have ThreadGroup exception handler to all the threads and will define 
setUncaughtExceptionHandler to caught all exceptions thrown by Thread run 
methods.
IMHO, one way to address this would be to create a common 'BookieThread' that 
all the threads must extend and every thread can define following properties:
# threadName, 
# isUnhandledExceptionFatal - if yes log as fatal error and call 
System.exit(errcode), otw just log with priority level error and continue 
running server.

Shall I raise a separate JIRA for this thought and work for the same. Whats 
your opinion?

> GarbageCollectorThread exsiting with ArrayIndexOutOfBoundsException
> -------------------------------------------------------------------
>
>                 Key: BOOKKEEPER-700
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-700
>             Project: Bookkeeper
>          Issue Type: Bug
>          Components: bookkeeper-server
>            Reporter: Rakesh R
>            Assignee: Rakesh R
>             Fix For: 4.3.0
>
>         Attachments: 0001-BOOKKEEPER-700.patch
>
>
> After completing compaction, GarbageCollectorThread will do flush any 
> outstanding offsets. When there is no offset present, its throwing following 
> exception and exiting.
> {code}
> 2013-10-30 11:37:20,944 - ERROR - 
> [GarbageCollectorThread:NIOServerCnxnFactory$1@49] - Thread 
> Thread[GarbageCollectorThread,5,main] died
> java.lang.ArrayIndexOutOfBoundsException: -1
>       at java.util.ArrayList.get(ArrayList.java:324)
>       at 
> org.apache.bookkeeper.bookie.GarbageCollectorThread$CompactionScannerFactory.waitEntrylogFlushed(GarbageCollectorThread.java:151)
>       at 
> org.apache.bookkeeper.bookie.GarbageCollectorThread$CompactionScannerFactory.flush(GarbageCollectorThread.java:175)
>       at 
> org.apache.bookkeeper.bookie.GarbageCollectorThread.doCompactEntryLogs(GarbageCollectorThread.java:400)
>       at 
> org.apache.bookkeeper.bookie.GarbageCollectorThread.run(GarbageCollectorThread.java:309)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to