Skip to content

Commit 432e343

Browse files
authored
Fast refresh indices to use search shards (elastic#117111)
Backport of PR elastic#116658. Changes of this PR are ineffective for stateful, and backport is not used in serverless. This is mostly to adopt the new transport version in stateful to keep them consecutive. Relates ES-9573
1 parent 02b21ad commit 432e343

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ static TransportVersion def(int id) {
201201
public static final TransportVersion QUERY_RULES_LIST_INCLUDES_TYPES = def(8_792_00_0);
202202
public static final TransportVersion INDEX_STATS_ADDITIONAL_FIELDS = def(8_793_00_0);
203203
public static final TransportVersion INDEX_STATS_ADDITIONAL_FIELDS_REVERT = def(8_794_00_0);
204+
public static final TransportVersion FAST_REFRESH_RCO_2 = def(8_795_00_0);
204205

205206
/*
206207
* STOP! READ THIS FIRST! No, really,

server/src/main/java/org/elasticsearch/action/admin/indices/refresh/TransportUnpromotableShardRefreshAction.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import java.util.List;
2626

27-
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO;
27+
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO_2;
2828
import static org.elasticsearch.index.IndexSettings.INDEX_FAST_REFRESH_SETTING;
2929

3030
public class TransportUnpromotableShardRefreshAction extends TransportBroadcastUnpromotableAction<
@@ -76,17 +76,17 @@ protected void unpromotableShardOperation(
7676
return;
7777
}
7878

79-
// During an upgrade to FAST_REFRESH_RCO, we expect search shards to be first upgraded before the primary is upgraded. Thus,
79+
// During an upgrade to FAST_REFRESH_RCO_2, we expect search shards to be first upgraded before the primary is upgraded. Thus,
8080
// when the primary is upgraded, and starts to deliver unpromotable refreshes, we expect the search shards to be upgraded already.
8181
// Note that the fast refresh setting is final.
8282
// TODO: remove assertion (ES-9563)
8383
assert INDEX_FAST_REFRESH_SETTING.get(shard.indexSettings().getSettings()) == false
84-
|| transportService.getLocalNodeConnection().getTransportVersion().onOrAfter(FAST_REFRESH_RCO)
84+
|| transportService.getLocalNodeConnection().getTransportVersion().onOrAfter(FAST_REFRESH_RCO_2)
8585
: "attempted to refresh a fast refresh search shard "
8686
+ shard
8787
+ " on transport version "
8888
+ transportService.getLocalNodeConnection().getTransportVersion()
89-
+ " (before FAST_REFRESH_RCO)";
89+
+ " (before FAST_REFRESH_RCO_2)";
9090

9191
ActionListener.run(responseListener, listener -> {
9292
shard.waitForPrimaryTermAndGeneration(

server/src/main/java/org/elasticsearch/cluster/routing/OperationRouting.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.Set;
3333
import java.util.stream.Collectors;
3434

35-
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO;
35+
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO_2;
3636
import static org.elasticsearch.index.IndexSettings.INDEX_FAST_REFRESH_SETTING;
3737

3838
public class OperationRouting {
@@ -309,7 +309,7 @@ public static boolean canSearchShard(ShardRouting shardRouting, ClusterState clu
309309
// TODO: remove if and always return isSearchable (ES-9563)
310310
if (INDEX_FAST_REFRESH_SETTING.get(clusterState.metadata().index(shardRouting.index()).getSettings())) {
311311
// Until all the cluster is upgraded, we send searches/gets to the primary (even if it has been upgraded) to execute locally.
312-
if (clusterState.getMinTransportVersion().onOrAfter(FAST_REFRESH_RCO)) {
312+
if (clusterState.getMinTransportVersion().onOrAfter(FAST_REFRESH_RCO_2)) {
313313
return shardRouting.isSearchable();
314314
} else {
315315
return shardRouting.isPromotableToPrimary();

server/src/test/java/org/elasticsearch/cluster/routing/IndexRoutingTableTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import java.util.List;
2222

23-
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO;
23+
import static org.elasticsearch.TransportVersions.FAST_REFRESH_RCO_2;
2424
import static org.elasticsearch.index.IndexSettings.INDEX_FAST_REFRESH_SETTING;
2525
import static org.mockito.ArgumentMatchers.any;
2626
import static org.mockito.Mockito.mock;
@@ -43,7 +43,7 @@ private void innerReadyForSearch(boolean fastRefresh, boolean beforeFastRefreshR
4343
Settings.builder().put(INDEX_FAST_REFRESH_SETTING.getKey(), fastRefresh).build()
4444
);
4545
when(clusterState.getMinTransportVersion()).thenReturn(
46-
beforeFastRefreshRCO ? TransportVersion.fromId(FAST_REFRESH_RCO.id() - 1_00_0) : TransportVersion.current()
46+
beforeFastRefreshRCO ? TransportVersion.fromId(FAST_REFRESH_RCO_2.id() - 1_00_0) : TransportVersion.current()
4747
);
4848
// 2 primaries that are search and index
4949
ShardId p1 = new ShardId(index, 0);

0 commit comments

Comments
 (0)