You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/13 16:25:53 UTC
[shardingsphere] branch master updated: Use TransactionStatus to
decouple transaction and ConnectionStatus (#7428)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 739d78b Use TransactionStatus to decouple transaction and ConnectionStatus (#7428)
739d78b is described below
commit 739d78bb9a32d2696e1c22cfb1b9eddffb406ee7
Author: Liang Zhang <te...@163.com>
AuthorDate: Mon Sep 14 00:25:33 2020 +0800
Use TransactionStatus to decouple transaction and ConnectionStatus (#7428)
* Add transaction package
* Use TransactionStatus to decouple transaction and ConnectionStatus
---
.../jdbc/JDBCDatabaseCommunicationEngine.java | 2 +-
.../jdbc/connection/BackendConnection.java | 25 +++++---
.../jdbc/connection/MethodInvocation.java | 4 +-
.../jdbc/connection/status/ConnectionStatus.java | 2 +-
.../connection/status/ConnectionStatusManager.java | 16 ------
.../BackendTransactionManager.java | 15 ++---
.../LocalTransactionManager.java | 8 ++-
.../TransactionManager.java | 2 +-
.../TransactionStatus.java} | 13 +++--
.../text/TextProtocolBackendHandlerFactory.java | 2 +-
.../transaction/TransactionBackendHandler.java | 2 +-
.../TextProtocolBackendHandlerFactoryTest.java | 20 +++----
.../jdbc/connection/BackendConnectionTest.java | 29 +++++-----
.../status/ConnectionStatusManagerTest.java | 66 ----------------------
.../BackendTransactionManagerTest.java | 29 +++++-----
.../frontend/command/CommandExecutorTask.java | 2 +-
.../frontend/command/CommandExecutorTaskTest.java | 8 +--
17 files changed, 92 insertions(+), 153 deletions(-)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 246b3d2..c9b7d41 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -105,7 +105,7 @@ public final class JDBCDatabaseCommunicationEngine implements DatabaseCommunicat
}
private boolean isExecuteDDLInXATransaction(final SQLStatement sqlStatement) {
- return TransactionType.XA == connection.getTransactionType() && sqlStatement instanceof DDLStatement && connection.getStatusManager().isInTransaction();
+ return TransactionType.XA == connection.getTransactionType() && sqlStatement instanceof DDLStatement && connection.getTransactionStatus().isInTransaction();
}
private String getTableName(final SQLStatementContext<?> sqlStatementContext) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
index 0ba53bf..cc73aba 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
@@ -34,6 +34,7 @@ import org.apache.shardingsphere.infra.spi.type.TypedSPIRegistry;
import org.apache.shardingsphere.masterslave.route.engine.impl.MasterVisitedManager;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.status.ConnectionStatusManager;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.StatementMemoryStrictlyFetchSizeSetter;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.TransactionStatus;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.transaction.core.TransactionType;
@@ -83,7 +84,9 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
private final ResourceLock resourceLock = new ResourceLock();
- private final ConnectionStatusManager statusManager = new ConnectionStatusManager(resourceLock);
+ private final ConnectionStatusManager connectionStatusManager = new ConnectionStatusManager(resourceLock);
+
+ private final TransactionStatus transactionStatus = new TransactionStatus();
public BackendConnection(final TransactionType transactionType) {
this.transactionType = transactionType;
@@ -118,7 +121,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
private boolean isSwitchFailed() {
int retryCount = 0;
- while (statusManager.isInTransaction() && retryCount < MAXIMUM_RETRY_COUNT) {
+ while (transactionStatus.isInTransaction() && retryCount < MAXIMUM_RETRY_COUNT) {
resourceLock.doAwait();
++retryCount;
log.info("Current transaction have not terminated, retry count:[{}].", retryCount);
@@ -128,7 +131,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
@Override
public List<Connection> getConnections(final String dataSourceName, final int connectionSize, final ConnectionMode connectionMode) throws SQLException {
- return statusManager.isInTransaction()
+ return transactionStatus.isInTransaction()
? getConnectionsWithTransaction(dataSourceName, connectionSize, connectionMode) : getConnectionsWithoutTransaction(dataSourceName, connectionSize, connectionMode);
}
@@ -214,7 +217,7 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
* @return true or false
*/
public boolean isSerialExecute() {
- return statusManager.isInTransaction() && (TransactionType.LOCAL == transactionType || TransactionType.XA == transactionType);
+ return transactionStatus.isInTransaction() && (TransactionType.LOCAL == transactionType || TransactionType.XA == transactionType);
}
/**
@@ -260,10 +263,10 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
MasterVisitedManager.clear();
exceptions.addAll(closeResultSets());
exceptions.addAll(closeStatements());
- if (!statusManager.isInTransaction() || forceClose || TransactionType.BASE == transactionType) {
+ if (!transactionStatus.isInTransaction() || forceClose || TransactionType.BASE == transactionType) {
exceptions.addAll(releaseConnections(forceClose));
}
- statusManager.switchToReleased();
+ connectionStatusManager.switchToReleased();
throwSQLExceptionIfNecessary(exceptions);
}
@@ -293,11 +296,17 @@ public final class BackendConnection implements JDBCExecutionConnection, AutoClo
return result;
}
- Collection<SQLException> releaseConnections(final boolean forceRollback) {
+ /**
+ * Release connections.
+ *
+ * @param forceRollback is force rollback
+ * @return SQL exception when connections release
+ */
+ public Collection<SQLException> releaseConnections(final boolean forceRollback) {
Collection<SQLException> result = new LinkedList<>();
for (Connection each : cachedConnections.values()) {
try {
- if (forceRollback && statusManager.isInTransaction()) {
+ if (forceRollback && transactionStatus.isInTransaction()) {
each.rollback();
}
each.close();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MethodInvocation.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MethodInvocation.java
index 0d5915e..981f41b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MethodInvocation.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MethodInvocation.java
@@ -27,7 +27,7 @@ import java.lang.reflect.Method;
* Reflective method invocation.
*/
@RequiredArgsConstructor
-class MethodInvocation {
+public class MethodInvocation {
@Getter
private final Method method;
@@ -41,7 +41,7 @@ class MethodInvocation {
* @param target target object
*/
@SneakyThrows(ReflectiveOperationException.class)
- void invoke(final Object target) {
+ public void invoke(final Object target) {
method.invoke(target, arguments);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java
index e6a6a2a..d26e6f0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java
@@ -22,5 +22,5 @@ package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.st
*/
public enum ConnectionStatus {
- USING, RELEASED, IN_TRANSACTION
+ USING, RELEASED
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManager.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManager.java
index d37e772..47bb8de 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManager.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManager.java
@@ -40,22 +40,6 @@ public final class ConnectionStatusManager {
}
/**
- * Switch connection status to in transaction.
- */
- public void switchToInTransaction() {
- status.set(ConnectionStatus.IN_TRANSACTION);
- }
-
- /**
- * Judge whether connection is in transaction.
- *
- * @return whether connection is in transaction
- */
- public boolean isInTransaction() {
- return ConnectionStatus.IN_TRANSACTION == status.get();
- }
-
- /**
* Switch connection status to released.
*/
public void switchToReleased() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManager.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManager.java
similarity index 85%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManager.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManager.java
index 79a8c98..45a7b0a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManager.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManager.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection;
+package org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
import org.apache.shardingsphere.transaction.core.TransactionType;
@@ -47,8 +48,8 @@ public final class BackendTransactionManager implements TransactionManager {
@Override
public void begin() {
- if (!connection.getStatusManager().isInTransaction()) {
- connection.getStatusManager().switchToInTransaction();
+ if (!connection.getTransactionStatus().isInTransaction()) {
+ connection.getTransactionStatus().setInTransaction(true);
connection.releaseConnections(false);
}
if (TransactionType.LOCAL == transactionType || null == shardingTransactionManager) {
@@ -60,7 +61,7 @@ public final class BackendTransactionManager implements TransactionManager {
@Override
public void commit() throws SQLException {
- if (connection.getStatusManager().isInTransaction()) {
+ if (connection.getTransactionStatus().isInTransaction()) {
try {
if (TransactionType.LOCAL == transactionType || null == shardingTransactionManager) {
localTransactionManager.commit();
@@ -68,14 +69,14 @@ public final class BackendTransactionManager implements TransactionManager {
shardingTransactionManager.commit();
}
} finally {
- connection.getStatusManager().switchToUsing();
+ connection.getTransactionStatus().setInTransaction(false);
}
}
}
@Override
public void rollback() throws SQLException {
- if (connection.getStatusManager().isInTransaction()) {
+ if (connection.getTransactionStatus().isInTransaction()) {
try {
if (TransactionType.LOCAL == transactionType || null == shardingTransactionManager) {
localTransactionManager.rollback();
@@ -83,7 +84,7 @@ public final class BackendTransactionManager implements TransactionManager {
shardingTransactionManager.rollback();
}
} finally {
- connection.getStatusManager().switchToUsing();
+ connection.getTransactionStatus().setInTransaction(false);
}
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/LocalTransactionManager.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/LocalTransactionManager.java
similarity index 90%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/LocalTransactionManager.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/LocalTransactionManager.java
index b9c505a..287511e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/LocalTransactionManager.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/LocalTransactionManager.java
@@ -15,10 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection;
+package org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.MethodInvocation;
import java.sql.Connection;
import java.sql.SQLException;
@@ -40,7 +42,7 @@ public final class LocalTransactionManager implements TransactionManager {
@Override
public void commit() throws SQLException {
- if (connection.getStatusManager().isInTransaction()) {
+ if (connection.getTransactionStatus().isInTransaction()) {
Collection<SQLException> exceptions = new LinkedList<>(commitConnections());
throwSQLExceptionIfNecessary(exceptions);
}
@@ -48,7 +50,7 @@ public final class LocalTransactionManager implements TransactionManager {
@Override
public void rollback() throws SQLException {
- if (connection.getStatusManager().isInTransaction()) {
+ if (connection.getTransactionStatus().isInTransaction()) {
Collection<SQLException> exceptions = new LinkedList<>(rollbackConnections());
throwSQLExceptionIfNecessary(exceptions);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/TransactionManager.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionManager.java
similarity index 98%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/TransactionManager.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionManager.java
index 8e1bbfb..b8b8219 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/TransactionManager.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionManager.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection;
+package org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction;
import java.sql.SQLException;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionStatus.java
similarity index 82%
copy from shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java
copy to shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionStatus.java
index e6a6a2a..9cf8e53 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatus.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/TransactionStatus.java
@@ -15,12 +15,17 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.status;
+package org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction;
+
+import lombok.Getter;
+import lombok.Setter;
/**
- * Connection status.
+ * Transaction status.
*/
-public enum ConnectionStatus {
+@Getter
+@Setter
+public final class TransactionStatus {
- USING, RELEASED, IN_TRANSACTION
+ private volatile boolean inTransaction;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
index 81f268d..5776746 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/TextProtocolBackendHandlerFactory.java
@@ -92,7 +92,7 @@ public final class TextProtocolBackendHandlerFactory {
}
if (tclStatement instanceof SetAutoCommitStatement) {
if (((SetAutoCommitStatement) tclStatement).isAutoCommit()) {
- return backendConnection.getStatusManager().isInTransaction() ? new TransactionBackendHandler(TransactionOperationType.COMMIT, backendConnection) : new SkipBackendHandler();
+ return backendConnection.getTransactionStatus().isInTransaction() ? new TransactionBackendHandler(TransactionOperationType.COMMIT, backendConnection) : new SkipBackendHandler();
}
return new TransactionBackendHandler(TransactionOperationType.BEGIN, backendConnection);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
index 6107122..85fb395 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/transaction/TransactionBackendHandler.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.transaction;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
-import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendTransactionManager;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/TextProtocolBackendHandlerFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/TextProtocolBackendHandlerFactoryTest.java
index b396355..bfaaf34 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/TextProtocolBackendHandlerFactoryTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/TextProtocolBackendHandlerFactoryTest.java
@@ -21,7 +21,7 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
-import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.status.ConnectionStatusManager;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.TransactionStatus;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandlerFactory;
@@ -124,9 +124,9 @@ public final class TextProtocolBackendHandlerFactoryTest {
@Test
public void assertNewInstanceWithSetAutoCommitToOnForInTransaction() {
- ConnectionStatusManager statusManager = mock(ConnectionStatusManager.class);
- when(backendConnection.getStatusManager()).thenReturn(statusManager);
- when(statusManager.isInTransaction()).thenReturn(true);
+ TransactionStatus transactionStatus = mock(TransactionStatus.class);
+ when(backendConnection.getTransactionStatus()).thenReturn(transactionStatus);
+ when(transactionStatus.isInTransaction()).thenReturn(true);
String sql = "SET AUTOCOMMIT=1";
TextProtocolBackendHandler actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, backendConnection);
assertThat(actual, instanceOf(TransactionBackendHandler.class));
@@ -134,9 +134,9 @@ public final class TextProtocolBackendHandlerFactoryTest {
@Test
public void assertNewInstanceWithScopeSetAutoCommitToOnForInTransaction() {
- ConnectionStatusManager statusManager = mock(ConnectionStatusManager.class);
- when(backendConnection.getStatusManager()).thenReturn(statusManager);
- when(statusManager.isInTransaction()).thenReturn(true);
+ TransactionStatus transactionStatus = mock(TransactionStatus.class);
+ when(backendConnection.getTransactionStatus()).thenReturn(transactionStatus);
+ when(transactionStatus.isInTransaction()).thenReturn(true);
String sql = "SET @@SESSION.AUTOCOMMIT = ON";
TextProtocolBackendHandler actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, backendConnection);
assertThat(actual, instanceOf(TransactionBackendHandler.class));
@@ -145,9 +145,9 @@ public final class TextProtocolBackendHandlerFactoryTest {
@Test
public void assertNewInstanceWithSetAutoCommitToOnForNotInTransaction() {
String sql = "SET AUTOCOMMIT=1";
- ConnectionStatusManager statusManager = mock(ConnectionStatusManager.class);
- when(backendConnection.getStatusManager()).thenReturn(statusManager);
- when(statusManager.isInTransaction()).thenReturn(false);
+ TransactionStatus transactionStatus = mock(TransactionStatus.class);
+ when(backendConnection.getTransactionStatus()).thenReturn(transactionStatus);
+ when(transactionStatus.isInTransaction()).thenReturn(false);
TextProtocolBackendHandler actual = TextProtocolBackendHandlerFactory.newInstance(databaseType, sql, backendConnection);
assertThat(actual, instanceOf(SkipBackendHandler.class));
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
index 4089253..38c34f1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
@@ -27,6 +27,7 @@ import org.apache.shardingsphere.infra.context.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.JDBCBackendDataSource;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
@@ -128,44 +129,44 @@ public final class BackendConnectionTest {
@Test
public void assertGetConnectionCacheIsEmpty() throws SQLException {
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
when(backendDataSource.getConnections(anyString(), anyString(), eq(2), any())).thenReturn(MockConnectionUtil.mockNewConnections(2));
List<Connection> actualConnections = backendConnection.getConnections("ds1", 2, ConnectionMode.MEMORY_STRICTLY);
assertThat(actualConnections.size(), is(2));
assertThat(backendConnection.getConnectionSize(), is(2));
- assertTrue(backendConnection.getStatusManager().isInTransaction());
+ assertTrue(backendConnection.getTransactionStatus().isInTransaction());
}
@Test
public void assertGetConnectionSizeLessThanCache() throws SQLException {
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
MockConnectionUtil.setCachedConnections(backendConnection, "ds1", 10);
List<Connection> actualConnections = backendConnection.getConnections("ds1", 2, ConnectionMode.MEMORY_STRICTLY);
assertThat(actualConnections.size(), is(2));
assertThat(backendConnection.getConnectionSize(), is(10));
- assertTrue(backendConnection.getStatusManager().isInTransaction());
+ assertTrue(backendConnection.getTransactionStatus().isInTransaction());
}
@Test
public void assertGetConnectionSizeGreaterThanCache() throws SQLException {
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
MockConnectionUtil.setCachedConnections(backendConnection, "ds1", 10);
when(backendDataSource.getConnections(anyString(), anyString(), eq(2), any())).thenReturn(MockConnectionUtil.mockNewConnections(2));
List<Connection> actualConnections = backendConnection.getConnections("ds1", 12, ConnectionMode.MEMORY_STRICTLY);
assertThat(actualConnections.size(), is(12));
assertThat(backendConnection.getConnectionSize(), is(12));
- assertTrue(backendConnection.getStatusManager().isInTransaction());
+ assertTrue(backendConnection.getTransactionStatus().isInTransaction());
}
@Test
public void assertGetConnectionWithMethodInvocation() throws SQLException {
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
when(backendDataSource.getConnections(anyString(), anyString(), eq(2), any())).thenReturn(MockConnectionUtil.mockNewConnections(2));
setMethodInvocation();
List<Connection> actualConnections = backendConnection.getConnections("ds1", 2, ConnectionMode.MEMORY_STRICTLY);
verify(backendConnection.getMethodInvocations().iterator().next(), times(2)).invoke(any());
assertThat(actualConnections.size(), is(2));
- assertTrue(backendConnection.getStatusManager().isInTransaction());
+ assertTrue(backendConnection.getTransactionStatus().isInTransaction());
}
@SneakyThrows(ReflectiveOperationException.class)
@@ -192,11 +193,11 @@ public final class BackendConnectionTest {
@SneakyThrows
private void assertOneThreadResult() {
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
List<Connection> actualConnections = backendConnection.getConnections("ds1", 12, ConnectionMode.MEMORY_STRICTLY);
assertThat(actualConnections.size(), is(12));
assertThat(backendConnection.getConnectionSize(), is(12));
- assertTrue(backendConnection.getStatusManager().isInTransaction());
+ assertTrue(backendConnection.getTransactionStatus().isInTransaction());
}
@Test
@@ -206,7 +207,7 @@ public final class BackendConnectionTest {
backendConnection.setCurrentSchema(String.format(SCHEMA_PATTERN, 0));
when(backendDataSource.getConnections(anyString(), anyString(), eq(12), any())).thenReturn(MockConnectionUtil.mockNewConnections(12));
backendConnection.getConnections("ds1", 12, ConnectionMode.MEMORY_STRICTLY);
- backendConnection.getStatusManager().switchToUsing();
+ backendConnection.getConnectionStatusManager().switchToUsing();
mockResultSetAndStatement(backendConnection);
actual = backendConnection;
}
@@ -223,7 +224,7 @@ public final class BackendConnectionTest {
backendConnection.setCurrentSchema(String.format(SCHEMA_PATTERN, 0));
MockConnectionUtil.setCachedConnections(backendConnection, "ds1", 10);
when(backendDataSource.getConnections(anyString(), anyString(), eq(2), any())).thenReturn(MockConnectionUtil.mockNewConnections(2));
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
backendConnection.getConnections("ds1", 12, ConnectionMode.MEMORY_STRICTLY);
mockResultSetAndStatement(backendConnection);
actual = backendConnection;
@@ -240,10 +241,10 @@ public final class BackendConnectionTest {
try (BackendConnection backendConnection = new BackendConnection(TransactionType.LOCAL)) {
backendConnection.setCurrentSchema(String.format(SCHEMA_PATTERN, 0));
backendConnection.setTransactionType(TransactionType.XA);
- backendConnection.getStatusManager().switchToInTransaction();
+ backendConnection.getTransactionStatus().setInTransaction(true);
MockConnectionUtil.setCachedConnections(backendConnection, "ds1", 10);
backendConnection.getConnections("ds1", 12, ConnectionMode.MEMORY_STRICTLY);
- backendConnection.getStatusManager().switchToUsing();
+ backendConnection.getTransactionStatus().setInTransaction(false);
mockResultSetAndStatement(backendConnection);
mockResultSetAndStatementException(backendConnection);
actual = backendConnection;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManagerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManagerTest.java
deleted file mode 100644
index 1073b1f..0000000
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/status/ConnectionStatusManagerTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.status;
-
-import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.ResourceLock;
-import org.junit.Test;
-
-public final class ConnectionStatusManagerTest {
-
- private final ConnectionStatusManager connectionStatusManager = new ConnectionStatusManager(new ResourceLock());
-
- @Test
- public void assertWaitUntilConnectionReleaseForNoneTransaction() throws InterruptedException {
- Thread waitThread = new Thread(() -> {
- connectionStatusManager.switchToInTransaction();
- connectionStatusManager.waitUntilConnectionReleasedIfNecessary();
- });
- Thread notifyThread = new Thread(() -> {
- try {
- Thread.sleep(2000L);
- } catch (final InterruptedException ex) {
- Thread.currentThread().interrupt();
- }
- connectionStatusManager.switchToReleased();
- });
- waitThread.start();
- notifyThread.start();
- waitThread.join();
- notifyThread.join();
- }
-
- @Test
- public void assertWaitUntilConnectionReleaseForTransaction() throws InterruptedException {
- Thread waitThread = new Thread(() -> {
- connectionStatusManager.switchToUsing();
- connectionStatusManager.waitUntilConnectionReleasedIfNecessary();
- });
- Thread notifyThread = new Thread(() -> {
- try {
- Thread.sleep(2000L);
- } catch (final InterruptedException ex) {
- Thread.currentThread().interrupt();
- }
- connectionStatusManager.switchToReleased();
- });
- waitThread.start();
- notifyThread.start();
- waitThread.join();
- notifyThread.join();
- }
-}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManagerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/trnasaction/BackendTransactionManagerTest.java
similarity index 85%
rename from shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManagerTest.java
rename to shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/trnasaction/BackendTransactionManagerTest.java
index 1c3c97c..ef80029 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendTransactionManagerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/trnasaction/BackendTransactionManagerTest.java
@@ -15,10 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.communication.jdbc.connection;
+package org.apache.shardingsphere.proxy.backend.communication.jdbc.trnasaction;
import lombok.SneakyThrows;
-import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.status.ConnectionStatusManager;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.LocalTransactionManager;
+import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.TransactionStatus;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
@@ -46,7 +49,7 @@ public final class BackendTransactionManagerTest {
private BackendConnection backendConnection;
@Mock
- private ConnectionStatusManager statusManager;
+ private TransactionStatus transactionStatus;
@Mock
private LocalTransactionManager localTransactionManager;
@@ -60,7 +63,7 @@ public final class BackendTransactionManagerTest {
public void setUp() {
setTransactionContexts();
when(backendConnection.getSchemaName()).thenReturn("schema");
- when(backendConnection.getStatusManager()).thenReturn(statusManager);
+ when(backendConnection.getTransactionStatus()).thenReturn(transactionStatus);
}
@SneakyThrows(ReflectiveOperationException.class)
@@ -82,7 +85,7 @@ public final class BackendTransactionManagerTest {
public void assertBeginForLocalTransaction() {
newBackendTransactionManager(TransactionType.LOCAL, false);
backendTransactionManager.begin();
- verify(statusManager).switchToInTransaction();
+ verify(transactionStatus).setInTransaction(true);
verify(backendConnection).releaseConnections(false);
verify(localTransactionManager).begin();
}
@@ -91,7 +94,7 @@ public final class BackendTransactionManagerTest {
public void assertBeginForDistributedTransaction() {
newBackendTransactionManager(TransactionType.XA, true);
backendTransactionManager.begin();
- verify(statusManager, times(0)).switchToInTransaction();
+ verify(transactionStatus, times(0)).setInTransaction(true);
verify(backendConnection, times(0)).releaseConnections(false);
verify(shardingTransactionManager).begin();
}
@@ -100,7 +103,7 @@ public final class BackendTransactionManagerTest {
public void assertCommitForLocalTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.LOCAL, true);
backendTransactionManager.commit();
- verify(statusManager).switchToUsing();
+ verify(transactionStatus).setInTransaction(false);
verify(localTransactionManager).commit();
}
@@ -108,7 +111,7 @@ public final class BackendTransactionManagerTest {
public void assertCommitForDistributedTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.XA, true);
backendTransactionManager.commit();
- verify(statusManager).switchToUsing();
+ verify(transactionStatus).setInTransaction(false);
verify(shardingTransactionManager).commit();
}
@@ -116,7 +119,7 @@ public final class BackendTransactionManagerTest {
public void assertCommitWithoutTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.LOCAL, false);
backendTransactionManager.commit();
- verify(statusManager, times(0)).switchToUsing();
+ verify(transactionStatus, times(0)).setInTransaction(false);
verify(localTransactionManager, times(0)).commit();
verify(shardingTransactionManager, times(0)).commit();
}
@@ -125,7 +128,7 @@ public final class BackendTransactionManagerTest {
public void assertRollbackForLocalTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.LOCAL, true);
backendTransactionManager.rollback();
- verify(statusManager).switchToUsing();
+ verify(transactionStatus).setInTransaction(false);
verify(localTransactionManager).rollback();
}
@@ -133,7 +136,7 @@ public final class BackendTransactionManagerTest {
public void assertRollbackForDistributedTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.XA, true);
backendTransactionManager.rollback();
- verify(statusManager).switchToUsing();
+ verify(transactionStatus).setInTransaction(false);
verify(shardingTransactionManager).rollback();
}
@@ -141,14 +144,14 @@ public final class BackendTransactionManagerTest {
public void assertRollbackWithoutTransaction() throws SQLException {
newBackendTransactionManager(TransactionType.LOCAL, false);
backendTransactionManager.rollback();
- verify(statusManager, times(0)).switchToUsing();
+ verify(transactionStatus, times(0)).setInTransaction(false);
verify(localTransactionManager, times(0)).rollback();
verify(shardingTransactionManager, times(0)).rollback();
}
private void newBackendTransactionManager(final TransactionType transactionType, final boolean inTransaction) {
when(backendConnection.getTransactionType()).thenReturn(transactionType);
- when(statusManager.isInTransaction()).thenReturn(inTransaction);
+ when(transactionStatus.isInTransaction()).thenReturn(inTransaction);
backendTransactionManager = new BackendTransactionManager(backendConnection);
setLocalTransactionManager();
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
index c8cb9bf..058e7f8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
@@ -67,7 +67,7 @@ public final class CommandExecutorTask implements Runnable {
boolean isNeedFlush = false;
try (BackendConnection backendConnection = this.backendConnection;
PacketPayload payload = databaseProtocolFrontendEngine.getCodecEngine().createPacketPayload((ByteBuf) message)) {
- ConnectionStatusManager statusManager = backendConnection.getStatusManager();
+ ConnectionStatusManager statusManager = backendConnection.getConnectionStatusManager();
statusManager.waitUntilConnectionReleasedIfNecessary();
statusManager.switchToUsing();
isNeedFlush = executeCommand(context, payload, backendConnection);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
index 80d56bc..a298581 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
@@ -97,7 +97,7 @@ public final class CommandExecutorTaskTest {
when(executeEngine.getCommandExecutor(eq(commandPacketType), eq(commandPacket), eq(backendConnection))).thenReturn(queryCommandExecutor);
when(executeEngine.getCommandPacketType(eq(payload))).thenReturn(commandPacketType);
when(engine.getCommandExecuteEngine()).thenReturn(executeEngine);
- when(backendConnection.getStatusManager()).thenReturn(statusHandler);
+ when(backendConnection.getConnectionStatusManager()).thenReturn(statusHandler);
when(codecEngine.createPacketPayload(eq(message))).thenReturn(payload);
when(engine.getCodecEngine()).thenReturn(codecEngine);
CommandExecutorTask actual = new CommandExecutorTask(engine, backendConnection, handlerContext, message);
@@ -114,7 +114,7 @@ public final class CommandExecutorTaskTest {
when(executeEngine.getCommandExecutor(eq(commandPacketType), eq(commandPacket), eq(backendConnection))).thenReturn(queryCommandExecutor);
when(executeEngine.getCommandPacketType(eq(payload))).thenReturn(commandPacketType);
when(engine.getCommandExecuteEngine()).thenReturn(executeEngine);
- when(backendConnection.getStatusManager()).thenReturn(statusHandler);
+ when(backendConnection.getConnectionStatusManager()).thenReturn(statusHandler);
when(codecEngine.createPacketPayload(eq(message))).thenReturn(payload);
when(engine.getCodecEngine()).thenReturn(codecEngine);
CommandExecutorTask actual = new CommandExecutorTask(engine, backendConnection, handlerContext, message);
@@ -136,7 +136,7 @@ public final class CommandExecutorTaskTest {
when(executeEngine.getCommandExecutor(eq(commandPacketType), eq(commandPacket), eq(backendConnection))).thenReturn(commandExecutor);
when(executeEngine.getCommandPacketType(eq(payload))).thenReturn(commandPacketType);
when(engine.getCommandExecuteEngine()).thenReturn(executeEngine);
- when(backendConnection.getStatusManager()).thenReturn(statusHandler);
+ when(backendConnection.getConnectionStatusManager()).thenReturn(statusHandler);
when(codecEngine.createPacketPayload(eq(message))).thenReturn(payload);
when(engine.getCodecEngine()).thenReturn(codecEngine);
CommandExecutorTask actual = new CommandExecutorTask(engine, backendConnection, handlerContext, message);
@@ -150,7 +150,7 @@ public final class CommandExecutorTaskTest {
@Test
public void assertRunWithError() {
RuntimeException mockException = new RuntimeException("mock");
- when(backendConnection.getStatusManager()).thenThrow(mockException);
+ when(backendConnection.getConnectionStatusManager()).thenThrow(mockException);
when(codecEngine.createPacketPayload(message)).thenReturn(payload);
when(engine.getCodecEngine()).thenReturn(codecEngine);
when(executeEngine.getErrorPacket(eq(mockException))).thenReturn(databasePacket);