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