@Override public @Nonnull List<Execution> retrievePipelinesForPipelineConfigIdsBetweenBuildTimeBoundary( @Nonnull List<String> pipelineConfigIds, long buildTimeStartBoundary, long buildTimeEndBoundary, ExecutionCriteria executionCriteria ) { List<Execution> executions = new ArrayList<>(); allRedisDelegates() .forEach(d -> { List<Execution> pipelines = getPipelinesForPipelineConfigIdsBetweenBuildTimeBoundaryFromRedis( d, pipelineConfigIds, buildTimeStartBoundary, buildTimeEndBoundary ); executions.addAll(pipelines); }); return executions.stream() .filter( it -> { if (executionCriteria.getStatuses().isEmpty()) { return true; } else { return executionCriteria.getStatuses().contains(it.getStatus()); } }) .collect(Collectors.toList()); }
@Override public @Nonnull Observable<Execution> retrieve( @Nonnull ExecutionType type, @Nonnull ExecutionCriteria criteria ) { List<Observable<Execution>> observables = allRedisDelegates() .stream() .map(d -> { Observable<Execution> observable = all(type, d); if (!criteria.getStatuses().isEmpty()) { observable = observable.filter(execution -> criteria.getStatuses().contains(execution.getStatus())); } if (criteria.getPageSize() > 0) { observable = observable.limit(criteria.getPageSize()); } return observable; } ) .collect(Collectors.toList()); return Observable.merge(observables); }
if (!criteria.getStatuses().isEmpty()) { allRedisDelegates().forEach(d -> d.withCommandsClient(c -> { List<String> orchestrationKeys = new ArrayList<>(c.smembers(allOrchestrationsKey)); Set<ExecutionStatus> allowedExecutionStatuses = new HashSet<>(criteria.getStatuses()); List<ExecutionStatus> statuses = fetchMultiExecutionStatus(d, orchestrationKeys.stream() (String key) -> ( redisClientDelegate.withCommandsClient(c -> { if (!criteria.getStatuses().isEmpty()) { return orchestrationIds;
if (!criteria.getStatuses().isEmpty()) { allRedisDelegates().forEach(d -> d.withCommandsClient(c -> { List<String> pipelineKeys = new ArrayList<>(c.zrevrange(executionsByPipelineKey(pipelineConfigId), 0, -1)); Set<ExecutionStatus> allowedExecutionStatuses = new HashSet<>(criteria.getStatuses()); List<ExecutionStatus> statuses = fetchMultiExecutionStatus(d, pipelineKeys.stream() (RedisClientDelegate redisClientDelegate, Iterable<String> pipelineIds) -> (String key) -> !criteria.getStatuses().isEmpty() ? pipelineIds : redisClientDelegate.withCommandsClient(p -> { return p.zrevrange(key, 0, (criteria.getPageSize() - 1));