[ML] Only check licensing in the transport action of the open job and start datafeed apis.

Original commit: elastic/x-pack-elasticsearch@a59ef8884c
This commit is contained in:
Martijn van Groningen 2017-04-14 08:57:44 +02:00
parent 10390a5e50
commit e93b447b9c
3 changed files with 24 additions and 36 deletions

View File

@ -307,8 +307,8 @@ public class MachineLearning implements ActionPlugin {
new InvalidLicenseEnforcer(settings, licenseState, threadPool, datafeedManager, autodetectProcessManager); new InvalidLicenseEnforcer(settings, licenseState, threadPool, datafeedManager, autodetectProcessManager);
PersistentTasksExecutorRegistry persistentTasksExecutorRegistry = new PersistentTasksExecutorRegistry(Settings.EMPTY, Arrays.asList( PersistentTasksExecutorRegistry persistentTasksExecutorRegistry = new PersistentTasksExecutorRegistry(Settings.EMPTY, Arrays.asList(
new OpenJobAction.OpenJobPersistentTasksExecutor(settings, licenseState, clusterService, autodetectProcessManager), new OpenJobAction.OpenJobPersistentTasksExecutor(settings, clusterService, autodetectProcessManager),
new StartDatafeedAction.StartDatafeedPersistentTasksExecutor(settings, licenseState, datafeedManager) new StartDatafeedAction.StartDatafeedPersistentTasksExecutor(settings, datafeedManager)
)); ));
return Arrays.asList( return Arrays.asList(

View File

@ -447,15 +447,13 @@ public class OpenJobAction extends Action<OpenJobAction.Request, OpenJobAction.R
public static class OpenJobPersistentTasksExecutor extends PersistentTasksExecutor<JobParams> { public static class OpenJobPersistentTasksExecutor extends PersistentTasksExecutor<JobParams> {
private final AutodetectProcessManager autodetectProcessManager; private final AutodetectProcessManager autodetectProcessManager;
private final XPackLicenseState licenseState;
private final int maxNumberOfOpenJobs; private final int maxNumberOfOpenJobs;
private volatile int maxConcurrentJobAllocations; private volatile int maxConcurrentJobAllocations;
public OpenJobPersistentTasksExecutor(Settings settings, XPackLicenseState licenseState, public OpenJobPersistentTasksExecutor(Settings settings, ClusterService clusterService,
ClusterService clusterService, AutodetectProcessManager autodetectProcessManager) { AutodetectProcessManager autodetectProcessManager) {
super(settings, TASK_NAME, ThreadPool.Names.MANAGEMENT); super(settings, TASK_NAME, ThreadPool.Names.MANAGEMENT);
this.licenseState = licenseState;
this.autodetectProcessManager = autodetectProcessManager; this.autodetectProcessManager = autodetectProcessManager;
this.maxNumberOfOpenJobs = AutodetectProcessManager.MAX_RUNNING_JOBS_PER_NODE.get(settings); this.maxNumberOfOpenJobs = AutodetectProcessManager.MAX_RUNNING_JOBS_PER_NODE.get(settings);
this.maxConcurrentJobAllocations = MachineLearning.CONCURRENT_JOB_ALLOCATIONS.get(settings); this.maxConcurrentJobAllocations = MachineLearning.CONCURRENT_JOB_ALLOCATIONS.get(settings);
@ -470,7 +468,6 @@ public class OpenJobAction extends Action<OpenJobAction.Request, OpenJobAction.R
@Override @Override
public void validate(JobParams params, ClusterState clusterState) { public void validate(JobParams params, ClusterState clusterState) {
if (licenseState.isMachineLearningAllowed()) {
// If we already know that we can't find an ml node because all ml nodes are running at capacity or // If we already know that we can't find an ml node because all ml nodes are running at capacity or
// simply because there are no ml nodes in the cluster then we fail quickly here: // simply because there are no ml nodes in the cluster then we fail quickly here:
MlMetadata mlMetadata = clusterState.metaData().custom(MlMetadata.TYPE); MlMetadata mlMetadata = clusterState.metaData().custom(MlMetadata.TYPE);
@ -483,9 +480,6 @@ public class OpenJobAction extends Action<OpenJobAction.Request, OpenJobAction.R
logger.warn("[{}] {}", params.getJobId(), msg); logger.warn("[{}] {}", params.getJobId(), msg);
throw new ElasticsearchStatusException(msg, RestStatus.TOO_MANY_REQUESTS); throw new ElasticsearchStatusException(msg, RestStatus.TOO_MANY_REQUESTS);
} }
} else {
throw LicenseUtils.newComplianceException(XPackPlugin.MACHINE_LEARNING);
}
} }
@Override @Override

View File

@ -473,12 +473,10 @@ public class StartDatafeedAction
public static class StartDatafeedPersistentTasksExecutor extends PersistentTasksExecutor<DatafeedParams> { public static class StartDatafeedPersistentTasksExecutor extends PersistentTasksExecutor<DatafeedParams> {
private final DatafeedManager datafeedManager; private final DatafeedManager datafeedManager;
private final XPackLicenseState licenseState;
private final IndexNameExpressionResolver resolver; private final IndexNameExpressionResolver resolver;
public StartDatafeedPersistentTasksExecutor(Settings settings, XPackLicenseState licenseState, DatafeedManager datafeedManager) { public StartDatafeedPersistentTasksExecutor(Settings settings, DatafeedManager datafeedManager) {
super(settings, TASK_NAME, ThreadPool.Names.MANAGEMENT); super(settings, TASK_NAME, ThreadPool.Names.MANAGEMENT);
this.licenseState = licenseState;
this.datafeedManager = datafeedManager; this.datafeedManager = datafeedManager;
this.resolver = new IndexNameExpressionResolver(settings); this.resolver = new IndexNameExpressionResolver(settings);
} }
@ -490,7 +488,6 @@ public class StartDatafeedAction
@Override @Override
public void validate(DatafeedParams params, ClusterState clusterState) { public void validate(DatafeedParams params, ClusterState clusterState) {
if (licenseState.isMachineLearningAllowed()) {
MlMetadata mlMetadata = clusterState.metaData().custom(MlMetadata.TYPE); MlMetadata mlMetadata = clusterState.metaData().custom(MlMetadata.TYPE);
PersistentTasksCustomMetaData tasks = clusterState.getMetaData().custom(PersistentTasksCustomMetaData.TYPE); PersistentTasksCustomMetaData tasks = clusterState.getMetaData().custom(PersistentTasksCustomMetaData.TYPE);
StartDatafeedAction.validate(params.getDatafeedId(), mlMetadata, tasks); StartDatafeedAction.validate(params.getDatafeedId(), mlMetadata, tasks);
@ -500,9 +497,6 @@ public class StartDatafeedAction
+ "], allocation explanation [" + assignment.getExplanation() + "]"; + "], allocation explanation [" + assignment.getExplanation() + "]";
throw new ElasticsearchException(msg); throw new ElasticsearchException(msg);
} }
} else {
throw LicenseUtils.newComplianceException(XPackPlugin.MACHINE_LEARNING);
}
} }
@Override @Override