fix submitting with finished transaction id

This commit is contained in:
peter
2016-04-05 13:19:12 +02:00
parent 943e0c5991
commit d6374a3b4b
2 changed files with 25 additions and 2 deletions
@@ -83,8 +83,15 @@ public class TransactionGuardImpl extends TransactionGuard {
}
@NotNull
private Queue<Transaction> getQueue(@Nullable TransactionIdImpl prevTransaction) {
return prevTransaction == null ? myQueue : prevTransaction.myQueue;
private Queue<Transaction> getQueue(@Nullable TransactionIdImpl transaction) {
if (transaction == null) {
return myQueue;
}
if (myCurrentTransaction != null && transaction.myStartCounter > myCurrentTransaction.myStartCounter) {
// transaction is finished already, it makes no sense to add to its queue
return myCurrentTransaction.myQueue;
}
return transaction.myQueue;
}
private void pollQueueLater() {
@@ -160,4 +160,20 @@ class TransactionTest extends LightPlatformTestCase {
}
}
public void "test submit with finished transaction id"() {
TransactionGuard.submitTransaction testRootDisposable, {
log << '1'
TransactionId id = null
TransactionGuard.submitTransaction testRootDisposable, {
log << '2'
id = guard.contextTransaction
}
SwingUtilities.invokeLater {
guard.submitMergeableTransaction testRootDisposable, id, { log << '3' }
}
UIUtil.dispatchAllInvocationEvents()
assert log == ['1', '2', '3']
}
}
}