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));
}