#1353 - Use of ebeanServer.commitTransaction() in nested transaction doesn't match transction.commit() and closes parent scope

This commit is contained in:
Rob Bygrave
2018-03-27 09:14:45 +13:00
parent db5a2b194d
commit abbcd35ee6
5 changed files with 94 additions and 60 deletions
@@ -802,7 +802,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
*/
@Override
public void commitTransaction() {
transactionManager.scope().commit();
currentTransaction().commit();
}
/**
@@ -810,7 +810,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
*/
@Override
public void rollbackTransaction() {
transactionManager.scope().rollback();
currentTransaction().rollback();
}
/**
@@ -843,7 +843,10 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
*/
@Override
public void endTransaction() {
transactionManager.scope().end();
Transaction transaction = currentTransaction();
if (transaction != null) {
transaction.end();
}
}
/**
@@ -17,16 +17,6 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager {
// do nothing
}
@Override
public void commit() {
DefaultTransactionThreadLocal.commit(serverName);
}
@Override
public void end() {
DefaultTransactionThreadLocal.end(serverName);
}
@Override
public SpiTransaction getInScope() {
return DefaultTransactionThreadLocal.get(serverName);
@@ -47,11 +37,6 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager {
DefaultTransactionThreadLocal.replace(serverName, trans);
}
@Override
public void rollback() {
DefaultTransactionThreadLocal.rollback(serverName);
}
@Override
public void set(SpiTransaction trans) {
DefaultTransactionThreadLocal.set(serverName, trans);
@@ -34,22 +34,6 @@ public abstract class TransactionScopeManager implements SpiTransactionScopeMana
*/
public abstract void set(SpiTransaction trans);
/**
* Commit the current transaction.
*/
public abstract void commit();
/**
* Rollback the current transaction.
*/
public abstract void rollback();
/**
* Rollback if required.
*/
public abstract void end();
/**
* Replace the current transaction with this one.
* <p>