Skip to content

Commit

Permalink
Remove casts for TaskManager implementation
Browse files Browse the repository at this point in the history
It causes problems when profiling is enabled (as the autowired
object is a proxy instance instead of direct implementation class).
  • Loading branch information
mederly committed Apr 16, 2018
1 parent 15ca28d commit eb2df64
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 24 deletions.
Expand Up @@ -23,6 +23,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.HashMap;
Expand All @@ -43,6 +44,7 @@
*
* @author Pavol Mederly
*/
@Component
public class TaskManagerConfiguration {

private static final transient Trace LOGGER = TraceManager.getTrace(TaskManagerConfiguration.class);
Expand Down
Expand Up @@ -118,8 +118,10 @@ public class TaskManagerQuartzImpl implements TaskManager, BeanFactoryAware {
private static final String DOT_IMPL_CLASS = TaskManagerQuartzImpl.class.getName() + ".";
private static final String CLEANUP_TASKS = DOT_INTERFACE + "cleanupTasks";

@Autowired
private TaskManagerConfiguration configuration;

// instances of all the helper classes (see their definitions for their description)
private TaskManagerConfiguration configuration = new TaskManagerConfiguration();
private ExecutionManager executionManager = new ExecutionManager(this);
private ClusterManager clusterManager = new ClusterManager(this);
private StalledTasksWatcher stalledTasksWatcher = new StalledTasksWatcher(this);
Expand Down Expand Up @@ -1665,10 +1667,6 @@ public RepositoryService getRepositoryService() {
return repositoryService;
}

public void setConfiguration(TaskManagerConfiguration configuration) {
this.configuration = configuration;
}

public ExecutionManager getExecutionManager() {
return executionManager;
}
Expand Down
Expand Up @@ -44,7 +44,7 @@ public class NoOpTaskHandler implements WorkBucketAwareTaskHandler {

private NoOpTaskHandler() {}

public static void instantiateAndRegister(TaskManager taskManager) {
public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) {
if (instance == null) {
instance = new NoOpTaskHandler();
}
Expand All @@ -53,7 +53,7 @@ public static void instantiateAndRegister(TaskManager taskManager) {
taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_2, instance);
taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_3, instance);
taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_4, instance);
instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager;
instance.taskManagerImpl = taskManager;
}

@Override
Expand Down
Expand Up @@ -53,10 +53,10 @@ public class PartitioningTaskHandler implements TaskHandler {

private static final String DEFAULT_HANDLER_URI = "{masterTaskHandlerUri}#{index}";

private TaskManager taskManager;
private TaskManagerQuartzImpl taskManager;
private Function<Task, TaskPartitionsDefinition> partitionsDefinitionSupplier;

public PartitioningTaskHandler(TaskManager taskManager, Function<Task, TaskPartitionsDefinition> partitionsDefinitionSupplier) {
public PartitioningTaskHandler(TaskManagerQuartzImpl taskManager, Function<Task, TaskPartitionsDefinition> partitionsDefinitionSupplier) {
this.taskManager = taskManager;
this.partitionsDefinitionSupplier = partitionsDefinitionSupplier;
}
Expand Down Expand Up @@ -333,7 +333,7 @@ private <T> T applyDefaults(Function<TaskPartitionDefinition, T> localGetter, Fu
}

private PrismContext getPrismContext() {
return ((TaskManagerQuartzImpl) taskManager).getPrismContext();
return taskManager.getPrismContext();
}

private void applyDeltas(TaskType subtask, Collection<ItemDelta<?, ?>> deltas) throws SchemaException {
Expand Down
Expand Up @@ -49,11 +49,11 @@ public class WaitForSubtasksByPollingTaskHandler implements TaskHandler {

private WaitForSubtasksByPollingTaskHandler() {}

public static void instantiateAndRegister(TaskManager taskManager) {
public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) {
if (instance == null)
instance = new WaitForSubtasksByPollingTaskHandler();
taskManager.registerHandler(HANDLER_URI, instance);
instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager;
instance.taskManagerImpl = taskManager;
}

@Override
Expand Down
Expand Up @@ -26,8 +26,6 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;

import java.util.List;

/**
* This is very simple task handler that causes the process to enter WAITING for OTHER_TASKS state.
*
Expand All @@ -43,12 +41,12 @@ public class WaitForTasksTaskHandler implements TaskHandler {

private WaitForTasksTaskHandler() {}

public static void instantiateAndRegister(TaskManager taskManager) {
public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) {
if (instance == null) {
instance = new WaitForTasksTaskHandler();
}
taskManager.registerHandler(HANDLER_URI, instance);
instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager;
instance.taskManagerImpl = taskManager;
}

@Override
Expand Down
Expand Up @@ -35,7 +35,6 @@
import com.evolveum.midpoint.task.api.TaskExecutionStatus;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.task.quartzimpl.TaskManagerConfiguration;
import com.evolveum.midpoint.task.quartzimpl.TaskManagerQuartzImpl;
import com.evolveum.midpoint.task.quartzimpl.TaskQuartzImpl;
import com.evolveum.midpoint.task.quartzimpl.work.segmentation.content.WorkBucketContentHandler;
import com.evolveum.midpoint.task.quartzimpl.work.segmentation.content.WorkBucketContentHandlerRegistry;
Expand Down Expand Up @@ -85,6 +84,7 @@ public class WorkStateManager {
@Autowired private PrismContext prismContext;
@Autowired private WorkSegmentationStrategyFactory strategyFactory;
@Autowired private WorkBucketContentHandlerRegistry handlerFactory;
@Autowired private TaskManagerConfiguration configuration;

private static final long DYNAMIC_SLEEP_INTERVAL = 100L;

Expand Down Expand Up @@ -254,22 +254,18 @@ private WorkBucketType getWorkBucketMultiNode(Context ctx, long freeBucketWaitTi
}

private BackoffComputer createBackoffComputer() {
TaskManagerConfiguration c = getConfiguration();
TaskManagerConfiguration c = configuration;
return new ExponentialBackoffComputer(c.getWorkAllocationMaxRetries(), c.getWorkAllocationInitialDelay(),
c.getWorkAllocationRetryExponentialThreshold());
}

private long getFreeBucketWaitInterval() {
return freeBucketWaitIntervalOverride != null ? freeBucketWaitIntervalOverride :
getConfiguration().getWorkAllocationDefaultFreeBucketWaitInterval();
configuration.getWorkAllocationDefaultFreeBucketWaitInterval();
}

private long getInitialDelay() {
return getConfiguration().getWorkAllocationInitialDelay();
}

private TaskManagerConfiguration getConfiguration() {
return ((TaskManagerQuartzImpl) taskManager).getConfiguration();
return configuration.getWorkAllocationInitialDelay();
}

private void setOrUpdateEstimatedNumberOfBuckets(Task task, WorkSegmentationStrategy workStateStrategy, OperationResult result)
Expand Down

0 comments on commit eb2df64

Please sign in to comment.