fix: converge inbound pallets and retries
This commit is contained in:
@@ -44,12 +44,13 @@ public interface FileExportOutboxMapper extends BaseMapper<FileExportOutbox> {
|
||||
int releaseExpiredClaims();
|
||||
|
||||
@Update("""
|
||||
UPDATE file_export_outbox o JOIN file_export_task t
|
||||
ON t.id=o.task_id AND t.dispatch_version=o.dispatch_version
|
||||
SET o.status='PENDING',o.next_retry_at=CURRENT_TIMESTAMP(3),o.lease_owner=NULL,o.lease_until=NULL
|
||||
WHERE o.status='SENT' AND o.sent_at<=DATE_SUB(CURRENT_TIMESTAMP(3), INTERVAL #{staleSeconds} SECOND)
|
||||
AND t.status='PENDING' AND t.next_retry_at<=DATE_SUB(CURRENT_TIMESTAMP(3), INTERVAL #{graceSeconds} SECOND)
|
||||
LIMIT 20
|
||||
UPDATE file_export_outbox
|
||||
SET status='PENDING',next_retry_at=CURRENT_TIMESTAMP(3),lease_owner=NULL,lease_until=NULL
|
||||
WHERE id IN (SELECT id FROM (SELECT o.id FROM file_export_outbox o JOIN file_export_task t
|
||||
ON t.id=o.task_id AND t.dispatch_version=o.dispatch_version
|
||||
WHERE o.status='SENT' AND o.sent_at<=DATE_SUB(CURRENT_TIMESTAMP(3), INTERVAL #{staleSeconds} SECOND)
|
||||
AND t.status='PENDING' AND t.next_retry_at<=DATE_SUB(CURRENT_TIMESTAMP(3), INTERVAL #{graceSeconds} SECOND)
|
||||
ORDER BY o.sent_at,o.id LIMIT 20) stale)
|
||||
""")
|
||||
int redispatchSent(@Param("staleSeconds") int staleSeconds, @Param("graceSeconds") int graceSeconds);
|
||||
|
||||
|
||||
@@ -22,6 +22,9 @@ class ExportMapperContractTest {
|
||||
String sql=update(FileExportOutboxMapper.class,"redispatchSent");
|
||||
assertTrue(sql.contains("o.status='SENT'"));
|
||||
assertTrue(sql.contains("t.dispatch_version=o.dispatch_version"));
|
||||
assertTrue(sql.contains("WHERE id IN (SELECT id FROM (SELECT o.id"));
|
||||
assertTrue(sql.contains("ORDER BY o.sent_at,o.id LIMIT 20"));
|
||||
assertFalse(sql.contains("SET o.status"));
|
||||
assertFalse(sql.contains("dispatch_version=dispatch_version+1"));
|
||||
assertFalse(sql.contains("QUARANTINED"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user