Skip to content

Commit 0ba3afe

Browse files
authored
Add deprecation warning for negative index.unassigned.node_left.delayed_timeout (#26832)
This was deprecated because it becomes forbidden in 7.x as per #26828.
1 parent b4f5e24 commit 0ba3afe

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

core/src/main/java/org/elasticsearch/cluster/routing/UnassignedInfo.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.elasticsearch.common.io.stream.Writeable;
3131
import org.elasticsearch.common.joda.FormatDateTimeFormatter;
3232
import org.elasticsearch.common.joda.Joda;
33+
import org.elasticsearch.common.logging.DeprecationLogger;
34+
import org.elasticsearch.common.logging.Loggers;
3335
import org.elasticsearch.common.settings.Setting;
3436
import org.elasticsearch.common.settings.Setting.Property;
3537
import org.elasticsearch.common.settings.Settings;
@@ -47,11 +49,21 @@
4749
*/
4850
public final class UnassignedInfo implements ToXContentFragment, Writeable {
4951

52+
private static final DeprecationLogger DEPRECATION_LOGGER = new DeprecationLogger(Loggers.getLogger(UnassignedInfo.class));
53+
5054
public static final FormatDateTimeFormatter DATE_TIME_FORMATTER = Joda.forPattern("dateOptionalTime");
5155

5256
public static final Setting<TimeValue> INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING =
53-
Setting.timeSetting("index.unassigned.node_left.delayed_timeout", TimeValue.timeValueMinutes(1), Property.Dynamic,
54-
Property.IndexScope);
57+
new Setting<>("index.unassigned.node_left.delayed_timeout", (s) -> TimeValue.timeValueMinutes(1).getStringRep(), (s) -> {
58+
TimeValue parsedValue = TimeValue.parseTimeValue(s, "index.unassigned.node_left.delayed_timeout");
59+
if (parsedValue.getNanos() < 0) {
60+
DEPRECATION_LOGGER.deprecated(
61+
"Negative values for index.unassigned.node_left.delayed_timeout [{}]" +
62+
" are deprecated and should now be set to \"0\".", s);
63+
}
64+
return parsedValue;
65+
}, Property.Dynamic, Property.IndexScope);
66+
5567
/**
5668
* Reason why the shard is in unassigned state.
5769
* <p>

core/src/test/java/org/elasticsearch/cluster/routing/UnassignedInfoTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,4 +356,11 @@ public void testAllocationStatusSerialization() throws IOException {
356356
assertThat(readStatus, equalTo(allocationStatus));
357357
}
358358
}
359+
360+
public void testNegativeTimeoutDeprecated() {
361+
Settings settings = settings(Version.CURRENT).put(UnassignedInfo.INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING.getKey(), "-1s").build();
362+
assertThat(UnassignedInfo.INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING.get(settings).seconds(), equalTo(-1L));
363+
assertWarnings("Negative values for index.unassigned.node_left.delayed_timeout [-1s]" +
364+
" are deprecated and should now be set to \"0\".");
365+
}
359366
}

0 commit comments

Comments
 (0)