Skip to content

Commit ee101b4

Browse files
authored
Ack node shutdown requests after cluster state update is complete (#85846)
The adding or removing a node to the node shutdown api stores submits a cluster state update task to store the node metadata to be shutdown. Sometimes a reroute is required, and in those cases we currently wait for the reroute to complete before acknowledging the original request. This commit changes the behavior to acknowledge success after the cluster state update is complete. A warning is still logged if the reroute fails. relates #84847
1 parent d9b27cf commit ee101b4

File tree

2 files changed

+15
-27
lines changed

2 files changed

+15
-27
lines changed

x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportDeleteShutdownNodeAction.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,22 +93,16 @@ public void onFailure(Exception e) {
9393
@Override
9494
public void clusterStateProcessed(ClusterState oldState, ClusterState newState) {
9595
clusterService.getRerouteService()
96-
.reroute("node registered for removal from cluster", Priority.URGENT, new ActionListener<ClusterState>() {
96+
.reroute("node registered for removal from cluster", Priority.URGENT, new ActionListener<>() {
9797
@Override
98-
public void onResponse(ClusterState clusterState) {
99-
logger.trace("started reroute after deleting node [{}}] shutdown", request.getNodeId());
100-
listener.onResponse(AcknowledgedResponse.TRUE);
101-
}
98+
public void onResponse(ClusterState clusterState) {}
10299

103100
@Override
104101
public void onFailure(Exception e) {
105-
logger.warn(
106-
new ParameterizedMessage("failed to start reroute after deleting node [{}] shutdown", request.getNodeId()),
107-
e
108-
);
109-
listener.onFailure(e);
102+
logger.warn(() -> "failed to reroute after deleting node [" + request.getNodeId() + "] shutdown", e);
110103
}
111104
});
105+
listener.onResponse(AcknowledgedResponse.TRUE);
112106
}
113107
}, newExecutor());
114108
}

x-pack/plugin/shutdown/src/main/java/org/elasticsearch/xpack/shutdown/TransportPutShutdownNodeAction.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -102,38 +102,32 @@ public void onFailure(Exception e) {
102102

103103
@Override
104104
public void clusterStateProcessed(ClusterState oldState, ClusterState newState) {
105-
if (SingleNodeShutdownMetadata.Type.REMOVE.equals(request.getType())
106-
|| SingleNodeShutdownMetadata.Type.REPLACE.equals(request.getType())) {
105+
boolean shouldReroute = switch (request.getType()) {
106+
case REMOVE, REPLACE -> true;
107+
default -> false;
108+
};
109+
110+
if (shouldReroute) {
107111
clusterService.getRerouteService()
108-
.reroute("node registered for removal from cluster", Priority.URGENT, new ActionListener<ClusterState>() {
112+
.reroute("node registered for removal from cluster", Priority.URGENT, new ActionListener<>() {
109113
@Override
110-
public void onResponse(ClusterState clusterState) {
111-
logger.trace("started reroute after registering node [{}] for removal", request.getNodeId());
112-
listener.onResponse(AcknowledgedResponse.TRUE);
113-
}
114+
public void onResponse(ClusterState clusterState) {}
114115

115116
@Override
116117
public void onFailure(Exception e) {
117-
logger.warn(
118-
new ParameterizedMessage(
119-
"failed to start reroute after registering node [{}] for removal",
120-
request.getNodeId()
121-
),
122-
e
123-
);
124-
listener.onFailure(e);
118+
logger.warn(() -> "failed to reroute after registering node [" + request.getNodeId() + "] for shutdown", e);
125119
}
126120
});
127121
} else {
128122
logger.trace(
129-
"not starting reroute after registering node ["
123+
() -> "not starting reroute after registering node ["
130124
+ request.getNodeId()
131125
+ "] for shutdown of type ["
132126
+ request.getType()
133127
+ "]"
134128
);
135-
listener.onResponse(AcknowledgedResponse.TRUE);
136129
}
130+
listener.onResponse(AcknowledgedResponse.TRUE);
137131
}
138132
}, newExecutor());
139133
}

0 commit comments

Comments
 (0)