When using v10.1.1.0 of the Apache Derby Network Client JDBC Driver and configuring
the TRANSACTION_READ_UNCOMMITTED isolation level, it is unable to read changes from another transaction which haven't been committed yet if the setTransactionIsolation call comes before the xa transation is started.
$ java TestDerbyNSXA
Connection number: 2.
Database product: Apache Derby
Database version: 10.2.0.0 alpha
Driver name: Apache Derby Network Client JDBC Driver
Driver version: 10.2.0.0 alpha
Thread 1: transaction started (with read committed isolation)
Thread 1: row updated first time.
Connection number: 3.
Thread 2: transaction started (with read uncommitted isolation)
Query complete on thread 2. About to do ResultSet.next()...
Thread 1: row updated second time.
ResultSet.next() took 19067 milliseconds.
Test fails. ResultSet next under read uncommitted isolation appears to have been blocked and unable to perform a dirty read.
Thread 1: transaction committed.
Thread 2: transaction committed.