Backfill without overwriting a newer edit
A migration worker and a live request can touch the same row. Make the update conditional on the state the worker actually read.
Read articleAI implementation, software architecture, cloud operations and Australian technology policy.
100 articles in Software architecture
Page 2 of 6
A migration worker and a live request can touch the same row. Make the update conditional on the state the worker actually read.
Read articleCarry the version a user actually edited into the save request. Compare it atomically with the current record before replacing data.
Read articleTest the paths most likely to avoid the public contract: direct repository imports, background jobs and administrative updates. The same invariant should hold for each supported caller.
Read articleThe outbox's duplicate window is predictable. Stop the worker after broker acceptance and verify that replay does not repeat the consumer's business effect.
Read articleSequential retries can pass while concurrent requests still duplicate an effect. Use a barrier to make two callers compete for the same operation identity.
Read articleError contracts influence retries, forms and recovery. Test them with supported older clients, not only with a server-side schema validator.
Read articleA recovery path that only works when every corrective call succeeds is incomplete. Test the state left behind when compensation is rejected or its response is lost.
Read articleSimilar records expose missing scope in queries and caches. Use two isolated test tenants and exercise the same operation through every supported path.
Read articleHistorical messages exercise assumptions that fresh test fixtures miss. Test their final effects before relying on replay as a recovery tool.
Read articleA controlled interleaving can reproduce stale repopulation reliably. Ordinary load tests often miss this short but important race.
Read articleA fast command on a quiet database can wait behind live work. Test lock contention and cancellation before the release window.
Read articleA deterministic race test proves the capacity rule more clearly than a large burst of requests that may never overlap at the critical point.
Read articleDependency counts are useful signals, but the practical question is whether ordinary business changes remain understandable and local. Review actual change patterns.
Read articleQueue depth shows volume, but age shows how long a business change has been waiting. Track delivery and consumer completion as separate stages.
Read articleRepeated requests are normal in a retrying system. The important measure is whether they create additional business actions or leave the caller without a reliable outcome.
Read articleRequest counts are a starting point. Identify active callers, their business cycles and the operations still depending on the old contract before setting a retirement decision.
Read articleA coordinator's success rate can hide workflows that remain partly committed. Track the business states and their age, including failed or uncertain compensation.
Read articleInclude jobs, exports, caches and support tools in the evidence. A clean set of controller tests does not establish isolation across the application.
Read article