#1747 - Refactor io.ebeaninternal.server.transaction access and remove unused

This commit is contained in:
rob bygrave
2019-07-02 22:58:31 +12:00
parent 2f8a99c304
commit f5c12a916d
10 changed files with 122 additions and 213 deletions
@@ -163,7 +163,7 @@ public class InternalConfiguration {
private final SpiLogManager logManager;
public InternalConfiguration(boolean online, ClusterManager clusterManager, SpiBackgroundExecutor backgroundExecutor,
InternalConfiguration(boolean online, ClusterManager clusterManager, SpiBackgroundExecutor backgroundExecutor,
ServerConfig serverConfig, BootupClasses bootupClasses) {
this.online = online;
@@ -237,7 +237,7 @@ public class InternalConfiguration {
return docStoreFactory;
}
public ClockService getClockService() {
ClockService getClockService() {
return clockService;
}
@@ -292,7 +292,7 @@ public class InternalConfiguration {
/**
* Return the ReadAuditLogger implementation to use.
*/
public ReadAuditLogger getReadAuditLogger() {
ReadAuditLogger getReadAuditLogger() {
ReadAuditLogger found = bootupClasses.getReadAuditLogger();
return plugin(found != null ? found : new DefaultReadAuditLogger());
}
@@ -300,7 +300,7 @@ public class InternalConfiguration {
/**
* Return the ReadAuditPrepare implementation to use.
*/
public ReadAuditPrepare getReadAuditPrepare() {
ReadAuditPrepare getReadAuditPrepare() {
ReadAuditPrepare found = bootupClasses.getReadAuditPrepare();
return plugin(found != null ? found : new DefaultReadAuditPrepare());
}
@@ -334,27 +334,27 @@ public class InternalConfiguration {
return new MultiValueBind();
}
public SpiJsonContext createJsonContext(SpiEbeanServer server) {
SpiJsonContext createJsonContext(SpiEbeanServer server) {
return new DJsonContext(server, jsonFactory, typeManager);
}
public AutoTuneService createAutoTuneService(SpiEbeanServer server) {
AutoTuneService createAutoTuneService(SpiEbeanServer server) {
return AutoTuneServiceFactory.create(server, serverConfig);
}
public DtoQueryEngine createDtoQueryEngine() {
DtoQueryEngine createDtoQueryEngine() {
return new DtoQueryEngine(binder);
}
public RelationalQueryEngine createRelationalQueryEngine() {
RelationalQueryEngine createRelationalQueryEngine() {
return new DefaultRelationalQueryEngine(binder, serverConfig.getDatabaseBooleanTrue(), serverConfig.getPlatformConfig().getDbUuid().useBinaryOptimized());
}
public OrmQueryEngine createOrmQueryEngine() {
OrmQueryEngine createOrmQueryEngine() {
return new DefaultOrmQueryEngine(cQueryEngine, binder);
}
public Persister createPersister(SpiEbeanServer server) {
Persister createPersister(SpiEbeanServer server) {
return new DefaultPersister(server, binder, beanDescriptorManager);
}
@@ -382,7 +382,7 @@ public class InternalConfiguration {
return binder;
}
public BeanDescriptorManager getBeanDescriptorManager() {
BeanDescriptorManager getBeanDescriptorManager() {
return beanDescriptorManager;
}
@@ -398,7 +398,7 @@ public class InternalConfiguration {
return deployUtil;
}
public CQueryEngine getCQueryEngine() {
CQueryEngine getCQueryEngine() {
return cQueryEngine;
}
@@ -414,14 +414,14 @@ public class InternalConfiguration {
/**
* Create the DocStoreIntegration components for the given server.
*/
public DocStoreIntegration createDocStoreIntegration(SpiServer server) {
DocStoreIntegration createDocStoreIntegration(SpiServer server) {
return plugin(docStoreFactory.create(server));
}
/**
* Create the TransactionManager taking into account autoCommit mode.
*/
public TransactionManager createTransactionManager(DocStoreUpdateProcessor indexUpdateProcessor) {
TransactionManager createTransactionManager(DocStoreUpdateProcessor indexUpdateProcessor) {
TransactionScopeManager scopeManager = createTransactionScopeManager();
boolean notifyL2CacheInForeground = cacheManager.isLocalL2Caching() || serverConfig.isNotifyL2CacheInForeground();
@@ -496,9 +496,9 @@ public class InternalConfiguration {
}
if (externalTransactionManager != null) {
logger.info("Using Transaction Manager [" + externalTransactionManager.getClass() + "]");
return new ExternalTransactionScopeManager(serverConfig.getName(), externalTransactionManager);
return new ExternalTransactionScopeManager(externalTransactionManager);
} else {
return new DefaultTransactionScopeManager(serverConfig.getName());
return new DefaultTransactionScopeManager();
}
}
@@ -559,11 +559,11 @@ public class InternalConfiguration {
return multiValueBind;
}
public DtoBeanManager getDtoBeanManager() {
DtoBeanManager getDtoBeanManager() {
return dtoBeanManager;
}
public SpiLogManager getLogManager() {
SpiLogManager getLogManager() {
return logManager;
}
@@ -12,10 +12,6 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager {
private final ThreadLocal<SpiTransaction> local = new ThreadLocal<>();
public DefaultTransactionScopeManager(String serverName) {
super(serverName);
}
@Override
public void register(TransactionManager manager) {
// do nothing
@@ -1,7 +1,6 @@
package io.ebeaninternal.server.transaction;
import java.sql.Connection;
import java.sql.SQLException;
/**
* Document store only transaction.
@@ -41,12 +40,12 @@ public class DocStoreOnlyTransaction extends JdbcTransaction {
}
@Override
protected void performRollback() throws SQLException {
protected void performRollback() {
// do nothing (could perhaps throw not supported exception)
}
@Override
protected void performCommit() throws SQLException {
protected void performCommit() {
if (docStoreTxn != null) {
manager.docStoreUpdateProcessor.commit(docStoreTxn);
}
@@ -13,8 +13,7 @@ public class ExternalTransactionScopeManager extends DefaultTransactionScopeMana
/**
* Instantiates transaction scope manager.
*/
public ExternalTransactionScopeManager(String serverName, ExternalTransactionManager externalManager) {
super(serverName);
public ExternalTransactionScopeManager(ExternalTransactionManager externalManager) {
this.externalManager = externalManager;
}
@@ -47,24 +47,24 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode
/**
* The status of the transaction.
*/
protected boolean active;
private boolean active;
/**
* The underlying Connection which is expected to use autoCommit such that we avoid the
* explicit commit call at the end of the 'transaction' (for performance).
*/
protected Connection connection;
private Connection connection;
/**
* Holder of the objects fetched to ensure unique objects are used.
*/
protected PersistenceContext persistenceContext;
private PersistenceContext persistenceContext;
private Object tenantId;
private Map<String, Object> userObjects;
private long startNanos;
private final long startNanos;
/**
* Create without a tenantId.
@@ -35,7 +35,7 @@ import java.util.Map;
/**
* JDBC Connection based transaction.
*/
public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
private static final Logger logger = LoggerFactory.getLogger(JdbcTransaction.class);
@@ -46,12 +46,12 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* The associated TransactionManager.
*/
protected final TransactionManager manager;
final TransactionManager manager;
/**
* The transaction id.
*/
protected final String id;
private final String id;
private final boolean logSql;
private final boolean logSummary;
@@ -59,137 +59,137 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* The user defined label to group execution statistics.
*/
protected String label;
private String label;
/**
* Flag to indicate if this was an explicitly created Transaction.
*/
protected final boolean explicit;
private final boolean explicit;
/**
* Behaviour for ending query only transactions.
*/
protected final OnQueryOnly onQueryOnly;
private final OnQueryOnly onQueryOnly;
/**
* The status of the transaction.
*/
protected boolean active;
private boolean active;
protected boolean rollbackOnly;
private boolean rollbackOnly;
protected boolean nestedUseSavepoint;
private boolean nestedUseSavepoint;
/**
* The underlying Connection.
*/
protected Connection connection;
Connection connection;
/**
* Used to queue up persist requests for batch execution.
*/
protected BatchControl batchControl;
private BatchControl batchControl;
/**
* The event which holds persisted beans.
*/
protected TransactionEvent event;
private TransactionEvent event;
/**
* Holder of the objects fetched to ensure unique objects are used.
*/
protected PersistenceContext persistenceContext;
private PersistenceContext persistenceContext;
/**
* Used to give developers more control over the insert update and delete
* functionality.
*/
protected boolean persistCascade = true;
private boolean persistCascade = true;
/**
* Flag used for performance to skip commit or rollback of query only
* transactions in read committed transaction isolation.
*/
protected boolean queryOnly = true;
private boolean queryOnly = true;
protected boolean localReadOnly;
private boolean localReadOnly;
protected Boolean updateAllLoadedProperties;
private Boolean updateAllLoadedProperties;
protected boolean oldBatchMode;
private boolean oldBatchMode;
protected boolean batchMode;
private boolean batchMode;
protected boolean batchOnCascadeMode;
private boolean batchOnCascadeMode;
protected int batchSize = -1;
private int batchSize = -1;
protected boolean batchFlushOnQuery = true;
private boolean batchFlushOnQuery = true;
protected Boolean batchGetGeneratedKeys;
private Boolean batchGetGeneratedKeys;
protected Boolean batchFlushOnMixed;
private Boolean batchFlushOnMixed;
protected String logPrefix;
private String logPrefix;
private Object tenantId;
/**
* The depth used by batch processing to help the ordering of statements.
*/
protected int depth;
private int depth;
/**
* Set to true if the connection has autoCommit=true initially.
*/
protected boolean autoCommit;
private boolean autoCommit;
protected IdentityHashMap<Object, Object> persistingBeans;
private IdentityHashMap<Object, Object> persistingBeans;
protected HashSet<Integer> deletingBeansHash;
private HashSet<Integer> deletingBeansHash;
protected HashMap<String, String> m2mIntersectionSave;
private HashMap<String, String> m2mIntersectionSave;
protected Map<String, Object> userObjects;
private Map<String, Object> userObjects;
protected List<TransactionCallback> callbackList;
private List<TransactionCallback> callbackList;
protected boolean batchOnCascadeSet;
private boolean batchOnCascadeSet;
protected TChangeLogHolder changeLogHolder;
private TChangeLogHolder changeLogHolder;
protected List<PersistDeferredRelationship> deferredList;
private List<PersistDeferredRelationship> deferredList;
/**
* The mode for updating doc store indexes for this transaction.
* Only set when you want to override the default behavior.
*/
protected DocStoreMode docStoreMode;
private DocStoreMode docStoreMode;
protected int docStoreBatchSize;
private int docStoreBatchSize;
/**
* Explicit control over skipCache.
*/
protected Boolean skipCache;
private Boolean skipCache;
/**
* Default skip cache behavior from {@link ServerConfig#isSkipCacheAfterWrite()}.
*/
protected final boolean skipCacheAfterWrite;
private final boolean skipCacheAfterWrite;
protected DocStoreTransaction docStoreTxn;
DocStoreTransaction docStoreTxn;
private ProfileStream profileStream;
protected ProfileLocation profileLocation;
private ProfileLocation profileLocation;
protected final long startNanos;
private final long startNanos;
/**
* Create a new JdbcTransaction.
*/
public JdbcTransaction(String id, boolean explicit, Connection connection, TransactionManager manager) {
JdbcTransaction(String id, boolean explicit, Connection connection, TransactionManager manager) {
try {
this.active = true;
this.id = id;
@@ -273,7 +273,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Overridden in AutoCommitJdbcTransaction as that expects to run/operate with autocommit true.
*/
protected void checkAutoCommit(Connection connection) throws SQLException {
void checkAutoCommit(Connection connection) throws SQLException {
if (connection != null) {
this.autoCommit = connection.getAutoCommit();
if (this.autoCommit) {
@@ -341,7 +341,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
callbackList.add(callback);
}
protected void firePreRollback() {
private void firePreRollback() {
if (callbackList != null) {
for (TransactionCallback callback : callbackList) {
try {
@@ -353,7 +353,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
}
}
protected void firePostRollback() {
private void firePostRollback() {
if (callbackList != null) {
for (TransactionCallback callback : callbackList) {
try {
@@ -368,7 +368,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
}
}
protected void firePreCommit() {
private void firePreCommit() {
if (callbackList != null) {
for (TransactionCallback callback : callbackList) {
try {
@@ -380,7 +380,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
}
}
protected void firePostCommit() {
private void firePostCommit() {
if (callbackList != null) {
for (TransactionCallback callback : callbackList) {
try {
@@ -895,7 +895,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
return getInternalConnection();
}
protected void deactivate() {
void deactivate() {
try {
if (localReadOnly) {
// reset readOnly status prior to returning to pool
@@ -927,7 +927,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Notify the transaction manager.
*/
protected void notifyCommit() {
void notifyCommit() {
if (manager != null) {
if (queryOnly) {
manager.notifyOfQueryOnly(this);
@@ -940,7 +940,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Rollback or Commit for query only transaction.
*/
protected void connectionEndForQueryOnly() {
private void connectionEndForQueryOnly() {
try {
if (onQueryOnly == OnQueryOnly.COMMIT) {
performCommit();
@@ -955,7 +955,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Perform the actual rollback on the connection.
*/
protected void performRollback() throws SQLException {
void performRollback() throws SQLException {
long offset = profileOffset();
connection.rollback();
if (profileStream != null) {
@@ -966,7 +966,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Perform the actual commit on the connection.
*/
protected void performCommit() throws SQLException {
void performCommit() throws SQLException {
long offset = profileOffset();
connection.commit();
if (profileStream != null) {
@@ -1071,7 +1071,7 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes {
/**
* Notify the transaction manager.
*/
protected void notifyRollback(Throwable cause) {
void notifyRollback(Throwable cause) {
if (manager != null) {
if (queryOnly) {
manager.notifyOfQueryOnly(this);
@@ -10,13 +10,8 @@ import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.PersistenceException;
import javax.sql.DataSource;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.TransactionSynchronizationRegistry;
import javax.transaction.UserTransaction;
@@ -149,29 +144,28 @@ public class JtaTransactionManager implements ExternalTransactionManager {
private static class DummyUserTransaction implements UserTransaction {
@Override
public void begin() throws NotSupportedException, SystemException {
public void begin() {
}
@Override
public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException,
SecurityException, IllegalStateException, SystemException {
public void commit() throws SecurityException, IllegalStateException {
}
@Override
public int getStatus() throws SystemException {
public int getStatus() {
return 0;
}
@Override
public void rollback() throws IllegalStateException, SecurityException, SystemException {
public void rollback() throws IllegalStateException, SecurityException {
}
@Override
public void setRollbackOnly() throws IllegalStateException, SystemException {
public void setRollbackOnly() throws IllegalStateException {
}
@Override
public void setTransactionTimeout(int seconds) throws SystemException {
public void setTransactionTimeout(int seconds) {
}
}
@@ -1,60 +0,0 @@
package io.ebeaninternal.server.transaction;
import io.ebean.bean.PersistenceContext;
/**
* PersistenceContext used with scope of NONE.
* <p>
* When used effectively means no PersistenceContext is used at all. This is not expected to be used much and
* actually is not recommended.
*/
public class NoopPersistenceContext implements PersistenceContext {
@Override
public void put(Class<?> rootType, Object id, Object bean) {
// do nothing
}
@Override
public Object putIfAbsent(Class<?> rootType, Object id, Object bean) {
// do nothing
return null;
}
@Override
public Object get(Class<?> beanType, Object uid) {
// do nothing, return null
return null;
}
@Override
public WithOption getWithOption(Class<?> beanType, Object uid) {
// do nothing, return null
return null;
}
@Override
public void clear() {
// do nothing
}
@Override
public void clear(Class<?> beanType) {
// do nothing
}
@Override
public void clear(Class<?> beanType, Object uid) {
// do nothing
}
@Override
public void deleted(Class<?> beanType, Object id) {
// do nothing
}
@Override
public int size(Class<?> beanType) {
return 0;
}
}
@@ -30,7 +30,6 @@ import io.ebeaninternal.api.TransactionEventTable;
import io.ebeaninternal.api.TransactionEventTable.TableIUD;
import io.ebeaninternal.server.cache.CacheChangeSet;
import io.ebeaninternal.server.cluster.ClusterManager;
import io.ebeaninternal.server.core.ClockService;
import io.ebeaninternal.server.deploy.BeanDescriptorManager;
import io.ebeaninternal.server.profile.TimedProfileLocation;
import io.ebeaninternal.server.profile.TimedProfileLocationRegistry;
@@ -57,9 +56,9 @@ public class TransactionManager implements SpiTransactionManager {
private static final Logger logger = LoggerFactory.getLogger(TransactionManager.class);
public static final Logger clusterLogger = LoggerFactory.getLogger("io.ebean.Cluster");
private static final Logger clusterLogger = LoggerFactory.getLogger("io.ebean.Cluster");
protected final BeanDescriptorManager beanDescriptorManager;
private final BeanDescriptorManager beanDescriptorManager;
/**
* Ebean defaults this to true but for EJB compatible behaviour set this to
@@ -70,39 +69,39 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Prefix for transaction id's (logging).
*/
protected final String prefix;
final String prefix;
protected final String externalTransPrefix;
private final String externalTransPrefix;
/**
* The dataSource of connections.
*/
protected final DataSourceSupplier dataSourceSupplier;
private final DataSourceSupplier dataSourceSupplier;
/**
* Flag to indicate the default Isolation is READ COMMITTED. This enables us
* to close queryOnly transactions rather than commit or rollback them.
*/
protected final OnQueryOnly onQueryOnly;
private final OnQueryOnly onQueryOnly;
protected final BackgroundExecutor backgroundExecutor;
private final BackgroundExecutor backgroundExecutor;
protected final ClusterManager clusterManager;
private final ClusterManager clusterManager;
protected final String serverName;
private final String serverName;
protected final boolean docStoreActive;
private final boolean docStoreActive;
/**
* The elastic search index update processor.
*/
protected final DocStoreUpdateProcessor docStoreUpdateProcessor;
final DocStoreUpdateProcessor docStoreUpdateProcessor;
protected final boolean persistBatch;
private final boolean persistBatch;
protected final boolean persistBatchOnCascade;
private final boolean persistBatchOnCascade;
protected final BulkEventListenerMap bulkEventListenerMap;
private final BulkEventListenerMap bulkEventListenerMap;
/**
* Used to prepare the change set setting user context information in the
@@ -120,9 +119,9 @@ public class TransactionManager implements SpiTransactionManager {
*/
private final boolean changeLogAsync;
protected final boolean notifyL2CacheInForeground;
final boolean notifyL2CacheInForeground;
protected final boolean viewInvalidation;
private final boolean viewInvalidation;
private final boolean skipCacheAfterWrite;
@@ -142,7 +141,6 @@ public class TransactionManager implements SpiTransactionManager {
private final TableModState tableModState;
private final ServerCacheNotify cacheNotify;
private final ClockService clockService;
/**
* Create the TransactionManager
@@ -167,7 +165,6 @@ public class TransactionManager implements SpiTransactionManager {
this.scopeManager = options.scopeManager;
this.tableModState = options.tableModState;
this.cacheNotify = options.cacheNotify;
this.clockService = options.clockService;
this.backgroundExecutor = options.backgroundExecutor;
this.dataSourceSupplier = options.dataSourceSupplier;
this.docStoreActive = options.config.getDocStoreConfig().isActive();
@@ -189,13 +186,6 @@ public class TransactionManager implements SpiTransactionManager {
scopeManager.register(this);
}
/**
* Return the NOW timestamp in epoch millis.
*/
public long clockNowMillis() {
return clockService.nowMillis();
}
/**
* Create a new scoped transaction.
*/
@@ -228,7 +218,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Return the current active transaction as a scoped transaction.
*/
public ScopedTransaction getActiveScoped() {
private ScopedTransaction getActiveScoped() {
return (ScopedTransaction) scopeManager.getActive();
}
@@ -252,15 +242,15 @@ public class TransactionManager implements SpiTransactionManager {
}
}
public boolean isDocStoreActive() {
boolean isDocStoreActive() {
return docStoreActive;
}
public DocStoreTransaction createDocStoreTransaction(int docStoreBatchSize) {
DocStoreTransaction createDocStoreTransaction(int docStoreBatchSize) {
return docStoreUpdateProcessor.createTransaction(docStoreBatchSize);
}
public boolean isSkipCacheAfterWrite() {
boolean isSkipCacheAfterWrite() {
return skipCacheAfterWrite;
}
@@ -268,11 +258,11 @@ public class TransactionManager implements SpiTransactionManager {
return beanDescriptorManager;
}
public BulkEventListenerMap getBulkEventListenerMap() {
BulkEventListenerMap getBulkEventListenerMap() {
return bulkEventListenerMap;
}
public boolean getPersistBatch() {
boolean getPersistBatch() {
return persistBatch;
}
@@ -292,7 +282,7 @@ public class TransactionManager implements SpiTransactionManager {
* just for queries do need to be committed or rollback after the query.
* </p>
*/
protected OnQueryOnly initOnQueryOnly(OnQueryOnly dbPlatformOnQueryOnly) {
OnQueryOnly initOnQueryOnly(OnQueryOnly dbPlatformOnQueryOnly) {
// first check for a system property 'override'
String systemPropertyValue = System.getProperty("ebean.transaction.onqueryonly");
@@ -321,7 +311,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Defines the type of behavior to use when closing a transaction that was used to query data only.
*/
public OnQueryOnly getOnQueryOnly() {
OnQueryOnly getOnQueryOnly() {
return onQueryOnly;
}
@@ -329,14 +319,13 @@ public class TransactionManager implements SpiTransactionManager {
* Wrap the externally supplied Connection.
*/
public SpiTransaction wrapExternalConnection(Connection c) {
return wrapExternalConnection(externalTransPrefix + c.hashCode(), c);
}
/**
* Wrap an externally supplied Connection with a known transaction id.
*/
public SpiTransaction wrapExternalConnection(String id, Connection c) {
private SpiTransaction wrapExternalConnection(String id, Connection c) {
ExternalJdbcTransaction t = new ExternalJdbcTransaction(id, true, c, this);
@@ -363,7 +352,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Create a new transaction.
*/
protected SpiTransaction createTransaction(boolean explicit, Connection c, long id) {
SpiTransaction createTransaction(boolean explicit, Connection c, long id) {
return new JdbcTransaction(prefix + id, explicit, c, this);
}
@@ -371,7 +360,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Process a local rolled back transaction.
*/
public void notifyOfRollback(SpiTransaction transaction, Throwable cause) {
void notifyOfRollback(SpiTransaction transaction, Throwable cause) {
try {
if (txnLogger.isDebug()) {
@@ -390,7 +379,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Query only transaction in read committed isolation.
*/
public void notifyOfQueryOnly(SpiTransaction transaction) {
void notifyOfQueryOnly(SpiTransaction transaction) {
// Nothing that interesting here
if (txnLogger.isTrace()) {
@@ -425,7 +414,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Process a local committed transaction.
*/
public void notifyOfCommit(SpiTransaction transaction) {
void notifyOfCommit(SpiTransaction transaction) {
try {
if (txnLogger.isDebug()) {
@@ -498,14 +487,14 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Process the docstore / ElasticSearch updates.
*/
public void processDocStoreUpdates(DocStoreUpdates docStoreUpdates, int bulkBatchSize) {
void processDocStoreUpdates(DocStoreUpdates docStoreUpdates, int bulkBatchSize) {
docStoreUpdateProcessor.process(docStoreUpdates, bulkBatchSize);
}
/**
* Prepare and then send/log the changeSet.
*/
public void sendChangeLog(final ChangeSet changeSet) {
void sendChangeLog(final ChangeSet changeSet) {
// can set userId, userIpAddress & userContext if desired
if (changeLogPrepare.prepare(changeSet)) {
@@ -522,7 +511,7 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Invalidate the query caches for entities based on views.
*/
public void processTouchedTables(Set<String> touchedTables) {
void processTouchedTables(Set<String> touchedTables) {
tableModState.touch(touchedTables);
if (viewInvalidation) {
beanDescriptorManager.processViewInvalidation(touchedTables);
@@ -533,28 +522,28 @@ public class TransactionManager implements SpiTransactionManager {
/**
* Process the collected transaction profiling information.
*/
public void profileCollect(TransactionProfile transactionProfile) {
void profileCollect(TransactionProfile transactionProfile) {
profileHandler.collectTransactionProfile(transactionProfile);
}
/**
* Collect execution time for an explicit transaction.
*/
public void collectMetric(long exeMicros) {
void collectMetric(long exeMicros) {
txnMain.add(exeMicros);
}
/**
* Collect execution time for implicit read only transaction.
*/
public void collectMetricReadOnly(long exeMicros) {
void collectMetricReadOnly(long exeMicros) {
txnReadOnly.add(exeMicros);
}
/**
* Collect execution time for a named transaction.
*/
public void collectMetricNamed(long exeMicros, String label) {
void collectMetricNamed(long exeMicros, String label) {
txnNamed.add(label, exeMicros);
}
@@ -712,6 +701,7 @@ public class TransactionManager implements SpiTransactionManager {
private boolean isCreateNewTransaction(SpiTransaction current, TxType type) {
switch (type) {
case REQUIRED:
case SUPPORTS:
return current == null;
case REQUIRES_NEW:
@@ -723,9 +713,6 @@ public class TransactionManager implements SpiTransactionManager {
}
return false;
case SUPPORTS:
return current == null;
case NEVER:
if (current != null) {
throw new PersistenceException("Transaction exists for Transactional NEVER");
@@ -8,12 +8,6 @@ import io.ebeaninternal.api.SpiTransactionScopeManager;
*/
public abstract class TransactionScopeManager implements SpiTransactionScopeManager {
protected final String serverName;
public TransactionScopeManager(String serverName) {
this.serverName = serverName;
}
/**
* Register the transaction manager (for use by external transaction scopes).
*/