[
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)