ctubbsii commented on a change in pull request #1653:
URL: https://github.com/apache/accumulo/pull/1653#discussion_r486558996



##########
File path: core/src/main/java/org/apache/accumulo/core/util/HostAndPort.java
##########
@@ -171,6 +171,10 @@ public static HostAndPort fromString(String 
hostPortString) {
       // JDK7 accepts leading plus signs. We don't want to.
       checkArgument(!portString.startsWith("+"), "Unparseable port number: 
%s", hostPortString);
       try {
+        if (portString.contains("[")) {
+          int endIndex = portString.indexOf("[");
+          portString = portString.substring(0, endIndex);
+        }

Review comment:
       This could use a small comment above it to explain what situation it is 
checking for.

##########
File path: 
server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
##########
@@ -197,13 +181,6 @@ public static void replaceDatafiles(ServerContext context, 
KeyExtent extent,
     if (compactionId != null)
       tablet.putCompactionId(compactionId);
 
-    TServerInstance self = getTServerInstance(address, zooLock);
-    tablet.putLocation(self, LocationType.LAST);
-
-    // remove the old location
-    if (lastLocation != null && !lastLocation.equals(self))
-      tablet.deleteLocation(lastLocation, LocationType.LAST);
-

Review comment:
       Why is it the case that these location entries no longer need to be 
updated here? Where is the replacement code?

##########
File path: 
server/manager/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
##########
@@ -871,7 +870,9 @@ private void 
flushChanges(SortedMap<TServerInstance,TabletServerStatus> currentT
 
     if (!assignments.isEmpty()) {
       Master.log.info(String.format("Assigning %d tablets", 
assignments.size()));
-      store.setFutureLocations(assignments);
+
+      for (Assignment assignment : assignments)
+        store.setFutureLocation(assignment);

Review comment:
       It seems like this code would be less efficient, because it creates a 
new batch writer for each assignment, and that the method that handles the 
updates in Ample should deal with updating all of the assignments in one pass. 
What do you know about the performance implications of this change?

##########
File path: 
server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
##########
@@ -227,14 +204,6 @@ public static StoredTabletFile 
updateTabletDataFile(ServerContext context, KeyEx
       tablet.putFile(path, dfv);
       tablet.putTime(time);
       newFile = path.insert();
-
-      TServerInstance self = getTServerInstance(address, zooLock);
-      tablet.putLocation(self, LocationType.LAST);
-
-      // remove the old location
-      if (lastLocation != null && !lastLocation.equals(self)) {
-        tablet.deleteLocation(lastLocation, LocationType.LAST);
-      }

Review comment:
       Why is it the case that these location entries no longer need to be 
updated here? Where is the replacement code?

##########
File path: 
server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
##########
@@ -177,7 +177,7 @@ public void run() {
         throw new RuntimeException("Minor compaction after recovery fails for 
" + extent);
       }
       Assignment assignment = new Assignment(extent, 
server.getTabletSession());
-      TabletStateStore.setLocation(server.getContext(), assignment);
+      TabletStateStore.setLocation(server.getContext(), assignment, 
assignment.server);

Review comment:
       Is `assignment.server` really the previously assigned location to clear? 
This doesn't seem right because MetaDataStateStore.setLocation just compares 
this `prevLastLoc` (passed in here as `assignment.server` against 
`assignment.server`. It seems like it would never be different, and the last 
location entries would remain (and possibly keep accruing?)

##########
File path: 
server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java
##########
@@ -58,137 +54,86 @@ protected MetaDataStateStore(ClientContext context, 
CurrentState state, String t
     return new MetaDataTableScanner(context, TabletsSection.getRange(), state, 
targetTableName);
   }
 
-  @Override
-  public void setLocations(Collection<Assignment> assignments) throws 
DistributedStoreException {
-    BatchWriter writer = createBatchWriter();
-    try {
-      for (Assignment assignment : assignments) {
-        Mutation m = new Mutation(assignment.tablet.toMetaRow());
-        assignment.server.putLocation(m);
-        assignment.server.putLastLocation(m);
-        assignment.server.clearFutureLocation(m);
-        SuspendingTServer.clearSuspension(m);
-        writer.addMutation(m);
-      }
-    } catch (Exception ex) {
-      throw new DistributedStoreException(ex);
-    } finally {
-      try {
-        writer.close();
-      } catch (MutationsRejectedException e) {
-        throw new DistributedStoreException(e);
-      }

Review comment:
       I'm not sure these catch clauses should be removed, and that 
DistributedStoreException should be deleted. While the conversion to Ample does 
eliminate the checked exception of MutationsRejectedException, by wrapping it 
(and all other exceptions) with a RuntimeException, the RuntimeException was 
previously being handled here, and now it falls through.

##########
File path: 
server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
##########
@@ -444,7 +442,7 @@ StoredTabletFile 
bringMajorCompactionOnline(Set<StoredTabletFile> oldDatafiles,
 
       tablet.computeNumEntries();
 
-      lastLocation = tablet.resetLastLocation();
+      tablet.resetLastLocation();

Review comment:
       This seems likely where the actual lastLocation information is lost.

##########
File path: 
server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
##########
@@ -123,8 +122,6 @@ public void run() {
         TabletStateStore.suspend(server.getContext(), tls, null,
             requestTimeSkew + MILLISECONDS.convert(System.nanoTime(), 
NANOSECONDS));
       }
-    } catch (DistributedStoreException ex) {
-      log.warn("Unable to update storage", ex);

Review comment:
       After your changes, this catch clause has no effect (since it was 
removed), and the RuntimeExceptions now thrown will continue falling through 
this, completely unhandled.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to