Merge branch '272-transaction-isolation' into 'master'
Transaction isolation. #272 When client transactions were implemented the DB's read-write lock was removed, exposing H2's transaction isolation semantics. The default isolation level is "read committed", which allows concurrent transactions to overwrite each other's updates. This was the cause of #272. Changing H2's isolation level to "serialisable" would have caused other problems. The solution is to reintroduce the DB's read-write lock. The lock is acquired when starting a transaction and released when committing or rolling back a transaction. (We already use try/finally blocks to ensure every transaction is committed or rolled back.) Read-only transactions can share the lock. To avoid deadlock, transactions must not be started while holding other locks. This patch adapts the key manager to the new locking rules. The rest of the code was already compliant. Transports are now added to the DB during the startup phase, which allows TransportAddedEvent and TransportRemovedEvent to be deleted. Fixes #269, fixes #272. See merge request !124
No related branches found
No related tags found
Showing
- briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingComponent.java 22 additions, 6 deletions...java/org/briarproject/sync/SimplexMessagingComponent.java
- briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingIntegrationTest.java 17 additions, 35 deletions...rg/briarproject/sync/SimplexMessagingIntegrationTest.java
- briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java 14 additions, 18 deletions...id/src/org/briarproject/plugins/AndroidPluginsModule.java
- briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPluginFactory.java 5 additions, 1 deletion...arproject/plugins/droidtooth/DroidtoothPluginFactory.java
- briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothTransportConnection.java 5 additions, 9 deletions...ect/plugins/droidtooth/DroidtoothTransportConnection.java
- briar-android/src/org/briarproject/plugins/tcp/AndroidLanTcpPluginFactory.java 4 additions, 0 deletions.../briarproject/plugins/tcp/AndroidLanTcpPluginFactory.java
- briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java 4 additions, 0 deletions...id/src/org/briarproject/plugins/tor/TorPluginFactory.java
- briar-android/src/org/briarproject/plugins/tor/TorTransportConnection.java 5 additions, 9 deletions.../org/briarproject/plugins/tor/TorTransportConnection.java
- briar-api/src/org/briarproject/api/db/DatabaseComponent.java 43 additions, 12 deletionsbriar-api/src/org/briarproject/api/db/DatabaseComponent.java
- briar-api/src/org/briarproject/api/db/Transaction.java 10 additions, 1 deletionbriar-api/src/org/briarproject/api/db/Transaction.java
- briar-api/src/org/briarproject/api/event/TransportAddedEvent.java 0 additions, 23 deletions...i/src/org/briarproject/api/event/TransportAddedEvent.java
- briar-api/src/org/briarproject/api/event/TransportRemovedEvent.java 0 additions, 17 deletions...src/org/briarproject/api/event/TransportRemovedEvent.java
- briar-api/src/org/briarproject/api/plugins/PluginConfig.java 13 additions, 0 deletionsbriar-api/src/org/briarproject/api/plugins/PluginConfig.java
- briar-api/src/org/briarproject/api/plugins/TransportConnectionReader.java 9 additions, 7 deletions...g/briarproject/api/plugins/TransportConnectionReader.java
- briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java 0 additions, 8 deletions...g/briarproject/api/plugins/duplex/DuplexPluginConfig.java
- briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginFactory.java 14 additions, 3 deletions.../briarproject/api/plugins/duplex/DuplexPluginFactory.java
- briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java 0 additions, 8 deletions...briarproject/api/plugins/simplex/SimplexPluginConfig.java
- briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginFactory.java 14 additions, 3 deletions...riarproject/api/plugins/simplex/SimplexPluginFactory.java
- briar-api/src/org/briarproject/api/sync/SyncSessionFactory.java 5 additions, 7 deletions...api/src/org/briarproject/api/sync/SyncSessionFactory.java
- briar-api/src/org/briarproject/api/transport/KeyManager.java 4 additions, 2 deletionsbriar-api/src/org/briarproject/api/transport/KeyManager.java
Loading
Please register or sign in to comment