diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java index e6154e1392e..b69d65bb435 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java @@ -115,17 +115,19 @@ public void run() { KeyExtent fixedExtent = ManagerMetadataUtil.fixSplit(server.getContext(), tabletMetadata, server.getLock()); - synchronized (server.openingTablets) { - server.openingTablets.remove(extent); - server.openingTablets.notifyAll(); - // it expected that the new extent will overlap the old one... if it does not, it - // should not be added to unopenedTablets - if (!KeyExtent.findOverlapping(extent, new TreeSet<>(Arrays.asList(fixedExtent))) - .contains(fixedExtent)) { - throw new IllegalStateException( - "Fixed split does not overlap " + extent + " " + fixedExtent); + synchronized (server.unopenedTablets) { + synchronized (server.openingTablets) { + server.openingTablets.remove(extent); + server.openingTablets.notifyAll(); + // it expected that the new extent will overlap the old one... if it does not, it + // should not be added to unopenedTablets + if (!KeyExtent.findOverlapping(extent, new TreeSet<>(Arrays.asList(fixedExtent))) + .contains(fixedExtent)) { + throw new IllegalStateException( + "Fixed split does not overlap " + extent + " " + fixedExtent); + } + server.unopenedTablets.add(fixedExtent); } - server.unopenedTablets.add(fixedExtent); } // split was rolled back... try again new AssignmentHandler(server, fixedExtent).run();