Skip to content

Commit 5897ae9

Browse files
CR: fix negative timeval bug
1 parent e38b51d commit 5897ae9

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

server/src/main/java/org/elasticsearch/action/admin/cluster/configuration/TransportClearVotingConfigExclusionsAction.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.elasticsearch.cluster.coordination.CoordinationMetadata.VotingConfigExclusion;
3636
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
3737
import org.elasticsearch.cluster.metadata.Metadata;
38+
import org.elasticsearch.cluster.metadata.ProcessClusterEventTimeoutException;
3839
import org.elasticsearch.cluster.service.ClusterService;
3940
import org.elasticsearch.common.Priority;
4041
import org.elasticsearch.common.inject.Inject;
@@ -105,8 +106,13 @@ public void onTimeout(TimeValue timeout) {
105106

106107
private void submitClearVotingConfigExclusionsTask(ClearVotingConfigExclusionsRequest request, long startTimeMillis,
107108
ActionListener<ClearVotingConfigExclusionsResponse> listener) {
108-
clusterService.submitStateUpdateTask("clear-voting-config-exclusions", new ClusterStateUpdateTask(Priority.URGENT,
109-
TimeValue.timeValueMillis(request.getTimeout().millis() + startTimeMillis - threadPool.relativeTimeInMillis())) {
109+
final long timeout = request.getTimeout().millis() + startTimeMillis - threadPool.relativeTimeInMillis();
110+
final String source = "clear-voting-config-exclusions";
111+
if (timeout <= 0) {
112+
listener.onFailure(new ProcessClusterEventTimeoutException(request.getTimeout(), source));
113+
return;
114+
}
115+
clusterService.submitStateUpdateTask(source, new ClusterStateUpdateTask(Priority.URGENT, TimeValue.timeValueMillis(timeout)) {
110116
@Override
111117
public ClusterState execute(ClusterState currentState) {
112118
final CoordinationMetadata newCoordinationMetadata =

0 commit comments

Comments
 (0)