All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.hubspot.singularity.data.history.TaskHistoryHelper Maven / Gradle / Ivy
package com.hubspot.singularity.data.history;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.google.common.base.Optional;
import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.hubspot.singularity.OrderDirection;
import com.hubspot.singularity.SingularityTask;
import com.hubspot.singularity.SingularityTaskHistory;
import com.hubspot.singularity.SingularityTaskHistoryQuery;
import com.hubspot.singularity.SingularityTaskId;
import com.hubspot.singularity.SingularityTaskIdHistory;
import com.hubspot.singularity.config.SingularityConfiguration;
import com.hubspot.singularity.data.RequestManager;
import com.hubspot.singularity.data.TaskManager;
@Singleton
public class TaskHistoryHelper extends BlendedHistoryHelper {
private final TaskManager taskManager;
private final RequestManager requestManager;
private final HistoryManager historyManager;
private final SingularityConfiguration configuration;
@Inject
public TaskHistoryHelper(TaskManager taskManager, HistoryManager historyManager, RequestManager requestManager, SingularityConfiguration configuration) {
this.taskManager = taskManager;
this.historyManager = historyManager;
this.requestManager = requestManager;
this.configuration = configuration;
}
private List getFromZk(List requestIds) {
final List inactiveTasksInZk = taskManager.getInactiveTaskIds(requestIds);
return getTaskHistoriesFor(taskManager, inactiveTasksInZk);
}
private List getRequestIds(SingularityTaskHistoryQuery query) {
if (query.getRequestId().isPresent()) {
return Collections.singletonList(query.getRequestId().get());
}
return requestManager.getAllRequestIds();
}
@Override
protected List getFromZk(SingularityTaskHistoryQuery query) {
final List filteredHistory = Lists.newArrayList(Iterables.filter(getFromZk(getRequestIds(query)), query.getHistoryFilter()));
Collections.sort(filteredHistory, query.getComparator());
return filteredHistory;
}
@Override
protected List getFromHistory(SingularityTaskHistoryQuery query, int historyStart, int numFromHistory) {
return historyManager.getTaskIdHistory(query.getRequestId(), query.getDeployId(), query.getRunId(), query.getHost(), query.getLastTaskStatus(), query.getStartedBefore(),
query.getStartedAfter(), query.getUpdatedBefore(), query.getUpdatedAfter(), query.getOrderDirection(), Optional.of(historyStart), numFromHistory);
}
public Optional getTask(SingularityTaskId taskId) {
Optional maybeTask = taskManager.getTask(taskId);
if (maybeTask.isPresent()) {
return maybeTask;
}
Optional history = historyManager.getTaskHistory(taskId.getId());
if (history.isPresent()) {
return Optional.of(history.get().getTask());
}
return Optional.absent();
}
public Optional getByRunId(String requestId, String runId) {
for (SingularityTaskIdHistory history : getFromZk(Collections.singletonList(requestId))) {
if (history.getRunId().isPresent() && history.getRunId().get().equals(runId)) {
return Optional.of(history);
}
}
Optional history = historyManager.getTaskHistoryByRunId(requestId, runId);
if (history.isPresent()) {
return Optional.of(SingularityTaskIdHistory.fromTaskIdAndTaskAndUpdates(history.get().getTask().getTaskId(), history.get().getTask(), history.get().getTaskUpdates()));
}
return Optional.absent();
}
@Override
protected boolean queryUsesZkFirst(SingularityTaskHistoryQuery query) {
if (configuration.isTaskHistoryQueryUsesZkFirst()) {
return true;
}
if (!query.getRequestId().isPresent()) {
return false;
}
if (query.getLastTaskStatus().isPresent()) {
return false;
}
if (query.getHost().isPresent()) {
return false;
}
if (query.getStartedAfter().isPresent()) {
return false;
}
if (query.getStartedBefore().isPresent()) {
return false;
}
if (query.getOrderDirection().isPresent() && query.getOrderDirection().get() == OrderDirection.ASC) {
return false;
}
return true;
}
@Override
protected Comparator getComparator(SingularityTaskHistoryQuery query) {
return query.getComparator();
}
@Override
protected Optional getTotalCount(SingularityTaskHistoryQuery query) {
final int numFromZk = Collections2.filter(getFromZk(getRequestIds(query)), query.getHistoryFilter()).size();
final int numFromHistory = historyManager.getTaskIdHistoryCount(query.getRequestId(), query.getDeployId(), query.getRunId(), query.getHost(), query.getLastTaskStatus(), query.getStartedBefore(),
query.getStartedAfter(), query.getUpdatedBefore(), query.getUpdatedAfter());
return Optional.fromNullable(numFromZk + numFromHistory);
}
}