2.2 KiB
Development database write smoke
This executable is deliberately separate from the read-only DbSmoke tool. It
does not load database configuration or make a database call unless the exact
write acknowledgement is present:
dotnet run --project tools/MBN_STOCK_WEBVIEW.DbWriteSmoke/MBN_STOCK_WEBVIEW.DbWriteSmoke.csproj -- `
--i-understand-this-writes-development-database
Use --configuration <path> only when the normal LocalAppData configuration is
not the intended development configuration. Credentials, SQL, generated
identities, and database values are never printed.
The plan covers every migrated database writer:
- all four Oracle GraphE
INPUT_*screens; - Oracle AList/PList definition creation and item replacement;
- ThemeA KRX (Oracle) and NXT (MariaDB) creation;
- EList expert creation (Oracle).
Each scenario uses a legacy-column-safe 20-character
MBW<UTC-date><40-bit nonce><scenario> name,
proves that name is absent, performs each production-service mutation once,
reads the row back through the production read service, deletes it in finally,
and verifies absence. Numeric legacy keys cannot contain the prefix, so their
production next-code service supplies the numeric key and the conditional insert
still rejects a concurrent collision without overwriting an existing row. A
bound, read-only child-row preflight also rejects keys that have legacy orphaned
PLAY_LIST, SB_ITEM, or RECOMMEND_LIST rows, so cleanup cannot delete an
older row.
Both read and write retries are disabled. If a mutation outcome is unknown, the tool stops immediately and issues no retry, cleanup mutation, or later scenario. Its redacted output then reports that the uniquely prefixed row may require manual inspection.
If a known-committed manual smoke row could not be parsed or deleted, reconcile only the tool-owned current-UTC-date namespace with:
dotnet run --project tools/MBN_STOCK_WEBVIEW.DbWriteSmoke/MBN_STOCK_WEBVIEW.DbWriteSmoke.csproj -- `
--reconcile-known-owned-manual-residue `
--i-understand-this-writes-development-database
The recovery refuses a truncated or non-singular per-table match and never retries a delete.