Skip to content

Commit

Permalink
RESTful service List Export Tasks does not return tasks which are not…
Browse files Browse the repository at this point in the history
… yet scheduled #1362
  • Loading branch information
vrindanayak committed May 2, 2018
1 parent ade6f33 commit 6208b04
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ long cancelExportTasks(Predicate matchQueueMessage, Predicate matchExportTask, Q
boolean rescheduleExportTask(Long pk, ExporterDescriptor exporter, QueueMessageEvent queueEvent)
throws IllegalTaskStateException, DifferentDeviceException;

int deleteTasks(Predicate matchQueueMessage, Predicate matchExportTask);
int deleteTasks(QueueMessage.Status status, Predicate matchQueueMessage, Predicate matchExportTask);

List<ExportBatch> listExportBatches(Predicate matchQueueBatch, Predicate matchExportBatch,
OrderSpecifier<Date> order, int offset, int limit);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -394,10 +394,18 @@ public boolean rescheduleExportTask(Long pk, ExporterDescriptor exporter, QueueM
}

@Override
public int deleteTasks(Predicate matchQueueMessage, Predicate matchExportTask) {
int count = 0;
public int deleteTasks(QueueMessage.Status status, Predicate matchQueueMessage, Predicate matchExportTask) {
ArchiveDeviceExtension arcDev = device.getDeviceExtension(ArchiveDeviceExtension.class);
int deleteTaskFetchSize = arcDev.getQueueTasksFetchSize();
return status == QueueMessage.Status.TO_SCHEDULE
? deleteToScheduleTasks(matchExportTask, deleteTaskFetchSize)
: status == null
? deleteTasks(matchQueueMessage, matchExportTask, deleteTaskFetchSize) + deleteToScheduleTasks(matchExportTask, deleteTaskFetchSize)
: deleteTasks(matchQueueMessage, matchExportTask, deleteTaskFetchSize);
}

private int deleteTasks(Predicate matchQueueMessage, Predicate matchExportTask, int deleteTaskFetchSize) {
int count = 0;
HibernateQuery<QueueMessage> queueMsgQuery = new HibernateQuery<QueueMessage>(em.unwrap(Session.class))
.from(QQueueMessage.queueMessage)
.where(matchQueueMessage);
Expand All @@ -419,6 +427,22 @@ public int deleteTasks(Predicate matchQueueMessage, Predicate matchExportTask) {
return count;
}

private int deleteToScheduleTasks(Predicate matchExportTask, int deleteTaskFetchSize) {
int count = 0;
List<Long> exportTasks;
do {
exportTasks = new HibernateQuery<ExportTask>(em.unwrap(Session.class))
.select(QExportTask.exportTask.pk)
.from(QExportTask.exportTask)
.where(matchExportTask, QExportTask.exportTask.queueMessage.isNull())
.limit(deleteTaskFetchSize).fetch();
count += new HibernateDeleteClause(em.unwrap(Session.class), QExportTask.exportTask)
.where(QExportTask.exportTask.pk.in(exportTasks))
.execute();
} while (exportTasks.size() >= deleteTaskFetchSize);
return count;
}

@Override
public List<ExportBatch> listExportBatches(Predicate matchQueueBatch, Predicate matchExportBatch,
OrderSpecifier<Date> order, int offset, int limit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,10 @@ public Response deleteTask(@PathParam("taskPK") long pk) {
public String deleteTasks() {
logRequest();
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.DeleteTasks);
int deleted = mgr.deleteTasks(
QueueMessage.Status status = status();
int deleted = mgr.deleteTasks(status,
MatchTask.matchQueueMessage(
null, deviceName, status(), batchID, null, null, null, null),
null, deviceName, status, batchID, null, null, null, null),
MatchTask.matchExportTask(exporterID, deviceName, studyUID, createdTime, updatedTime));
queueEvent.setCount(deleted);
bulkQueueMsgEvent.fire(queueEvent);
Expand Down

0 comments on commit 6208b04

Please sign in to comment.