class TaskEvictionStep {

    public Map<String, TaskRelocationStatus> evict(Map<String, TaskRelocationPlan> taskToEvict) {
        Stopwatch stopwatch = Stopwatch.createStarted();
        try {
            Map<String, TaskRelocationStatus> result = execute(taskToEvict);
            metrics.onSuccess(result.size(), stopwatch.elapsed(TimeUnit.MILLISECONDS));
            logger.debug("Eviction result: {}", result);
            return result;
        } catch (Exception e) {
            logger.error("Step processing error", e);
            metrics.onError(stopwatch.elapsed(TimeUnit.MILLISECONDS));
            throw e;
        }
    }

    public  TaskEvictionStep(EvictionServiceClient evictionServiceClient,
                            TitusRuntime titusRuntime,
                            RelocationTransactionLogger transactionLog,
                            Scheduler scheduler);

}