The GitHub Actions job "CI" on grails-core.git/feat/neo4j-gorm-registry-migration has failed. Run started by GitHub user borinquenkid (triggered by borinquenkid).
Head commit for run: 452449b2269cedef5129dab94138ef4829c51f9b / Walter Duque de Estrada <[email protected]> test(tck): skip TCK "Test optimistic locking" for Neo4j grails-data-neo4j-core:test started running the shared TCK suite when the standalone Neo4j build was folded into the root settings.gradle. The TCK's OptimisticLockingSpec."Test optimistic locking" fails deterministically under Neo4j, and its failure has nothing to do with timing or the GormRegistry wiring. GrailsDataNeo4jTckManager.createSession() opens a transaction per test and never commits it before the feature body runs. The TCK spec only calls manager.session.clear() before spawning the second thread, so the freshly created OptLockVersioned node is still uncommitted. Neo4j is read-committed, so the background thread's own transaction cannot see it: [Test worker] unmarshalling entity OptLockVersioned id [0] <- found [Thread-31] QUERY MATCH (n:OptLockVersioned) WHERE ID(n)=$1 ... (no rows) [Thread-31] TX CLOSE <- no UPDATE reloaded is null, the background assert dies inside the thread (swallowed by Thread.start{}.join()), no competing version bump ever happens, and the main thread's save succeeds - so ex is null and the assertion at line 102 fails. The sleep length is irrelevant; the background thread finishes ~2s before the main save. Neo4j keeps equivalent coverage through its own adapted copy, grails.gorm.tests.OptimisticLockingSpec in grails-data-neo4j-core, which commits the session's transaction first. This mirrors the existing Hibernate exclusion on the same feature and the neo4j.gorm.suite gating already used in ValidationSpec for the same "Neo4j requires a transaction" reason. Co-Authored-By: Claude Sonnet 5 <[email protected]> Report URL: https://github.com/apache/grails-core/actions/runs/30684731696 With regards, GitHub Actions via GitBox
