Skip to content

Commit 9209341

Browse files
Remove unnecessary FeatureService dependencies (#121496)
We have a lot of unused fields for this thing. Also, more of its methods can just be made static to avoid a dependency.
1 parent c92b7b5 commit 9209341

File tree

25 files changed

+44
-140
lines changed

25 files changed

+44
-140
lines changed

server/src/main/java/org/elasticsearch/action/admin/cluster/desirednodes/TransportUpdateDesiredNodesAction.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@
2222
import org.elasticsearch.cluster.desirednodes.VersionConflictException;
2323
import org.elasticsearch.cluster.metadata.DesiredNodes;
2424
import org.elasticsearch.cluster.metadata.DesiredNodesMetadata;
25-
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
2625
import org.elasticsearch.cluster.routing.RerouteService;
2726
import org.elasticsearch.cluster.routing.allocation.AllocationService;
2827
import org.elasticsearch.cluster.service.ClusterService;
2928
import org.elasticsearch.cluster.service.MasterServiceTaskQueue;
3029
import org.elasticsearch.common.Priority;
3130
import org.elasticsearch.common.util.concurrent.EsExecutors;
32-
import org.elasticsearch.features.FeatureService;
3331
import org.elasticsearch.injection.guice.Inject;
3432
import org.elasticsearch.tasks.Task;
3533
import org.elasticsearch.threadpool.ThreadPool;
@@ -42,18 +40,15 @@
4240
public class TransportUpdateDesiredNodesAction extends TransportMasterNodeAction<UpdateDesiredNodesRequest, UpdateDesiredNodesResponse> {
4341
private static final Logger logger = LogManager.getLogger(TransportUpdateDesiredNodesAction.class);
4442

45-
private final FeatureService featureService;
4643
private final MasterServiceTaskQueue<UpdateDesiredNodesTask> taskQueue;
4744

4845
@Inject
4946
public TransportUpdateDesiredNodesAction(
5047
TransportService transportService,
5148
ClusterService clusterService,
5249
RerouteService rerouteService,
53-
FeatureService featureService,
5450
ThreadPool threadPool,
5551
ActionFilters actionFilters,
56-
IndexNameExpressionResolver indexNameExpressionResolver,
5752
AllocationService allocationService
5853
) {
5954
super(
@@ -67,7 +62,6 @@ public TransportUpdateDesiredNodesAction(
6762
UpdateDesiredNodesResponse::new,
6863
EsExecutors.DIRECT_EXECUTOR_SERVICE
6964
);
70-
this.featureService = featureService;
7165
this.taskQueue = clusterService.createTaskQueue(
7266
"update-desired-nodes",
7367
Priority.URGENT,

server/src/main/java/org/elasticsearch/cluster/coordination/NodeJoinExecutor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ private static void blockForbiddenVersions(TransportVersion joiningTransportVers
371371
* that are also present across the whole cluster as a result.
372372
*/
373373
private Set<String> calculateEffectiveClusterFeatures(DiscoveryNodes nodes, Map<String, Set<String>> nodeFeatures) {
374-
if (featureService.featuresCanBeAssumedForNodes(nodes)) {
374+
if (FeatureService.featuresCanBeAssumedForNodes(nodes)) {
375375
Set<String> assumedFeatures = featureService.getNodeFeatures()
376376
.values()
377377
.stream()
@@ -382,7 +382,7 @@ private Set<String> calculateEffectiveClusterFeatures(DiscoveryNodes nodes, Map<
382382
// add all assumed features to the featureset of all nodes of the next major version
383383
nodeFeatures = new HashMap<>(nodeFeatures);
384384
for (var node : nodes.getNodes().entrySet()) {
385-
if (featureService.featuresCanBeAssumedForNode(node.getValue())) {
385+
if (FeatureService.featuresCanBeAssumedForNode(node.getValue())) {
386386
assert nodeFeatures.containsKey(node.getKey()) : "Node " + node.getKey() + " does not have any features";
387387
nodeFeatures.computeIfPresent(node.getKey(), (k, v) -> {
388388
var newFeatures = new HashSet<>(v);
@@ -525,7 +525,7 @@ private Set<String> enforceNodeFeatureBarrier(DiscoveryNode node, Set<String> ef
525525
return newNodeFeatures;
526526
}
527527

528-
if (featureService.featuresCanBeAssumedForNode(node)) {
528+
if (FeatureService.featuresCanBeAssumedForNode(node)) {
529529
// it might still be ok for this node to join if this node can have assumed features,
530530
// and all the missing features are assumed
531531
// we can get the NodeFeature object direct from this node's registered features

server/src/main/java/org/elasticsearch/features/FeatureService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ public Map<String, NodeFeature> getNodeFeatures() {
5353
/**
5454
* Returns {@code true} if {@code node} can have assumed features.
5555
*/
56-
public boolean featuresCanBeAssumedForNode(DiscoveryNode node) {
56+
public static boolean featuresCanBeAssumedForNode(DiscoveryNode node) {
5757
return ClusterFeatures.featuresCanBeAssumedForNode(node);
5858
}
5959

6060
/**
6161
* Returns {@code true} if one or more nodes in {@code nodes} can have assumed features.
6262
*/
63-
public boolean featuresCanBeAssumedForNodes(DiscoveryNodes nodes) {
63+
public static boolean featuresCanBeAssumedForNodes(DiscoveryNodes nodes) {
6464
return ClusterFeatures.featuresCanBeAssumedForNodes(nodes);
6565
}
6666

server/src/main/java/org/elasticsearch/health/metadata/HealthMetadataService.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.elasticsearch.common.settings.Settings;
2727
import org.elasticsearch.core.Nullable;
2828
import org.elasticsearch.core.Tuple;
29-
import org.elasticsearch.features.FeatureService;
3029
import org.elasticsearch.gateway.GatewayService;
3130

3231
import java.util.List;
@@ -50,7 +49,6 @@ public class HealthMetadataService {
5049
private static final Logger logger = LogManager.getLogger(HealthMetadataService.class);
5150

5251
private final ClusterService clusterService;
53-
private final FeatureService featureService;
5452
private final ClusterStateListener clusterStateListener;
5553
private final MasterServiceTaskQueue<UpsertHealthMetadataTask> taskQueue;
5654
private volatile boolean enabled;
@@ -64,17 +62,16 @@ public class HealthMetadataService {
6462
// ClusterState to maintain an up-to-date version of it across the cluster.
6563
private volatile HealthMetadata localHealthMetadata;
6664

67-
private HealthMetadataService(ClusterService clusterService, FeatureService featureService, Settings settings) {
65+
private HealthMetadataService(ClusterService clusterService, Settings settings) {
6866
this.clusterService = clusterService;
69-
this.featureService = featureService;
7067
this.clusterStateListener = this::updateOnClusterStateChange;
7168
this.enabled = ENABLED_SETTING.get(settings);
7269
this.localHealthMetadata = initialHealthMetadata(settings);
7370
this.taskQueue = clusterService.createTaskQueue("health metadata service", Priority.NORMAL, new Executor());
7471
}
7572

76-
public static HealthMetadataService create(ClusterService clusterService, FeatureService featureService, Settings settings) {
77-
HealthMetadataService healthMetadataService = new HealthMetadataService(clusterService, featureService, settings);
73+
public static HealthMetadataService create(ClusterService clusterService, Settings settings) {
74+
HealthMetadataService healthMetadataService = new HealthMetadataService(clusterService, settings);
7875
healthMetadataService.registerListeners();
7976
return healthMetadataService;
8077
}

server/src/main/java/org/elasticsearch/health/node/DiskHealthIndicatorService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.elasticsearch.cluster.routing.RoutingNodes;
1919
import org.elasticsearch.cluster.service.ClusterService;
2020
import org.elasticsearch.common.util.set.Sets;
21-
import org.elasticsearch.features.FeatureService;
2221
import org.elasticsearch.health.Diagnosis;
2322
import org.elasticsearch.health.HealthIndicatorDetails;
2423
import org.elasticsearch.health.HealthIndicatorImpact;
@@ -73,11 +72,9 @@ public class DiskHealthIndicatorService implements HealthIndicatorService {
7372
private static final String IMPACT_CLUSTER_FUNCTIONALITY_UNAVAILABLE_ID = "cluster_functionality_unavailable";
7473

7574
private final ClusterService clusterService;
76-
private final FeatureService featureService;
7775

78-
public DiskHealthIndicatorService(ClusterService clusterService, FeatureService featureService) {
76+
public DiskHealthIndicatorService(ClusterService clusterService) {
7977
this.clusterService = clusterService;
80-
this.featureService = featureService;
8178
}
8279

8380
@Override

server/src/main/java/org/elasticsearch/health/node/selection/HealthNodeTaskExecutor.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.settings.Setting;
2424
import org.elasticsearch.common.settings.Settings;
2525
import org.elasticsearch.core.TimeValue;
26-
import org.elasticsearch.features.FeatureService;
2726
import org.elasticsearch.node.NodeClosedException;
2827
import org.elasticsearch.persistent.AllocatedPersistentTask;
2928
import org.elasticsearch.persistent.PersistentTaskParams;
@@ -60,22 +59,15 @@ public final class HealthNodeTaskExecutor extends PersistentTasksExecutor<Health
6059

6160
private final ClusterService clusterService;
6261
private final PersistentTasksService persistentTasksService;
63-
private final FeatureService featureService;
6462
private final AtomicReference<HealthNode> currentTask = new AtomicReference<>();
6563
private final ClusterStateListener taskStarter;
6664
private final ClusterStateListener shutdownListener;
6765
private volatile boolean enabled;
6866

69-
private HealthNodeTaskExecutor(
70-
ClusterService clusterService,
71-
PersistentTasksService persistentTasksService,
72-
FeatureService featureService,
73-
Settings settings
74-
) {
67+
private HealthNodeTaskExecutor(ClusterService clusterService, PersistentTasksService persistentTasksService, Settings settings) {
7568
super(TASK_NAME, clusterService.threadPool().executor(ThreadPool.Names.MANAGEMENT));
7669
this.clusterService = clusterService;
7770
this.persistentTasksService = persistentTasksService;
78-
this.featureService = featureService;
7971
this.taskStarter = this::startTask;
8072
this.shutdownListener = this::shuttingDown;
8173
this.enabled = ENABLED_SETTING.get(settings);
@@ -84,16 +76,10 @@ private HealthNodeTaskExecutor(
8476
public static HealthNodeTaskExecutor create(
8577
ClusterService clusterService,
8678
PersistentTasksService persistentTasksService,
87-
FeatureService featureService,
8879
Settings settings,
8980
ClusterSettings clusterSettings
9081
) {
91-
HealthNodeTaskExecutor healthNodeTaskExecutor = new HealthNodeTaskExecutor(
92-
clusterService,
93-
persistentTasksService,
94-
featureService,
95-
settings
96-
);
82+
HealthNodeTaskExecutor healthNodeTaskExecutor = new HealthNodeTaskExecutor(clusterService, persistentTasksService, settings);
9783
healthNodeTaskExecutor.registerListeners(clusterSettings);
9884
return healthNodeTaskExecutor;
9985
}

server/src/main/java/org/elasticsearch/indices/IndicesService.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
import org.elasticsearch.env.NodeEnvironment;
8080
import org.elasticsearch.env.ShardLock;
8181
import org.elasticsearch.env.ShardLockObtainFailedException;
82-
import org.elasticsearch.features.FeatureService;
8382
import org.elasticsearch.gateway.MetaStateService;
8483
import org.elasticsearch.gateway.MetadataStateFormat;
8584
import org.elasticsearch.index.CloseUtils;
@@ -236,7 +235,6 @@ public class IndicesService extends AbstractLifecycleComponent
236235
private final ScriptService scriptService;
237236
private final ClusterService clusterService;
238237
private final Client client;
239-
private final FeatureService featureService;
240238
private volatile Map<String, IndexService> indices = Map.of();
241239
private final Map<Index, List<PendingDelete>> pendingDeletes = new HashMap<>();
242240
private final AtomicInteger numUncompletedDeletes = new AtomicInteger();
@@ -309,7 +307,6 @@ protected void doStart() {
309307
this.scriptService = builder.scriptService;
310308
this.clusterService = builder.clusterService;
311309
this.client = builder.client;
312-
this.featureService = builder.featureService;
313310
this.idFieldDataEnabled = INDICES_ID_FIELD_DATA_ENABLED_SETTING.get(clusterService.getSettings());
314311
clusterService.getClusterSettings().addSettingsUpdateConsumer(INDICES_ID_FIELD_DATA_ENABLED_SETTING, this::setIdFieldDataEnabled);
315312
this.indicesFieldDataCache = new IndicesFieldDataCache(settings, new IndexFieldDataCache.Listener() {

server/src/main/java/org/elasticsearch/indices/IndicesServiceBuilder.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.elasticsearch.common.util.BigArrays;
2121
import org.elasticsearch.core.Nullable;
2222
import org.elasticsearch.env.NodeEnvironment;
23-
import org.elasticsearch.features.FeatureService;
2423
import org.elasticsearch.gateway.MetaStateService;
2524
import org.elasticsearch.index.IndexSettings;
2625
import org.elasticsearch.index.SlowLogFieldProvider;
@@ -67,7 +66,6 @@ public class IndicesServiceBuilder {
6766
ScriptService scriptService;
6867
ClusterService clusterService;
6968
Client client;
70-
FeatureService featureService;
7169
MetaStateService metaStateService;
7270
Collection<Function<IndexSettings, Optional<EngineFactory>>> engineFactoryProviders = List.of();
7371
Map<String, IndexStorePlugin.DirectoryFactory> directoryFactories = Map.of();
@@ -173,11 +171,6 @@ public IndicesServiceBuilder client(Client client) {
173171
return this;
174172
}
175173

176-
public IndicesServiceBuilder featureService(FeatureService featureService) {
177-
this.featureService = featureService;
178-
return this;
179-
}
180-
181174
public IndicesServiceBuilder metaStateService(MetaStateService metaStateService) {
182175
this.metaStateService = metaStateService;
183176
return this;
@@ -230,7 +223,6 @@ public IndicesService build() {
230223
Objects.requireNonNull(scriptService);
231224
Objects.requireNonNull(clusterService);
232225
Objects.requireNonNull(client);
233-
Objects.requireNonNull(featureService);
234226
Objects.requireNonNull(metaStateService);
235227
Objects.requireNonNull(engineFactoryProviders);
236228
Objects.requireNonNull(directoryFactories);

server/src/main/java/org/elasticsearch/node/NodeConstruction.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,6 @@ public Map<String, String> searchFields() {
847847
.scriptService(scriptService)
848848
.clusterService(clusterService)
849849
.client(client)
850-
.featureService(featureService)
851850
.metaStateService(metaStateService)
852851
.valuesSourceRegistry(searchModule.getValuesSourceRegistry())
853852
.requestCacheKeyDifferentiator(searchModule.getRequestCacheKeyDifferentiator())
@@ -1147,7 +1146,6 @@ public Map<String, String> searchFields() {
11471146
clusterService,
11481147
threadPool,
11491148
systemIndices,
1150-
featureService,
11511149
clusterModule.getIndexNameExpressionResolver(),
11521150
metadataUpdateSettingsService,
11531151
metadataCreateIndexService
@@ -1161,7 +1159,6 @@ public Map<String, String> searchFields() {
11611159
discoveryModule.getCoordinator(),
11621160
clusterService,
11631161
transportService,
1164-
featureService,
11651162
threadPool,
11661163
telemetryProvider,
11671164
repositoriesService,
@@ -1333,7 +1330,6 @@ private Module loadDiagnosticServices(
13331330
Coordinator coordinator,
13341331
ClusterService clusterService,
13351332
TransportService transportService,
1336-
FeatureService featureService,
13371333
ThreadPool threadPool,
13381334
TelemetryProvider telemetryProvider,
13391335
RepositoriesService repositoriesService,
@@ -1351,7 +1347,7 @@ private Module loadDiagnosticServices(
13511347
var serverHealthIndicatorServices = Stream.of(
13521348
new StableMasterHealthIndicatorService(coordinationDiagnosticsService, clusterService),
13531349
new RepositoryIntegrityHealthIndicatorService(clusterService),
1354-
new DiskHealthIndicatorService(clusterService, featureService),
1350+
new DiskHealthIndicatorService(clusterService),
13551351
new ShardsCapacityHealthIndicatorService(clusterService),
13561352
fileSettingsHealthIndicatorService
13571353
);
@@ -1369,7 +1365,7 @@ private Module loadDiagnosticServices(
13691365
healthService,
13701366
telemetryProvider
13711367
);
1372-
HealthMetadataService healthMetadataService = HealthMetadataService.create(clusterService, featureService, settings);
1368+
HealthMetadataService healthMetadataService = HealthMetadataService.create(clusterService, settings);
13731369

13741370
List<HealthTracker<?>> healthTrackers = List.of(
13751371
new DiskHealthTracker(nodeService, clusterService),
@@ -1644,7 +1640,6 @@ private Module loadPersistentTasksService(
16441640
ClusterService clusterService,
16451641
ThreadPool threadPool,
16461642
SystemIndices systemIndices,
1647-
FeatureService featureService,
16481643
IndexNameExpressionResolver indexNameExpressionResolver,
16491644
MetadataUpdateSettingsService metadataUpdateSettingsService,
16501645
MetadataCreateIndexService metadataCreateIndexService
@@ -1661,7 +1656,6 @@ private Module loadPersistentTasksService(
16611656
HealthNodeTaskExecutor healthNodeTaskExecutor = HealthNodeTaskExecutor.create(
16621657
clusterService,
16631658
persistentTasksService,
1664-
featureService,
16651659
settingsModule.getSettings(),
16661660
clusterService.getClusterSettings()
16671661
);

server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ static class LowCardinality extends GlobalOrdinalsStringTermsAggregator {
290290
BucketCountThresholds bucketCountThresholds,
291291
AggregationContext context,
292292
Aggregator parent,
293-
boolean remapGlobalOrds,
294293
SubAggCollectionMode collectionMode,
295294
boolean showTermDocCountError,
296295
Map<String, Object> metadata,
@@ -308,7 +307,7 @@ static class LowCardinality extends GlobalOrdinalsStringTermsAggregator {
308307
ALWAYS_TRUE,
309308
context,
310309
parent,
311-
remapGlobalOrds,
310+
false,
312311
collectionMode,
313312
showTermDocCountError,
314313
CardinalityUpperBound.ONE,
@@ -385,7 +384,7 @@ protected void doClose() {
385384
Releasables.close(resultStrategy, segmentDocCounts, collectionStrategy);
386385
}
387386

388-
private void mapSegmentCountsToGlobalCounts(LongUnaryOperator mapping) throws IOException {
387+
private void mapSegmentCountsToGlobalCounts(LongUnaryOperator mapping) {
389388
for (long i = 1; i < segmentDocCounts.size(); i++) {
390389
// We use set(...) here, because we need to reset the slow to 0.
391390
// segmentDocCounts get reused over the segments and otherwise counts would be too high.
@@ -395,7 +394,7 @@ private void mapSegmentCountsToGlobalCounts(LongUnaryOperator mapping) throws IO
395394
}
396395
long ord = i - 1; // remember we do +1 when counting
397396
long globalOrd = mapping.applyAsLong(ord);
398-
incrementBucketDocCount(collectionStrategy.globalOrdToBucketOrd(0, globalOrd), inc);
397+
incrementBucketDocCount(collectionStrategy.globalOrdToBucketOrd(globalOrd), inc);
399398
}
400399
}
401400
}
@@ -440,7 +439,7 @@ abstract static class CollectionStrategy implements Releasable {
440439
/**
441440
* Convert a global ordinal into a bucket ordinal.
442441
*/
443-
abstract long globalOrdToBucketOrd(long owningBucketOrd, long globalOrd);
442+
abstract long globalOrdToBucketOrd(long globalOrd);
444443

445444
/**
446445
* Create the aggregation result
@@ -491,8 +490,7 @@ void collectGlobalOrd(long owningBucketOrd, int doc, long globalOrd, LeafBucketC
491490
}
492491

493492
@Override
494-
long globalOrdToBucketOrd(long owningBucketOrd, long globalOrd) {
495-
assert owningBucketOrd == 0;
493+
long globalOrdToBucketOrd(long globalOrd) {
496494
return globalOrd;
497495
}
498496

@@ -659,8 +657,8 @@ void collectGlobalOrd(long owningBucketOrd, int doc, long globalOrd, LeafBucketC
659657
}
660658

661659
@Override
662-
long globalOrdToBucketOrd(long owningBucketOrd, long globalOrd) {
663-
return bucketOrds.find(owningBucketOrd, globalOrd);
660+
long globalOrdToBucketOrd(long globalOrd) {
661+
return bucketOrds.find(0, globalOrd);
664662
}
665663

666664
private void collectZeroDocEntriesIfNeeded(long owningBucketOrd) throws IOException {
@@ -789,7 +787,7 @@ InternalAggregation[] buildAggregations(LongArray owningBucketOrds) throws IOExc
789787
/**
790788
* Strategy for building results.
791789
*/
792-
abstract class ResultStrategy<
790+
abstract static class ResultStrategy<
793791
R extends InternalAggregation,
794792
B extends InternalMultiBucketAggregation.InternalBucket,
795793
TB extends InternalMultiBucketAggregation.InternalBucket> implements Releasable {

0 commit comments

Comments
 (0)