accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Marion (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-1292) Tablet constructor can hang on vfs classloader, preventing tablets from loading
Date Thu, 22 Jan 2015 03:12:35 GMT


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:
>             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

View raw message