accumulo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wjsl <...@git.apache.org>
Subject [GitHub] accumulo pull request: ACCUMULO-4229 BatchWriter Locator cache out...
Date Sun, 24 Apr 2016 15:55:14 GMT
Github user wjsl commented on a diff in the pull request:

    https://github.com/apache/accumulo/pull/96#discussion_r60846778
  
    --- Diff: core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
---
    @@ -329,6 +331,8 @@ private void processFailures(Map<KeyExtent,List<Range>>
failures, ResultReceiver
     
         // since the first call to binRanges clipped the ranges to within a tablet, we should
not get only
         // bin to the set of failed tablets
    +    if (!locator.isValid())
    +      locator = new TimeoutTabletLocator(TabletLocator.getLocator(instance, new Text(table)),
timeout);
    --- End diff --
    
    Since TabletServerBatchReaderIterator#lookup is synchronized, the reassignment is thread-safe
for other accesses that respect the instance's lock. This reassignment, in processFailures,
only ever occurs though a branch from a QueryTask, which doesn't do the reassignment in a
synchronized block (it does use a semaphore inside of the QueryTask, but that's separate from
the TSBI instance lock). 
    
    So, where I'm going with this: is it safe to do these re-assignments outside of a synchronized
block? It's implied to me that these updates can happen in different threads, since the QueryTasks
are executed via an ExecutorService.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message