Ultimate

X_TENANT_WRITE_CROSSED

Means

a call by one tenant changed another tenant's row

Typical cause

the exercise pass called a primitive as tenant B with A's own input (A's ids bound in, where it takes any), and a row seeded for A hashed differently after B's call, or was gone — by an id B chose, or by a statement no tenant predicate scopes. Never on a tenant: 'none' job handed none of A's ids: its run is the same whoever enqueues it. The finding names the table and the row's id

Fix

x exercise <name> --json — then write the named row through the repository scoped to ctx.actor, never by the input id alone, nor by an unscoped statement

Listed under Testing

This page as markdown