Run XPack usage actions on local node (#122933)

These actions solely need the cluster state, they can run on any node.

Relates #101805
This commit is contained in:
Niels Bauman 2025-03-03 13:37:27 +01:00 committed by GitHub
parent 2fcb23a87e
commit afff39ed5c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
52 changed files with 122 additions and 83 deletions

View file

@ -0,0 +1,5 @@
pr: 122933
summary: Run XPack usage actions on local node
area: Stats
type: enhancement
issues: []

View file

@ -66,6 +66,9 @@ public abstract class TransportLocalClusterStateAction<Request extends LocalClus
@Override
protected final void doExecute(Task task, Request request, ActionListener<Response> listener) {
if (task != null) {
request.setParentTask(clusterService.localNode().getId(), task.getId());
}
final var state = clusterService.state();
final var clusterBlockException = checkBlock(request, state);
if (clusterBlockException != null) {

View file

@ -38,7 +38,7 @@ public class AnalyticsUsageTransportAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -73,7 +73,7 @@ public class AnalyticsInfoTransportActionTests extends ESTestCase {
client
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(task, null, clusterState, future);
usageAction.localClusterStateOperation(task, null, clusterState, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(true));
@ -100,7 +100,7 @@ public class AnalyticsInfoTransportActionTests extends ESTestCase {
client
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(task, null, clusterState, future);
usageAction.localClusterStateOperation(task, null, clusterState, future);
XPackFeatureUsage usage = future.get().getUsage();
assertTrue(usage.enabled());

View file

@ -48,7 +48,7 @@ public class CCRUsageTransportAction extends XPackUsageFeatureTransportAction {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -152,7 +152,7 @@ public class CCRInfoTransportActionTests extends ESTestCase {
licenseState
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, clusterState, future);
usageAction.localClusterStateOperation(null, null, clusterState, future);
CCRInfoTransportAction.Usage ccrUsage = (CCRInfoTransportAction.Usage) future.get().getUsage();
assertThat(ccrUsage.enabled(), equalTo(true));
assertThat(ccrUsage.available(), equalTo(false));

View file

@ -150,7 +150,7 @@ public class XPackUsageRestCancellationIT extends ESIntegTestCase {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,
@ -185,7 +185,7 @@ public class XPackUsageRestCancellationIT extends ESIntegTestCase {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -7,7 +7,7 @@
package org.elasticsearch.protocol.xpack;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.support.master.MasterNodeRequest;
import org.elasticsearch.action.support.local.LocalClusterStateRequest;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.tasks.CancellableTask;
@ -17,14 +17,14 @@ import org.elasticsearch.tasks.TaskId;
import java.io.IOException;
import java.util.Map;
public class XPackUsageRequest extends MasterNodeRequest<XPackUsageRequest> {
public class XPackUsageRequest extends LocalClusterStateRequest {
public XPackUsageRequest(TimeValue masterNodeTimeout) {
super(masterNodeTimeout);
}
public XPackUsageRequest(StreamInput in) throws IOException {
super(in);
super(in, false);
}
@Override

View file

@ -42,7 +42,7 @@ public class HealthApiUsageTransportAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -23,6 +23,8 @@ import org.elasticsearch.xpack.core.action.XPackUsageFeatureTransportAction;
public class RemoteClusterUsageTransportAction extends XPackUsageFeatureTransportAction {
private TransportService transportService;
@Inject
public RemoteClusterUsageTransportAction(
TransportService transportService,
@ -31,10 +33,11 @@ public class RemoteClusterUsageTransportAction extends XPackUsageFeatureTranspor
ActionFilters actionFilters
) {
super(XPackUsageFeatureAction.REMOTE_CLUSTERS.name(), transportService, clusterService, threadPool, actionFilters);
this.transportService = transportService;
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -47,7 +47,7 @@ public class DataStreamLifecycleUsageTransportAction extends XPackUsageFeatureTr
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -39,7 +39,7 @@ public class DataStreamUsageTransportAction extends XPackUsageFeatureTransportAc
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -10,11 +10,13 @@ import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ActionRunnable;
import org.elasticsearch.action.ActionType;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.action.support.ChannelActionListener;
import org.elasticsearch.action.support.local.TransportLocalClusterStateAction;
import org.elasticsearch.client.internal.node.NodeClient;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.UpdateForV10;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
import org.elasticsearch.tasks.Task;
@ -25,11 +27,16 @@ import org.elasticsearch.xpack.core.XPackFeatureUsage;
import java.util.ArrayList;
import java.util.List;
public class TransportXPackUsageAction extends TransportMasterNodeAction<XPackUsageRequest, XPackUsageResponse> {
public class TransportXPackUsageAction extends TransportLocalClusterStateAction<XPackUsageRequest, XPackUsageResponse> {
private final NodeClient client;
private final List<ActionType<XPackUsageFeatureResponse>> usageActions;
/**
* NB prior to 9.0 this was a TransportMasterNodeReadAction so for BwC it must be registered with the TransportService until
* we no longer need to support calling this action remotely.
*/
@UpdateForV10(owner = UpdateForV10.Owner.DATA_MANAGEMENT)
@SuppressWarnings("this-escape")
@Inject
public TransportXPackUsageAction(
@ -41,16 +48,22 @@ public class TransportXPackUsageAction extends TransportMasterNodeAction<XPackUs
) {
super(
XPackUsageAction.NAME,
transportService,
clusterService,
threadPool,
actionFilters,
XPackUsageRequest::new,
XPackUsageResponse::new,
transportService.getTaskManager(),
clusterService,
threadPool.executor(ThreadPool.Names.MANAGEMENT)
);
this.client = client;
this.usageActions = usageActions();
transportService.registerRequestHandler(
actionName,
executor,
false,
true,
XPackUsageRequest::new,
(request, channel, task) -> executeDirect(task, request, new ChannelActionListener<>(channel))
);
}
// overrideable for tests
@ -59,14 +72,19 @@ public class TransportXPackUsageAction extends TransportMasterNodeAction<XPackUs
}
@Override
protected void masterOperation(Task task, XPackUsageRequest request, ClusterState state, ActionListener<XPackUsageResponse> listener) {
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,
ActionListener<XPackUsageResponse> listener
) {
new ActionRunnable<>(listener) {
final List<XPackFeatureUsage> responses = new ArrayList<>(usageActions.size());
@Override
protected void doRun() {
if (responses.size() < usageActions().size()) {
final var childRequest = new XPackUsageRequest(request.masterNodeTimeout());
final var childRequest = new XPackUsageRequest(request.masterTimeout());
childRequest.setParentTask(request.getParentTask());
client.executeLocally(
usageActions.get(responses.size()),

View file

@ -7,16 +7,26 @@
package org.elasticsearch.xpack.core.action;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.action.support.ChannelActionListener;
import org.elasticsearch.action.support.local.TransportLocalClusterStateAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.core.UpdateForV10;
import org.elasticsearch.protocol.xpack.XPackUsageRequest;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportService;
public abstract class XPackUsageFeatureTransportAction extends TransportMasterNodeAction<XPackUsageRequest, XPackUsageFeatureResponse> {
public abstract class XPackUsageFeatureTransportAction extends TransportLocalClusterStateAction<
XPackUsageRequest,
XPackUsageFeatureResponse> {
/**
* NB prior to 9.0 this was a TransportMasterNodeReadAction so for BwC it must be registered with the TransportService until
* we no longer need to support calling this action remotely.
*/
@UpdateForV10(owner = UpdateForV10.Owner.DATA_MANAGEMENT)
@SuppressWarnings("this-escape")
public XPackUsageFeatureTransportAction(
String name,
TransportService transportService,
@ -24,15 +34,15 @@ public abstract class XPackUsageFeatureTransportAction extends TransportMasterNo
ThreadPool threadPool,
ActionFilters actionFilters
) {
super(
name,
transportService,
clusterService,
threadPool,
actionFilters,
super(name, actionFilters, transportService.getTaskManager(), clusterService, threadPool.executor(ThreadPool.Names.MANAGEMENT));
transportService.registerRequestHandler(
actionName,
executor,
false,
true,
XPackUsageRequest::new,
XPackUsageFeatureResponse::new,
threadPool.executor(ThreadPool.Names.MANAGEMENT)
(request, channel, task) -> executeDirect(task, request, new ChannelActionListener<>(channel))
);
}

View file

@ -57,7 +57,7 @@ public class DataTiersUsageTransportAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -33,7 +33,7 @@ public class EnrichUsageTransportAction extends XPackUsageFeatureTransportAction
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -78,7 +78,7 @@ public class EnterpriseSearchUsageTransportAction extends XPackUsageFeatureTrans
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,
@ -153,7 +153,7 @@ public class EnterpriseSearchUsageTransportAction extends XPackUsageFeatureTrans
// Step 1: Fetch analytics collections count
GetAnalyticsCollectionAction.Request analyticsCollectionsCountRequest = new GetAnalyticsCollectionAction.Request(
request.masterNodeTimeout(),
request.masterTimeout(),
new String[] { "*" }
);

View file

@ -46,7 +46,7 @@ public class EqlUsageTransportAction extends XPackUsageFeatureTransportAction {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -100,7 +100,7 @@ public class EqlInfoTransportActionTests extends ESTestCase {
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
var usageAction = new EqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
usageAction.localClusterStateOperation(mock(Task.class), null, null, future);
EqlFeatureSetUsage eqlUsage = (EqlFeatureSetUsage) future.get().getUsage();
long fooBarBaz = ObjectPath.eval("foo.bar.baz", eqlUsage.stats());

View file

@ -46,7 +46,7 @@ public class EsqlUsageTransportAction extends XPackUsageFeatureTransportAction {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -102,7 +102,7 @@ public class EsqlInfoTransportActionTests extends ESTestCase {
var usageAction = new EsqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
usageAction.localClusterStateOperation(mock(Task.class), null, null, future);
EsqlFeatureSetUsage esqlUsage = (EsqlFeatureSetUsage) future.get().getUsage();
long fooBarBaz = ObjectPath.eval("foo.bar.baz", esqlUsage.stats());

View file

@ -35,7 +35,7 @@ public class FrozenIndicesUsageTransportAction extends XPackUsageFeatureTranspor
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -43,7 +43,7 @@ public class GraphUsageTransportAction extends XPackUsageFeatureTransportAction
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -54,7 +54,7 @@ public class GraphInfoTransportActionTests extends ESTestCase {
licenseState
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(available));
@ -93,7 +93,7 @@ public class GraphInfoTransportActionTests extends ESTestCase {
licenseState
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.enabled(), is(enabled));

View file

@ -53,7 +53,7 @@ public class IndexLifecycleUsageTransportAction extends XPackUsageFeatureTranspo
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -94,7 +94,7 @@ public class IndexLifecycleInfoTransportActionTests extends ESTestCase {
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
var usageAction = new IndexLifecycleUsageTransportAction(transportService, null, threadPool, mock(ActionFilters.class));
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, clusterState, future);
usageAction.localClusterStateOperation(null, null, clusterState, future);
IndexLifecycleFeatureSetUsage ilmUsage = (IndexLifecycleFeatureSetUsage) future.get().getUsage();
assertThat(ilmUsage.enabled(), equalTo(true));
assertThat(ilmUsage.available(), equalTo(true));

View file

@ -48,7 +48,7 @@ public class TransportInferenceUsageAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -92,7 +92,7 @@ public class TransportInferenceUsageActionTests extends ESTestCase {
}).when(client).execute(any(GetInferenceModelAction.class), any(), any());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
action.masterOperation(mock(Task.class), mock(XPackUsageRequest.class), mock(ClusterState.class), future);
action.localClusterStateOperation(mock(Task.class), mock(XPackUsageRequest.class), mock(ClusterState.class), future);
BytesStreamOutput out = new BytesStreamOutput();
future.get().getUsage().writeTo(out);

View file

@ -45,7 +45,7 @@ public class LogsDBUsageTransportAction extends XPackUsageFeatureTransportAction
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -38,7 +38,7 @@ public class LogstashUsageTransportAction extends XPackUsageFeatureTransportActi
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -35,7 +35,7 @@ public class LogstashInfoTransportActionTests extends ESTestCase {
LogstashUsageTransportAction usageAction = newUsageAction(false);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
XPackFeatureUsage usage = future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
@ -53,7 +53,7 @@ public class LogstashInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(available);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(available));

View file

@ -34,7 +34,7 @@ public class AggregateMetricUsageTransportAction extends XPackUsageFeatureTransp
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -143,7 +143,7 @@ public class MachineLearningUsageTransportAction extends XPackUsageFeatureTransp
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -200,7 +200,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
assertThat(featureSet.available(), is(available));
var usageAction = newUsageAction(commonSettings, randomBoolean(), randomBoolean(), randomBoolean());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(available));
@ -230,7 +230,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
assertThat(featureSet.enabled(), is(expected));
var usageAction = newUsageAction(settings.build(), randomBoolean(), randomBoolean(), randomBoolean());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.enabled(), is(expected));
@ -251,7 +251,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), true, true, true);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage mlUsage = future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
@ -409,7 +409,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), false, true, true);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage mlUsage = future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
@ -505,7 +505,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), true, false, false);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage mlUsage = future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
@ -602,7 +602,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), true, true, true);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage usage = future.get().getUsage();
XContentSource source;
@ -637,7 +637,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), randomBoolean(), randomBoolean(), randomBoolean());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage mlUsage = future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
mlUsage.writeTo(out);
@ -659,7 +659,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), randomBoolean(), randomBoolean(), randomBoolean());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, clusterState, future);
usageAction.localClusterStateOperation(null, null, clusterState, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(true));
@ -685,7 +685,7 @@ public class MachineLearningInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build(), true, true, true);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(true));

View file

@ -43,7 +43,7 @@ public class MonitoringUsageTransportAction extends XPackUsageFeatureTransportAc
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -101,7 +101,7 @@ public class MonitoringInfoTransportActionTests extends ESTestCase {
new MonitoringUsageServices(monitoring, exporters)
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
MonitoringFeatureSetUsage monitoringUsage = (MonitoringFeatureSetUsage) future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
out.setTransportVersion(serializedVersion);

View file

@ -42,7 +42,7 @@ public class ArchiveUsageTransportAction extends XPackUsageFeatureTransportActio
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -43,7 +43,7 @@ public class ProfilingUsageTransportAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -36,7 +36,7 @@ public class RollupUsageTransportAction extends XPackUsageFeatureTransportAction
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -43,7 +43,7 @@ public class RollupInfoTransportActionTests extends ESTestCase {
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
var usageAction = new RollupUsageTransportAction(transportService, null, threadPool, mock(ActionFilters.class));
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, ClusterState.EMPTY_STATE, future);
usageAction.localClusterStateOperation(null, null, ClusterState.EMPTY_STATE, future);
RollupFeatureSetUsage rollupUsage = (RollupFeatureSetUsage) future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
rollupUsage.writeTo(out);

View file

@ -42,7 +42,7 @@ public class SearchableSnapshotsUsageTransportAction extends XPackUsageFeatureTr
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -84,7 +84,7 @@ public class SecurityUsageTransportAction extends XPackUsageFeatureTransportActi
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -212,7 +212,7 @@ public class SecurityInfoTransportActionTests extends ESTestCase {
var usageAction = newUsageAction(settings.build());
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(null, null, null, future);
usageAction.localClusterStateOperation(null, null, null, future);
SecurityFeatureSetUsage securityUsage = (SecurityFeatureSetUsage) future.get().getUsage();
BytesStreamOutput out = new BytesStreamOutput();
securityUsage.writeTo(out);

View file

@ -35,7 +35,7 @@ public class SLMUsageTransportAction extends XPackUsageFeatureTransportAction {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -39,7 +39,7 @@ public class SpatialUsageTransportAction extends XPackUsageFeatureTransportActio
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -71,7 +71,7 @@ public class SpatialInfoTransportActionTests extends ESTestCase {
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
Task task = new Task(1L, "_type", "_action", "_description", null, Collections.emptyMap());
usageAction.masterOperation(task, null, clusterService.state(), future);
usageAction.localClusterStateOperation(task, null, clusterService.state(), future);
XPackFeatureUsage usage = future.get().getUsage();
assertThat(usage.available(), is(true));
@ -96,7 +96,7 @@ public class SpatialInfoTransportActionTests extends ESTestCase {
mockClient()
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, clusterService.state(), future);
usageAction.localClusterStateOperation(mock(Task.class), null, clusterService.state(), future);
XPackFeatureUsage usage = future.get().getUsage();
assertTrue(usage.enabled());

View file

@ -45,7 +45,7 @@ public class SqlUsageTransportAction extends XPackUsageFeatureTransportAction {
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -97,7 +97,7 @@ public class SqlInfoTransportActionTests extends ESTestCase {
TransportService transportService = MockUtils.setupTransportServiceWithThreadpoolExecutor(threadPool);
var usageAction = new SqlUsageTransportAction(transportService, clusterService, threadPool, mock(ActionFilters.class), client);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
usageAction.localClusterStateOperation(mock(Task.class), null, null, future);
SqlFeatureSetUsage sqlUsage = (SqlFeatureSetUsage) future.get().getUsage();
long fooBarBaz = ObjectPath.eval("foo.bar.baz", sqlUsage.stats());

View file

@ -84,7 +84,7 @@ public class TransformUsageTransportAction extends XPackUsageFeatureTransportAct
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState clusterState,

View file

@ -34,7 +34,7 @@ public class VotingOnlyUsageTransportAction extends XPackUsageFeatureTransportAc
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -59,7 +59,7 @@ public class WatcherUsageTransportAction extends XPackUsageFeatureTransportActio
}
@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
XPackUsageRequest request,
ClusterState state,

View file

@ -143,7 +143,7 @@ public class WatcherInfoTransportActionTests extends ESTestCase {
client
);
PlainActionFuture<XPackUsageFeatureResponse> future = new PlainActionFuture<>();
usageAction.masterOperation(mock(Task.class), null, null, future);
usageAction.localClusterStateOperation(mock(Task.class), null, null, future);
WatcherFeatureSetUsage watcherUsage = (WatcherFeatureSetUsage) future.get().getUsage();
assertThat(watcherUsage.stats().keySet(), containsInAnyOrder("foo", "spam"));
long fooBarBaz = ObjectPath.eval("foo.bar.baz", watcherUsage.stats());