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]
