slachiewicz opened a new pull request, #2545:
URL: https://github.com/apache/iceberg-go/pull/2545

   Fixes #1793
   
   ## What
   
   The file-backed SQLite DSN the test suite shares now carries a busy timeout, 
applied to every pooled connection:
   
   - mattn (cgo): `?_busy_timeout=5000`
   - modernc (no cgo): `?_pragma=busy_timeout(5000)`
   
   The suite branches on `sqliteshim.DriverName()` because the two drivers use 
different DSN parameter syntax (called out in kevinjqliu's analysis on #1793), 
and CI runs both.
   
   ## Why
   
   The concurrent table/view collision tests expect the losing create to 
observe the winner's commit and return the 
`ErrTableAlreadyExists`/`ErrViewAlreadyExists` catalog sentinel, but on loaded 
ubuntu runners the losing writer's retry budget (`retrySerializableWriteTx`, 
attempts at 0/10/30/70/150/310ms) ran out first and the caller got raw 
`SQLITE_BUSY`. Most recent instance: PR #2376's CI ([job 
log](https://github.com/apache/iceberg-go/actions/runs/42457673447/job/128660063939),
 which does not touch `catalog/sql`). #2036 widened the budget once already; as 
kevinjqliu noted, the catalog is doing the right thing — the test just isn't 
configured as the `NewCatalog` doc already prescribes for SQLite callers with 
concurrent writers.
   
   ## Notes
   
   - `TestCreateNamespaceConcurrent` already appended `busy_timeout(10000)` to 
the DSN itself; it now inherits the timeout from the shared DSN (and the 
now-unused `net/url` import is dropped).
   - Verified: full `catalog/sql` suite passes with `-race` on the default 
(modernc) build and under `-tags cgosqlite` (mattn, CGO); the contention and 
concurrent-namespace tests pass 20x with `-race` on both paths.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to