/** * Ordered by ascending id: oldest to newest */ public List<CeQueueDto> selectByMainComponentUuid(DbSession session, String projectUuid) { return mapper(session).selectByMainComponentUuid(projectUuid); }
public Optional<CeQueueDto> selectByUuid(DbSession session, String uuid) { return Optional.ofNullable(mapper(session).selectByUuid(uuid)); }
/** * Ordered by ascending id: oldest to newest */ public List<CeQueueDto> selectAllInAscOrder(DbSession session) { return mapper(session).selectAllInAscOrder(); }
public int countByStatusAndMainComponentUuid(DbSession dbSession, CeQueueDto.Status status, @Nullable String mainComponentUuid) { return mapper(dbSession).countByStatusAndMainComponentUuid(status, mainComponentUuid); }
public List<CeQueueDto> selectPending(DbSession dbSession) { return mapper(dbSession).selectPending(); }
public List<CeQueueDto> selectInProgressStartedBefore(DbSession dbSession, long date) { return mapper(dbSession).selectInProgressStartedBefore(date); }
public List<CeQueueDto> selectWornout(DbSession dbSession) { return mapper(dbSession).selectWornout(); }
public int deleteByUuid(DbSession session, String uuid, @Nullable DeleteIf deleteIf) { return mapper(session).deleteByUuid(uuid, deleteIf); }
public int countByStatus(DbSession dbSession, CeQueueDto.Status status) { return mapper(dbSession).countByStatusAndMainComponentUuid(status, null); }
public Optional<CeQueueDto> peek(DbSession session, String workerUuid) { List<String> eligibles = mapper(session).selectEligibleForPeek(ONE_RESULT_PAGINATION); if (eligibles.isEmpty()) { return Optional.empty(); } String eligible = eligibles.get(0); return tryToPeek(session, eligible, workerUuid); }
/** * Update all tasks for the specified worker uuid which are not PENDING to: * STATUS='PENDING', STARTED_AT=NULL, UPDATED_AT={now}. */ public int resetToPendingForWorker(DbSession session, String workerUuid) { return mapper(session).resetToPendingForWorker(workerUuid, system2.now()); }
public void resetTasksWithUnknownWorkerUUIDs(DbSession dbSession, Set<String> knownWorkerUUIDs) { if (knownWorkerUUIDs.isEmpty()) { mapper(dbSession).resetAllInProgressTasks(system2.now()); } else { // executeLargeUpdates won't call the SQL command if knownWorkerUUIDs is empty executeLargeUpdates(knownWorkerUUIDs, uuids -> mapper(dbSession).resetTasksWithUnknownWorkerUUIDs(uuids, system2.now())); } }
private Optional<CeQueueDto> tryToPeek(DbSession session, String eligibleTaskUuid, String workerUuid) { long now = system2.now(); int touchedRows = mapper(session).updateIf(eligibleTaskUuid, new UpdateIf.NewProperties(IN_PROGRESS, workerUuid, now, now), new UpdateIf.OldProperties(PENDING)); if (touchedRows != 1) { return Optional.empty(); } CeQueueDto result = mapper(session).selectByUuid(eligibleTaskUuid); session.commit(); return Optional.ofNullable(result); }
/** * Counts entries in the queue with the specified status for each specified main component uuid. * * The returned map doesn't contain any entry for main component uuids for which there is no entry in the queue (ie. * all entries have a value >= 0). */ public Map<String, Integer> countByStatusAndMainComponentUuids(DbSession dbSession, CeQueueDto.Status status, Set<String> projectUuids) { if (projectUuids.isEmpty()) { return emptyMap(); } ImmutableMap.Builder<String, Integer> builder = ImmutableMap.builder(); executeLargeUpdates( projectUuids, uuids -> { List<QueueCount> i = mapper(dbSession).countByStatusAndMainComponentUuids(status, projectUuids); i.forEach(o -> builder.put(o.getMainComponentUuid(), o.getTotal())); }); return builder.build(); }
public List<CeQueueDto> selectByQueryInDescOrder(DbSession dbSession, CeTaskQuery query, int pageSize) { if (query.isShortCircuitedByMainComponentUuids() || query.isOnlyCurrents() || query.getMaxExecutedAt() != null) { return emptyList(); } return mapper(dbSession).selectByQueryInDescOrder(query, new RowBounds(0, pageSize)); }
public int countByQuery(DbSession dbSession, CeTaskQuery query) { if (query.isShortCircuitedByMainComponentUuids() || query.isOnlyCurrents() || query.getMaxExecutedAt() != null) { return 0; } return mapper(dbSession).countByQuery(query); }
public CeQueueDto insert(DbSession session, CeQueueDto dto) { if (dto.getCreatedAt() == 0L || dto.getUpdatedAt() == 0L) { long now = system2.now(); dto.setCreatedAt(now); dto.setUpdatedAt(now); } mapper(session).insert(dto); return dto; }
/** * Ordered by ascending id: oldest to newest */ public List<CeQueueDto> selectByComponentUuid(DbSession session, String componentUuid) { return mapper(session).selectByComponentUuid(componentUuid); }
/** * Ordered by ascending id: oldest to newest */ public List<CeQueueDto> selectAllInAscOrder(DbSession session) { return mapper(session).selectAllInAscOrder(); }
public Optional<CeQueueDto> peek(DbSession session) { List<String> taskUuids = mapper(session).selectEligibleForPeek(ONE_ROW_LIMIT); if (taskUuids.isEmpty()) { return Optional.absent(); } String taskUuid = taskUuids.get(0); return tryToPeek(session, taskUuid); }