Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public TransportGetDataStreamSettingsAction(

@Override
protected ClusterBlockException checkBlock(GetDataStreamSettingsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,6 @@ static List<DataStream> getDataStreams(ProjectMetadata project, IndexNameExpress

@Override
protected ClusterBlockException checkBlock(GetDataStreamAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,6 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(MigrateToDataStreamAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(ModifyDataStreamsAction.Request request, ProjectState state) {
ClusterBlockException globalBlock = state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
ClusterBlockException globalBlock = state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
if (globalBlock != null) {
return globalBlock;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,6 @@ private void updateSettingsOnSingleIndex(

@Override
protected ClusterBlockException checkBlock(UpdateDataStreamSettingsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,6 @@ GetDataStreamLifecycleStatsAction.Response collectStats(ProjectMetadata project)

@Override
protected ClusterBlockException checkBlock(GetDataStreamLifecycleStatsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,6 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(PutDataStreamLifecycleAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,6 @@ protected void localClusterStateOperation(

@Override
protected ClusterBlockException checkBlock(GetDataStreamOptionsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,6 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(PutDataStreamOptionsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
Expand All @@ -25,12 +26,15 @@

public class TransportGetStoredScriptAction extends TransportMasterNodeReadAction<GetStoredScriptRequest, GetStoredScriptResponse> {

private final ProjectResolver projectResolver;

@Inject
public TransportGetStoredScriptAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters
ActionFilters actionFilters,
ProjectResolver projectResolver
) {
super(
GetStoredScriptAction.NAME,
Expand All @@ -42,6 +46,7 @@ public TransportGetStoredScriptAction(
GetStoredScriptResponse::new,
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.projectResolver = projectResolver;
}

@Override
Expand All @@ -56,7 +61,7 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(GetStoredScriptRequest request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
Expand All @@ -29,14 +30,16 @@ public class TransportPutStoredScriptAction extends AcknowledgedTransportMasterN

public static final ActionType<AcknowledgedResponse> TYPE = new ActionType<>("cluster:admin/script/put");
private final ScriptService scriptService;
private final ProjectResolver projectResolver;

@Inject
public TransportPutStoredScriptAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
ScriptService scriptService
ScriptService scriptService,
ProjectResolver projectResolver
) {
super(
TYPE.name(),
Expand All @@ -48,6 +51,7 @@ public TransportPutStoredScriptAction(
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.scriptService = scriptService;
this.projectResolver = projectResolver;
}

@Override
Expand All @@ -62,7 +66,7 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(PutStoredScriptRequest request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ private static ProjectMetadata removeExistingAbstractions(ProjectMetadata projec

@Override
protected ClusterBlockException checkBlock(SimulateIndexTemplateRequest request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,6 @@ protected void localClusterStateOperation(

@Override
protected ClusterBlockException checkBlock(SimulateTemplateAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public TransportPutComponentTemplateAction(

@Override
protected ClusterBlockException checkBlock(PutComponentTemplateAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

public static ComponentTemplate normalizeComponentTemplate(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public TransportPutComposableIndexTemplateAction(

@Override
protected ClusterBlockException checkBlock(Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.elasticsearch.common.io.stream.Writeable;
import org.elasticsearch.common.logging.LoggerMessageFormat;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.core.FixForMultiProject;
import org.elasticsearch.core.Nullable;
import org.elasticsearch.index.shard.ShardId;
import org.elasticsearch.tasks.Task;
Expand Down Expand Up @@ -121,6 +122,9 @@ protected void asyncShardOperation(Request request, ShardId shardId, ActionListe

protected abstract boolean resolveIndex(Request request);

@FixForMultiProject(
description = "Many actions extend TransportSingleShardAction, consider checking for project global blocks when applicable"
)
protected static ClusterBlockException checkGlobalBlock(ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.READ);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this action always involves a shard which always belongs to a project, I think we can add projectResolver.getProjectId() here without having to defer this as future work? The checkRequestBlock method below already checks project indices blocks. Or maybe I am missing something?

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,6 @@ protected void localClusterStateOperation(

@Override
protected ClusterBlockException checkBlock(GetEnrichPolicyAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,6 @@ private void putPolicy(ProjectId projectId, PutEnrichPolicyAction.Request reques

@Override
protected ClusterBlockException checkBlock(PutEnrichPolicyAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.logging.DeprecationCategory;
import org.elasticsearch.common.logging.DeprecationLogger;
Expand All @@ -38,6 +39,7 @@ public class TransportPutAnalyticsCollectionAction extends TransportMasterNodeAc
PutAnalyticsCollectionAction.Response> {

private final AnalyticsCollectionService analyticsCollectionService;
private final ProjectResolver projectResolver;

@Inject
public TransportPutAnalyticsCollectionAction(
Expand All @@ -46,7 +48,8 @@ public TransportPutAnalyticsCollectionAction(
ThreadPool threadPool,
ActionFilters actionFilters,
AnalyticsCollectionService analyticsCollectionService,
FeatureService featureService
FeatureService featureService,
ProjectResolver projectResolver
) {
super(
PutAnalyticsCollectionAction.NAME,
Expand All @@ -59,11 +62,12 @@ public TransportPutAnalyticsCollectionAction(
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.analyticsCollectionService = analyticsCollectionService;
this.projectResolver = projectResolver;
}

@Override
protected ClusterBlockException checkBlock(PutAnalyticsCollectionAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
Expand Down Expand Up @@ -65,6 +66,7 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
private final ModelRegistry modelRegistry;
private final InferenceServiceRegistry serviceRegistry;
private volatile boolean skipValidationAndStart;
private final ProjectResolver projectResolver;

@Inject
public TransportPutInferenceModelAction(
Expand All @@ -75,7 +77,8 @@ public TransportPutInferenceModelAction(
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
Settings settings
Settings settings,
ProjectResolver projectResolver
) {
super(
PutInferenceModelAction.NAME,
Expand All @@ -93,6 +96,7 @@ public TransportPutInferenceModelAction(
this.skipValidationAndStart = InferencePlugin.SKIP_VALIDATE_AND_START.get(settings);
clusterService.getClusterSettings()
.addSettingsUpdateConsumer(InferencePlugin.SKIP_VALIDATE_AND_START, this::setSkipValidationAndStart);
this.projectResolver = projectResolver;
}

@Override
Expand Down Expand Up @@ -251,7 +255,7 @@ private void setSkipValidationAndStart(boolean skipValidationAndStart) {

@Override
protected ClusterBlockException checkBlock(PutInferenceModelAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
Expand Down Expand Up @@ -75,6 +76,7 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
private final ModelRegistry modelRegistry;
private final InferenceServiceRegistry serviceRegistry;
private final Client client;
private final ProjectResolver projectResolver;

@Inject
public TransportUpdateInferenceModelAction(
Expand All @@ -85,7 +87,8 @@ public TransportUpdateInferenceModelAction(
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
Client client
Client client,
ProjectResolver projectResolver
) {
super(
UpdateInferenceModelAction.NAME,
Expand All @@ -101,6 +104,7 @@ public TransportUpdateInferenceModelAction(
this.modelRegistry = modelRegistry;
this.serviceRegistry = serviceRegistry;
this.client = client;
this.projectResolver = projectResolver;
}

@Override
Expand Down Expand Up @@ -345,7 +349,7 @@ private static XContentParser getParser(UpdateInferenceModelAction.Request reque

@Override
protected ClusterBlockException checkBlock(UpdateInferenceModelAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
Expand All @@ -29,14 +30,16 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction<G
private static final Logger logger = LogManager.getLogger(TransportGetDatafeedsAction.class);

private final DatafeedManager datafeedManager;
private final ProjectResolver projectResolver;

@Inject
public TransportGetDatafeedsAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
DatafeedManager datafeedManager
DatafeedManager datafeedManager,
ProjectResolver projectResolver
) {
super(
GetDatafeedsAction.NAME,
Expand All @@ -50,6 +53,7 @@ public TransportGetDatafeedsAction(
);

this.datafeedManager = datafeedManager;
this.projectResolver = projectResolver;
}

@Override
Expand All @@ -71,6 +75,6 @@ protected void masterOperation(

@Override
protected ClusterBlockException checkBlock(GetDatafeedsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}
}
Loading