db-migrations-expand-contract: add a dedicated reproduction for the DDL-collision exception

While writing the article, chapter 14's first failure mode (a concurrent statement
seeing "Table CUSTOMERS not found" while DROP COLUMN runs) was described from the
live load-generator run but had no dedicated, committed reproduction of its own -
CustomerService's own retry would silently absorb it if triggered through the
service layer. DdlCollisionExceptionTest reproduces it directly at the raw JDBC
level, and the chapter and README now link to its captured transcript.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019Fb7vW8vLyLKngBc4R3huA
This commit is contained in:
2026-09-16 19:33:31 +00:00
co-authored by Claude Sonnet 5
parent e478eafda3
commit a875bea55a
4 changed files with 124 additions and 7 deletions
@@ -0,0 +1,10 @@
==============================================================================
Failure mode 1: a concurrent statement that collides with DROP COLUMN, and is told so
==============================================================================
captured: 2026-09-16T19:29:03.872467327Z
attempts needed to reproduce the race: 4 of 20
successful reads while DROP COLUMN was in flight: 222
reads that collided with the in-flight DROP COLUMN: 1
example: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "CUSTOMERS" not found; SQL statement:
SELECT COUNT(*) FROM customers [42102-240]