Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/changelog/137567.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pr: 137567
summary: '`TransportGetBasicStatusAction` runs on local'
area: Distributed
type: enhancement
issues: []

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,25 @@
*/
package org.elasticsearch.license;

import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.support.master.MasterNodeReadRequest;
import org.elasticsearch.action.support.local.LocalClusterStateRequest;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.core.UpdateForV10;

import java.io.IOException;

public class GetBasicStatusRequest extends MasterNodeReadRequest<GetBasicStatusRequest> {
public class GetBasicStatusRequest extends LocalClusterStateRequest {

public GetBasicStatusRequest(TimeValue masterNodeTimeout) {
super(masterNodeTimeout);
}

/**
* Prior to 9.3 TransportGetBasicStatusAction was a TransportMasterNodeReadAction so for BwC we need to be
* able to read this from the transport layer until we no longer need to support calling this action remotely.
*/
@UpdateForV10(owner = UpdateForV10.Owner.DISTRIBUTED_COORDINATION)
public GetBasicStatusRequest(StreamInput in) throws IOException {
super(in);
}

@Override
public ActionRequestValidationException validate() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
package org.elasticsearch.license;

import org.elasticsearch.action.ActionResponse;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.xcontent.ToXContentObject;
import org.elasticsearch.xcontent.XContentBuilder;
Expand All @@ -19,10 +18,6 @@ public class GetBasicStatusResponse extends ActionResponse implements ToXContent

private final boolean eligibleToStartBasic;

GetBasicStatusResponse(StreamInput in) throws IOException {
eligibleToStartBasic = in.readBoolean();
}

public GetBasicStatusResponse(boolean eligibleToStartBasic) {
this.eligibleToStartBasic = eligibleToStartBasic;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public List<Route> routes() {
@Override
protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient client) {
final var request = new GetBasicStatusRequest(RestUtils.getMasterNodeTimeout(restRequest));
return channel -> client.execute(GetBasicStatusAction.INSTANCE, request, new RestToXContentListener<>(channel));
return channel -> client.execute(TransportGetBasicStatusAction.TYPE, request, new RestToXContentListener<>(channel));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,41 +7,45 @@
package org.elasticsearch.license;

import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.ActionType;
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
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.block.ClusterBlockLevel;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.UpdateForV10;
import org.elasticsearch.injection.guice.Inject;
import org.elasticsearch.tasks.Task;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportService;

public class TransportGetBasicStatusAction extends TransportMasterNodeReadAction<GetBasicStatusRequest, GetBasicStatusResponse> {
public class TransportGetBasicStatusAction extends TransportLocalClusterStateAction<GetBasicStatusRequest, GetBasicStatusResponse> {
public static final ActionType<GetBasicStatusResponse> TYPE = new ActionType<>("cluster:admin/xpack/license/basic_status");

/**
* Prior to 9.3 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.DISTRIBUTED_COORDINATION)
@SuppressWarnings("this-escape")
@Inject
public TransportGetBasicStatusAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters
) {
super(
GetBasicStatusAction.NAME,
transportService,
clusterService,
threadPool,
actionFilters,
public TransportGetBasicStatusAction(TransportService transportService, ClusterService clusterService, ActionFilters actionFilters) {
super(TYPE.name(), actionFilters, transportService.getTaskManager(), clusterService, EsExecutors.DIRECT_EXECUTOR_SERVICE);

transportService.registerRequestHandler(
actionName,
executor,
false,
true,
GetBasicStatusRequest::new,
GetBasicStatusResponse::new,
EsExecutors.DIRECT_EXECUTOR_SERVICE
(request, channel, task) -> executeDirect(task, request, new ChannelActionListener<>(channel))
);
}

@Override
protected void masterOperation(
protected void localClusterStateOperation(
Task task,
GetBasicStatusRequest request,
ClusterState state,
Expand All @@ -54,7 +58,6 @@ protected void masterOperation(
License license = licensesMetadata.getLicense();
listener.onResponse(new GetBasicStatusResponse(license == null || License.LicenseType.isBasic(license.type()) == false));
}

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import org.elasticsearch.index.mapper.MetadataFieldMapper;
import org.elasticsearch.indices.recovery.RecoverySettings;
import org.elasticsearch.license.ClusterStateLicenseService;
import org.elasticsearch.license.GetBasicStatusAction;
import org.elasticsearch.license.GetLicenseAction;
import org.elasticsearch.license.GetTrialStatusAction;
import org.elasticsearch.license.License;
Expand Down Expand Up @@ -365,7 +364,7 @@ public List<ActionHandler> getActions() {
actions.add(new ActionHandler(PostStartTrialAction.INSTANCE, TransportPostStartTrialAction.class));
actions.add(new ActionHandler(GetTrialStatusAction.INSTANCE, TransportGetTrialStatusAction.class));
actions.add(new ActionHandler(PostStartBasicAction.INSTANCE, TransportPostStartBasicAction.class));
actions.add(new ActionHandler(GetBasicStatusAction.INSTANCE, TransportGetBasicStatusAction.class));
actions.add(new ActionHandler(TransportGetBasicStatusAction.TYPE, TransportGetBasicStatusAction.class));
actions.add(new ActionHandler(TransportGetFeatureUsageAction.TYPE, TransportGetFeatureUsageAction.class));
actions.add(new ActionHandler(TermsEnumAction.INSTANCE, TransportTermsEnumAction.class));
actions.add(new ActionHandler(TransportDeleteAsyncResultAction.TYPE, TransportDeleteAsyncResultAction.class));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@ public void testUnacknowledgedStartBasicLicense() throws Exception {
}

private static GetBasicStatusResponse getBasicStatus() {
return safeGet(clusterAdmin().execute(GetBasicStatusAction.INSTANCE, new GetBasicStatusRequest(TEST_REQUEST_TIMEOUT)));
return safeGet(client().execute(TransportGetBasicStatusAction.TYPE, new GetBasicStatusRequest(TEST_REQUEST_TIMEOUT)));
}

private static PostStartBasicResponse startBasic(boolean acknowledged) {
return safeGet(
clusterAdmin().execute(
client().execute(
PostStartBasicAction.INSTANCE,
new PostStartBasicRequest(TEST_REQUEST_TIMEOUT, TEST_REQUEST_TIMEOUT).acknowledge(acknowledged)
)
Expand Down