The GitHub Actions job "CI" on 
rocketmq-dashboard.git/fix/outbox-bookkeeping-utc has failed.
Run started by GitHub user unbridled-41 (triggered by unbridled-41).

Head commit for run:
f3df92e92d6e0b11a5f2bf461f55f69473b99b22 / unbridled-41 
<[email protected]>
fix(alert): write the notification-delivery bookkeeping columns in UTC

Every instant of a delivery row is written from the service's UTC clock
(utcNow() = LocalDateTime.now(ZoneOffset.UTC): next_attempt_at, 
sending_started_at,
delivered_at), the mapper ships gmt_create to the console as createdAt, the page
renders it with formatUtcDateTime and the retention cutoff is a UTC instant - 
but
the two bookkeeping columns were left to the database:

    RmqAlertNotificationOutbox has no gmtCreate field, and no update path named
    gmt_modified, so MySQL's DEFAULT CURRENT_TIMESTAMP / ON UPDATE 
CURRENT_TIMESTAMP
    filled both in the session's zone (deploy/docker-compose.yml sets
    TZ=Asia/Shanghai for both the database and the server).

On the deployed system that shifts the deliveries page by the whole offset: the
"Created At" column and the delivery drawer print a time eight hours ahead (a 
row
created three seconds before delivery can print a later time than its delivery),
the page's time-range filter selects the wrong window because it sends UTC 
bounds,
and cleanupTerminalDeliveries keeps terminal rows for eight extra hours because 
it
compares gmt_modified (server zone) against a UTC cutoff.

Stamp both columns from the same UTC clock on insert and on every update path
(the retry release, the delivered transition, the silence deferral, the retry
backoff, claimForDispatch and renewClaim).

Tests (server/): mvn -o -B -ntp test 
-Dtest='org.apache.rocketmq.studio.ops.alert.**'
-> Tests run: 328, Failures: 0, Errors: 0.
- new enqueueStampsBothBookkeepingColumnsInUtcTest and
  retryingAFailedDeliveryStampsTheModifiedInstantTest fail before this change 
(the
  captured row carries no UTC instant; the SET clause lacks gmt_modified) and 
pass
  after it, with the JVM default zone set to Asia/Shanghai so the assertion 
cannot
  pass by accident.
- mvn -o -B -ntp checkstyle:check passes.

Note: an earlier pull request with this fix (#4949) was closed by the stale bot
after seven days of inactivity, not on technical grounds; this branch is 
rebased on
the current trunk and keeps the delivery time filter that landed after it.

Report URL: 
https://github.com/apache/rocketmq-dashboard/actions/runs/37969591156

With regards,
GitHub Actions via GitBox

Reply via email to