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

Dave Marion commented on ACCUMULO-1292:
---------------------------------------

I was trying to remove the synchronization on the getClassLoader method due to 
the lazy refresh of the classloader. This is the cause of the hang in the 
tablet server.

The FileListener api methods are called by the FileMonitor object in a 
different thread. I think in the current version of VFS the FileListener 
methods are called serially. I am not 100% sure about that and it may not be 
true in future versions.

The intention of my patch, if it is flawed currently, is to refresh in a 
separate thread when a modification occurs. If another modification occurs 
while that thread is running, then queue another refresh. If more modifications 
occur, then do nothing. The thought being that the currently executing thread 
may miss a change that happens, but the thread that is queued and has not 
started will not miss it. So, at most, we will have one thread performing a 
refresh and another thread queued up. If for some reason there is an error in 
the refresh thread, then the next call to getClassLoader will force a refresh 
in yet another thread (or maybe we do it in the current thread to catch the 
reason why the background threads were failing).

The fact that we have multiple readers and one writer seemed to fit the 
ReentrantReadWriteLock well. Maybe I didn't apply it in all cases and should be 
easy to fix. Now thinking about it, I do think I can tighten up the time in 
which the write lock is held in the refresh thread.

> Tablet constructor can hang on vfs classloader, preventing tablets from 
> loading
> -------------------------------------------------------------------------------
>
>                 Key: ACCUMULO-1292
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1292
>             Project: Accumulo
>          Issue Type: Bug
>          Components: tserver
>    Affects Versions: 1.5.0, 1.6.0, 1.6.1
>            Reporter: John Vines
>            Assignee: Eric Newton
>             Fix For: 1.7.0, 1.6.3
>
>         Attachments: ACCUMULO-1292-using-locks.patch, ACCUMULO-1292.patch
>
>
> Taken from TODO from r1424106 regarding ACCUMULO-867. This is something that 
> we should at least look into more before 1.5 is released.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to