Skip to content

Commit 1da980c

Browse files
authored
O3-5396: Service queues duplicates detection needs additional safety (#97)
1 parent 6ca37a7 commit 1da980c

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

api/src/main/java/org/openmrs/module/queue/api/dao/impl/QueueEntryDaoImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import javax.persistence.criteria.Predicate;
1515
import javax.persistence.criteria.Root;
1616

17+
import java.time.temporal.ChronoUnit;
1718
import java.util.ArrayList;
1819
import java.util.Collection;
1920
import java.util.Date;
@@ -116,7 +117,7 @@ public boolean updateIfUnmodified(QueueEntry queueEntry, Date expectedDateChange
116117
}
117118

118119
javax.persistence.Query query = session.createQuery(jpql.toString());
119-
query.setParameter("endedAt", queueEntry.getEndedAt());
120+
query.setParameter("endedAt", Date.from(queueEntry.getEndedAt().toInstant().truncatedTo(ChronoUnit.SECONDS)));
120121
query.setParameter("id", queueEntry.getQueueEntryId());
121122
if (expectedDateChanged != null) {
122123
query.setParameter("expectedDateChanged", expectedDateChanged);

integration-tests/src/test/java/org/openmrs/module/queue/validators/QueueEntryValidatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,8 @@ public void shouldNotRejectNonOverlappingQueueEntriesForSamePatientAndQueue() {
319319
firstEntry.setPatient(patient);
320320
firstEntry.setStatus(validStatus);
321321
firstEntry.setPriority(validPriority);
322-
firstEntry.setStartedAt(DateUtils.addHours(now, -2));
323-
firstEntry.setEndedAt(DateUtils.addHours(now, -1));
322+
firstEntry.setStartedAt(DateUtils.addHours(now, -1));
323+
firstEntry.setEndedAt(now);
324324
services.getQueueEntryService().saveQueueEntry(firstEntry);
325325

326326
QueueEntry secondEntry = new QueueEntry();

0 commit comments

Comments
 (0)