You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2023/06/09 23:29:30 UTC

[accumulo] branch main updated: Fix to stop assignments to shutting down servers (#3479)

This is an automated email from the ASF dual-hosted git repository.

ctubbsii pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new c27ba41443 Fix to stop assignments to shutting down servers (#3479)
c27ba41443 is described below

commit c27ba41443725a95ad3c95f78a66cd9a0c470563
Author: dtspence <33...@users.noreply.github.com>
AuthorDate: Fri Jun 9 19:29:25 2023 -0400

    Fix to stop assignments to shutting down servers (#3479)
    
    * Updates the TabletGroupWatcher to remove the servers
      being shutdown from being used for assignment. The change
      restores previous logic that was broken by #1761
    * Removes a warning message that was being logged when the
      shutdown was occurring, due to the tablet being assigned
      to a different tablet server.
    
    This fixes #3368
    
    Co-authored-by: Dave Marion <dl...@apache.org>
---
 .../apache/accumulo/manager/TabletGroupWatcher.java | 21 ++++-----------------
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
index 14df89e76b..807387d87e 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java
@@ -149,16 +149,13 @@ abstract class TabletGroupWatcher extends AccumuloDaemonThread {
     private final List<TabletLocationState> suspendedToGoneServers = new ArrayList<>();
     private final Map<KeyExtent,UnassignedTablet> unassigned = new HashMap<>();
     private final Map<TServerInstance,List<Path>> logsForDeadServers = new TreeMap<>();
-    // read only lists of tablet servers
-    private final SortedMap<TServerInstance,TabletServerStatus> currentTServers;
+    // read only list of tablet servers that are not shutting down
     private final SortedMap<TServerInstance,TabletServerStatus> destinations;
 
     public TabletLists(Manager m, SortedMap<TServerInstance,TabletServerStatus> curTServers) {
       var destinationsMod = new TreeMap<>(curTServers);
-      // Don't move tablets to servers that are shutting down
       destinationsMod.keySet().removeAll(m.serversToShutdown);
       this.destinations = Collections.unmodifiableSortedMap(destinationsMod);
-      this.currentTServers = Collections.unmodifiableSortedMap(curTServers);
     }
 
     public void reset() {
@@ -905,13 +902,13 @@ abstract class TabletGroupWatcher extends AccumuloDaemonThread {
 
   private void getAssignmentsFromBalancer(TabletLists tLists,
       Map<KeyExtent,UnassignedTablet> unassigned) {
-    if (!tLists.currentTServers.isEmpty()) {
+    if (!tLists.destinations.isEmpty()) {
       Map<KeyExtent,TServerInstance> assignedOut = new HashMap<>();
-      manager.getAssignments(tLists.currentTServers, unassigned, assignedOut);
+      manager.getAssignments(tLists.destinations, unassigned, assignedOut);
       for (Entry<KeyExtent,TServerInstance> assignment : assignedOut.entrySet()) {
         if (unassigned.containsKey(assignment.getKey())) {
           if (assignment.getValue() != null) {
-            if (!tLists.currentTServers.containsKey(assignment.getValue())) {
+            if (!tLists.destinations.containsKey(assignment.getValue())) {
               Manager.log.warn(
                   "balancer assigned {} to a tablet server that is not current {} ignoring",
                   assignment.getKey(), assignment.getValue());
@@ -919,16 +916,6 @@ abstract class TabletGroupWatcher extends AccumuloDaemonThread {
             }
 
             final UnassignedTablet unassignedTablet = unassigned.get(assignment.getKey());
-            final TServerInstance serverInstance =
-                unassignedTablet != null ? unassignedTablet.getServerInstance() : null;
-            if (serverInstance != null
-                && !assignment.getValue().getHostPort().equals(serverInstance.getHostPort())) {
-              Manager.log.warn(
-                  "balancer assigned {} to {} which is not the suggested location of {}",
-                  assignment.getKey(), assignment.getValue().getHostPort(),
-                  serverInstance.getHostPort());
-            }
-
             tLists.assignments.add(new Assignment(assignment.getKey(), assignment.getValue(),
                 unassignedTablet != null ? unassignedTablet.getLastLocation() : null));
           }