Repository navigation
Avoid rewriting unchanged retained waits - #941
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #941 +/- ##
=======================================
Coverage 93.82% 93.82%
=======================================
Files 578 578
Lines 79683 79725 +42
=======================================
+ Hits 74760 74803 +43
+ Misses 4923 4922 -1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
rmcdaniel
left a comment
There was a problem hiding this comment.
General ordinary source review at exact head c608431 / tree 44112954d677f6cbde7a4d3cb88492f22a4118b8: no blocking source or compatibility concern found. Reviewed the three product files plus the focused regression surface. Stored positions are now status-independent chronological ordinals using the same millisecond/tie identity as the canonical wait views; preserves the prior open/resolved/cancelled presentation for both legacy and reprojected rows. Payload equivalence remains strict for list/scalar/null/type changes while tolerating JSON object-key normalization, and timestamp equivalence compares actual instants only under the configured cast. The existing idempotent upsert, model-hook, configured-connection, rollback, missing-row, and independent-insert behavior remains covered. Native parity reports no wire/fixture change. This review is source-only and exact-head-bound; merge/release still waits for the owner's terminal full qualification and any head change requires re-review.
rmcdaniel
left a comment
There was a problem hiding this comment.
General ordinary source review at exact head c608431 / tree 44112954d677f6cbde7a4d3cb88492f22a4118b8: no blocking source or compatibility concern found.
Reviewed the three product files plus the focused regression surface. Stored positions are now status-independent chronological ordinals using the same millisecond/tie identity as the canonical wait views; inDisplayOrder() preserves the prior open/resolved/cancelled presentation for both legacy and reprojected rows. Payload equivalence remains strict for list/scalar/null/type changes while tolerating JSON object-key normalization, and timestamp equivalence compares actual instants only under the configured cast. The existing idempotent upsert, model-hook, configured-connection, rollback, missing-row, and independent-insert behavior remains covered. Native parity reports no wire/fixture change.
This review is source-only and exact-head-bound; merge/release still waits for the owner's terminal full qualification, and any head change requires re-review.
|
Exact source qualification is terminal on
A separate local disk-backed full unit run is still active and has errors under diagnosis. It is not counted as passing; suspected tracing controls pass separately in a RAM-backed fixture (3 tests / 323 assertions). The complete hosted suite above passed independently. PR #941 is ready for source review. The package owner has acknowledged one compatible patch release with the separate #942 HTTP/protocol correction. Publication and ordinary installed-package acceptance remain required before #899 closes. Published Waterline 2.13.0 is installed in the consumer for its bounded wait-resource verification. Native compatibility and its separate write-churn follow-up are recorded in the parity receipt. |
|
The source candidate now also passes the ordinary client resource check with unchanged, published Waterline 2.13.0 /
These runs deliberately override Workflow’s autoload path to the unreleased Sonar finding Source qualification and publication remain separate. #899 stays open through the coordinated compatible patch and its ordinary installed consumer verification. |
|
The three tracing groups corresponding to the local error positions now pass together with RAM-backed fixture storage and PCOV enabled: 16 tests / 2,161 assertions, PHP 8.3.36, exact unchanged The original slower disk-backed full run remains active so its final error diagnostics can be retained; it is still not counted as passing. Complete hosted qualification remains 22 successful jobs, including 4,997 unit tests / 71,383 assertions and the coverage ratchet. No source change or gate relaxation was needed for these controls. |



Retained wait rows are rewritten as a workflow progresses because status-ranked positions shift, MySQL reorders JSON object keys, and PostgreSQL can trim timestamp fractions. This makes a long workflow update rows whose logical state has not changed.
Keep stored positions chronological and apply canonical status priority when reading waits. Compare standard JSON payloads and UTC timestamps by their typed values while preserving list order, scalar/null distinctions, model hooks and configured casts. The shared unique-key recovery helper is unchanged; there is no schema or protocol change.
The same real 65-signal workload completes on published Workflow 2.14.0 and this candidate on SQLite, MySQL and PostgreSQL. At 64 retained waits, wait-table UPDATEs fall from 128 (SQLite) / 256 (MySQL and PostgreSQL) to 2, and timestamp-only changes from 63 to 0. Both versions issue 9 SELECTs and 1 INSERT at that checkpoint. Bounded measurements and limits.
Validation at exact head
c608431d4250b731b6f261fca540d59028006712:The consumer now normally installs published 2.14.1 at
af9dbadb; the three affected source files are byte-identical to the 2.14.0 baseline. Native open-wait reads remain compatible. Native currently ranks only open waits; resolved native-written rows can retain stale ordinals. Server #783 under #325 will align all retained ordinals and avoid unchanged position writes before mixed native-to-PHP retained-order handoff. The native owner confirmed no PHP source or wire/fixture change is needed in #941.Refs #899. Keep this issue open through source review, compatible publication and ordinary installed-package acceptance. The next compatible patch is coordinated with the package owner's HTTP/protocol correction; no tag has been selected here.