This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 30674fdab8c remove TrafficContextHolder.java use sql session to
replace (#20020)
30674fdab8c is described below
commit 30674fdab8cb33342c66fd3feed2b7e32abb4bd1
Author: Chuxin Chen <[email protected]>
AuthorDate: Wed Aug 10 15:25:17 2022 +0800
remove TrafficContextHolder.java use sql session to replace (#20020)
* rename SessionContext.java to SQLSession.java
* remove TrafficContextHolder.java
* remove TrafficContextHolder.java
* remove TrafficContextHolder.java
* remove TrafficContextHolder.java
---
.../shardingsphere/infra/session/SQLSession.java | 37 +++++++-----
.../infra/session/SessionContext.java | 29 ---------
.../infra/context/kernel/KernelProcessor.java | 6 +-
.../infra/context/kernel/KernelProcessorTest.java | 4 +-
.../table/FilterableTableScanExecutor.java | 6 +-
.../shardingsphere/infra/merge/MergeEngine.java | 8 +--
.../infra/merge/MergeEngineTest.java | 10 ++--
.../core/connection/ShardingSphereConnection.java | 11 ++--
.../statement/ShardingSpherePreparedStatement.java | 60 ++++++++++---------
.../core/statement/ShardingSphereStatement.java | 68 +++++++++++-----------
.../traffic/context/TrafficContextHolder.java | 57 ------------------
.../traffic/engine/TrafficEngine.java | 12 ++--
.../algorithm/context/TrafficContextTest.java | 40 -------------
.../algorithm/engine/TrafficEngineTest.java | 19 +++---
.../traffic/context/TrafficContextHolderTest.java | 42 -------------
.../communication/DatabaseCommunicationEngine.java | 2 +-
.../jdbc/JDBCDatabaseCommunicationEngine.java | 2 +-
.../vertx/VertxDatabaseCommunicationEngine.java | 2 +-
.../handler/distsql/rul/sql/PreviewHandler.java | 2 +-
.../proxy/backend/session/ConnectionSession.java | 6 +-
.../text/query/MySQLMultiStatementsHandler.java | 2 +-
.../PostgreSQLBatchedStatementsExecutor.java | 2 +-
.../describe/PostgreSQLComDescribeExecutor.java | 2 +-
23 files changed, 135 insertions(+), 294 deletions(-)
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContext.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SQLSession.java
similarity index 60%
rename from
shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContext.java
rename to
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SQLSession.java
index 61f8fc52b3c..34da226158b 100644
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContext.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SQLSession.java
@@ -15,29 +15,38 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.traffic.context;
+package org.apache.shardingsphere.infra.session;
-import lombok.Getter;
import lombok.Setter;
-import org.apache.shardingsphere.infra.route.context.RouteContext;
+
+import java.util.Optional;
/**
- * Traffic context.
+ * SQL session.
*/
-@Getter
-@Setter
-public final class TrafficContext {
-
- private String instanceId;
+public final class SQLSession implements AutoCloseable {
- private RouteContext routeContext = new RouteContext();
+ @Setter
+ private String trafficInstanceId;
/**
- * Judge whether statement is match traffic or not.
+ * Get traffic instance id.
*
- * @return whether statement is match traffic or not
+ * @return traffic instance id
+ */
+ public Optional<String> getTrafficInstanceId() {
+ return Optional.ofNullable(trafficInstanceId);
+ }
+
+ @Override
+ public void close() {
+ clearTrafficInstance();
+ }
+
+ /**
+ * Clear traffic instance.
*/
- public boolean isMatchTraffic() {
- return null != instanceId;
+ public void clearTrafficInstance() {
+ trafficInstanceId = null;
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SessionContext.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SessionContext.java
deleted file mode 100644
index 6880ecbbb48..00000000000
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/session/SessionContext.java
+++ /dev/null
@@ -1,29 +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.infra.session;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-/**
- * Session context.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SessionContext {
-}
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
index d556e7a05ba..ba26e2f5ca9 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
import org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteResult;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.engine.SQLRouteEngine;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
/**
* Kernel processor.
@@ -43,11 +43,11 @@ public final class KernelProcessor {
* @param database database
* @param globalRuleMetaData global rule meta data
* @param props configuration properties
- * @param sessionContext session context
+ * @param sqlSession session context
* @return execution context
*/
public ExecutionContext generateExecutionContext(final LogicSQL logicSQL,
final ShardingSphereDatabase database, final ShardingSphereRuleMetaData
globalRuleMetaData,
- final
ConfigurationProperties props, final SessionContext sessionContext) {
+ final
ConfigurationProperties props, final SQLSession sqlSession) {
RouteContext routeContext = route(logicSQL, database, props);
SQLRewriteResult rewriteResult = rewrite(logicSQL, database,
globalRuleMetaData, props, routeContext);
ExecutionContext result = createExecutionContext(logicSQL, database,
routeContext, rewriteResult);
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessorTest.java
b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessorTest.java
index 6efbcbb93be..9ec90091b32 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessorTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessorTest.java
@@ -28,7 +28,7 @@ import
org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResource;
import
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
@@ -55,7 +55,7 @@ public final class KernelProcessorTest {
mock(ShardingSphereResource.class, RETURNS_DEEP_STUBS), new
ShardingSphereRuleMetaData(Collections.singleton(mock(SQLTranslatorRule.class))),
Collections.emptyMap());
ConfigurationProperties props = new
ConfigurationProperties(createProperties());
ExecutionContext actual = new
KernelProcessor().generateExecutionContext(logicSQL, database, new
ShardingSphereRuleMetaData(Collections.singleton(mock(SQLTranslatorRule.class))),
props,
- mock(SessionContext.class));
+ mock(SQLSession.class));
assertThat(actual.getExecutionUnits().size(), is(1));
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/original/table/FilterableTableScanExecutor.java
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/original/table/FilterableTableScanExecutor.java
index 9e06555e546..c3a65b1533c 100644
---
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/original/table/FilterableTableScanExecutor.java
+++
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/original/table/FilterableTableScanExecutor.java
@@ -39,7 +39,7 @@ import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.binder.SQLStatementContextFactory;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
@@ -119,7 +119,7 @@ public final class FilterableTableScanExecutor implements
TableScanExecutor {
LogicSQL logicSQL = createLogicSQL(federationContext.getDatabases(),
sqlString, databaseType);
ShardingSphereDatabase database =
federationContext.getDatabases().get(databaseName.toLowerCase());
// TODO need to get session context
- ExecutionContext context = new
KernelProcessor().generateExecutionContext(logicSQL, database,
globalRuleMetaData, executorContext.getProps(), new SessionContext());
+ ExecutionContext context = new
KernelProcessor().generateExecutionContext(logicSQL, database,
globalRuleMetaData, executorContext.getProps(), new SQLSession());
if (federationContext.isPreview() ||
databaseType.getSystemSchemas().contains(schemaName)) {
federationContext.getExecutionUnits().addAll(context.getExecutionUnits());
return createEmptyEnumerable();
@@ -135,7 +135,7 @@ public final class FilterableTableScanExecutor implements
TableScanExecutor {
List<QueryResult> queryResults = execute(executionGroupContext,
databaseType);
ExecuteProcessEngine.finish(executionGroupContext.getExecutionID(),
eventBusContext);
// TODO need to get session context
- MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new SessionContext());
+ MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new SQLSession());
MergedResult mergedResult = mergeEngine.merge(queryResults,
logicSQL.getSqlStatementContext());
Collection<Statement> statements =
getStatements(executionGroupContext.getInputGroups());
return createEnumerable(mergedResult,
queryResults.get(0).getMetaData(), statements);
diff --git
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
index db4951252cb..abe502ebd8c 100644
---
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.merge;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngineFactory;
@@ -50,13 +50,13 @@ public final class MergeEngine {
@SuppressWarnings("rawtypes")
private final Map<ShardingSphereRule, ResultProcessEngine> engines;
- private final SessionContext sessionContext;
+ private final SQLSession sqlSession;
- public MergeEngine(final ShardingSphereDatabase database, final
ConfigurationProperties props, final SessionContext sessionContext) {
+ public MergeEngine(final ShardingSphereDatabase database, final
ConfigurationProperties props, final SQLSession sqlSession) {
this.database = database;
this.props = props;
engines =
ResultProcessEngineFactory.getInstances(database.getRuleMetaData().getRules());
- this.sessionContext = sessionContext;
+ this.sqlSession = sqlSession;
}
/**
diff --git
a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
index 5cf53f36acc..91f43f2f788 100644
---
a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.merge;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
import org.apache.shardingsphere.infra.merge.fixture.rule.DecoratorRuleFixture;
import org.apache.shardingsphere.infra.merge.fixture.rule.MergerRuleFixture;
@@ -55,7 +55,7 @@ public final class MergeEngineTest {
public void assertMergeWithIndependentRule() throws SQLException {
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(new
MockedRule()));
when(queryResult.getValue(1, String.class)).thenReturn("test");
- MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SessionContext.class)).merge(Collections.singletonList(queryResult),
+ MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SQLSession.class)).merge(Collections.singletonList(queryResult),
mock(SQLStatementContext.class));
assertThat(actual.getValue(1, String.class), is("test"));
}
@@ -63,7 +63,7 @@ public final class MergeEngineTest {
@Test
public void assertMergeWithMergerRuleOnly() throws SQLException {
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(new
MergerRuleFixture()));
- MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SessionContext.class)).merge(Collections.singletonList(queryResult),
+ MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SQLSession.class)).merge(Collections.singletonList(queryResult),
mock(SQLStatementContext.class));
assertThat(actual.getValue(1, String.class), is("merged_value"));
}
@@ -71,7 +71,7 @@ public final class MergeEngineTest {
@Test
public void assertMergeWithDecoratorRuleOnly() throws SQLException {
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(new
DecoratorRuleFixture()));
- MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SessionContext.class)).merge(Collections.singletonList(queryResult),
+ MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SQLSession.class)).merge(Collections.singletonList(queryResult),
mock(SQLStatementContext.class));
assertThat(actual.getValue(1, String.class), is("decorated_value"));
}
@@ -79,7 +79,7 @@ public final class MergeEngineTest {
@Test
public void assertMergeWithMergerRuleAndDecoratorRuleTogether() throws
SQLException {
when(database.getRuleMetaData().getRules()).thenReturn(Arrays.asList(new
MergerRuleFixture(), new DecoratorRuleFixture()));
- MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SessionContext.class)).merge(Collections.singletonList(queryResult),
+ MergedResult actual = new MergeEngine(database, new
ConfigurationProperties(new Properties()),
mock(SQLSession.class)).merge(Collections.singletonList(queryResult),
mock(SQLStatementContext.class));
assertThat(actual.getValue(1, String.class),
is("decorated_merged_value"));
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index a1360f64724..24812dff6f7 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -23,10 +23,9 @@ import
org.apache.shardingsphere.driver.jdbc.context.JDBCContext;
import
org.apache.shardingsphere.driver.jdbc.core.datasource.metadata.ShardingSphereDatabaseMetaData;
import
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement;
import
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.sharding.merge.ddl.fetch.FetchOrderByValueGroupsHolder;
-import org.apache.shardingsphere.traffic.context.TrafficContextHolder;
import org.apache.shardingsphere.transaction.TransactionHolder;
import java.sql.Array;
@@ -62,14 +61,14 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
private volatile boolean closed;
@Getter
- private final SessionContext sessionContext;
+ private final SQLSession sqlSession;
public ShardingSphereConnection(final String databaseName, final
ContextManager contextManager, final JDBCContext jdbcContext) {
this.databaseName = databaseName;
this.contextManager = contextManager;
this.jdbcContext = jdbcContext;
connectionManager = new ConnectionManager(databaseName,
contextManager);
- sessionContext = new SessionContext();
+ sqlSession = new SQLSession();
}
/**
@@ -175,7 +174,7 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
} finally {
connectionManager.getConnectionTransaction().setRollbackOnly(false);
TransactionHolder.clear();
- TrafficContextHolder.remove();
+ sqlSession.clearTrafficInstance();
FetchOrderByValueGroupsHolder.remove();
}
}
@@ -187,7 +186,7 @@ public final class ShardingSphereConnection extends
AbstractConnectionAdapter {
} finally {
connectionManager.getConnectionTransaction().setRollbackOnly(false);
TransactionHolder.clear();
- TrafficContextHolder.remove();
+ sqlSession.clearTrafficInstance();
FetchOrderByValueGroupsHolder.remove();
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index a2ec3b1170e..320995a3f34 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -73,6 +73,7 @@ import
org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
+import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import org.apache.shardingsphere.infra.rule.identifier.type.RawExecutionRule;
@@ -82,8 +83,6 @@ import
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
-import org.apache.shardingsphere.traffic.context.TrafficContext;
-import org.apache.shardingsphere.traffic.context.TrafficContextHolder;
import org.apache.shardingsphere.traffic.engine.TrafficEngine;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
@@ -148,7 +147,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
private ResultSet currentResultSet;
- private TrafficContext trafficContext;
+ private String trafficInstanceId;
private SQLFederationDeciderContext deciderContext;
@@ -211,9 +210,9 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, sql) -> ((PreparedStatement) statement).executeQuery());
}
deciderContext = decide(logicSQL,
metaDataContexts.getMetaData().getProps(),
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()));
@@ -239,29 +238,32 @@ public final class ShardingSpherePreparedStatement
extends AbstractPreparedState
return deciderEngine.decide(logicSQL, database);
}
- private JDBCExecutionUnit createTrafficExecutionUnit(final TrafficContext
trafficContext, final LogicSQL logicSQL) throws SQLException {
+ private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final LogicSQL logicSQL) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
- ExecutionUnit executionUnit = new
ExecutionUnit(trafficContext.getInstanceId(), new SQLUnit(logicSQL.getSql(),
logicSQL.getParameters()));
- ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(trafficContext.getRouteContext(),
Collections.singletonList(executionUnit));
+ ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(logicSQL.getSql(), logicSQL.getParameters()));
+ ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit));
if (context.getInputGroups().isEmpty() ||
context.getInputGroups().iterator().next().getInputs().isEmpty()) {
throw new ShardingSphereException("Can not get traffic execution
unit.");
}
return
context.getInputGroups().iterator().next().getInputs().iterator().next();
}
- private TrafficContext getTrafficContext(final LogicSQL logicSQL) {
- TrafficContext result = TrafficContextHolder.get().orElseGet(() ->
createTrafficContext(logicSQL));
- if (connection.isHoldTransaction()) {
- TrafficContextHolder.set(result);
+ private Optional<String> getInstanceIdAndSet(final LogicSQL logicSQL) {
+ Optional<String> result =
connection.getSqlSession().getTrafficInstanceId();
+ if (!result.isPresent()) {
+ result = getInstanceId(logicSQL);
+ }
+ if (connection.isHoldTransaction() && result.isPresent()) {
+ connection.getSqlSession().setTrafficInstanceId(result.get());
}
return result;
}
- private TrafficContext createTrafficContext(final LogicSQL logicSQL) {
+ private Optional<String> getInstanceId(final LogicSQL logicSQL) {
InstanceContext instanceContext =
connection.getContextManager().getInstanceContext();
return null != trafficRule && !trafficRule.getStrategyRules().isEmpty()
? new TrafficEngine(trafficRule,
instanceContext).dispatch(logicSQL, connection.isHoldTransaction())
- : new TrafficContext();
+ : Optional.empty();
}
private void resetParameters() throws SQLException {
@@ -314,9 +316,9 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, sql) -> ((PreparedStatement) statement).executeUpdate());
}
executionContext = createExecutionContext(logicSQL);
@@ -371,9 +373,9 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, sql) -> ((PreparedStatement) statement).execute());
}
deciderContext = decide(logicSQL,
metaDataContexts.getMetaData().getProps(),
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()));
@@ -442,7 +444,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
if (null != currentResultSet) {
return currentResultSet;
}
- if (trafficContext.isMatchTraffic()) {
+ if (null != trafficInstanceId) {
return executor.getTrafficExecutor().getResultSet();
}
if (null != deciderContext && deciderContext.isUseSQLFederation()) {
@@ -487,14 +489,14 @@ public final class ShardingSpherePreparedStatement
extends AbstractPreparedState
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules(),
connection.getDatabaseName(),
metaDataContexts.getMetaData().getDatabases(), null);
ExecutionContext result =
kernelProcessor.generateExecutionContext(logicSQL,
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
- metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(), connection.getSessionContext());
+ metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(), connection.getSqlSession());
findGeneratedKey(result).ifPresent(generatedKey ->
generatedValues.addAll(generatedKey.getGeneratedValues()));
return result;
}
- private ExecutionContext createExecutionContext(final LogicSQL logicSQL,
final TrafficContext trafficContext) {
- ExecutionUnit executionUnit = new
ExecutionUnit(trafficContext.getInstanceId(), new SQLUnit(logicSQL.getSql(),
logicSQL.getParameters()));
- return new ExecutionContext(logicSQL,
Collections.singletonList(executionUnit), trafficContext.getRouteContext());
+ private ExecutionContext createExecutionContext(final LogicSQL logicSQL,
final String trafficInstanceId) {
+ ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(logicSQL.getSql(), logicSQL.getParameters()));
+ return new ExecutionContext(logicSQL,
Collections.singletonList(executionUnit), new RouteContext());
}
private LogicSQL createLogicSQL() {
@@ -506,7 +508,7 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
}
private MergedResult mergeQuery(final List<QueryResult> queryResults)
throws SQLException {
- MergeEngine mergeEngine = new
MergeEngine(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
metaDataContexts.getMetaData().getProps(), connection.getSessionContext());
+ MergeEngine mergeEngine = new
MergeEngine(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
metaDataContexts.getMetaData().getProps(), connection.getSqlSession());
return mergeEngine.merge(queryResults,
executionContext.getSqlStatementContext());
}
@@ -565,8 +567,8 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
public void addBatch() {
try {
LogicSQL logicSQL = createLogicSQL();
- trafficContext = getTrafficContext(logicSQL);
- executionContext = trafficContext.isMatchTraffic() ?
createExecutionContext(logicSQL, trafficContext) :
createExecutionContext(logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ executionContext = null != trafficInstanceId ?
createExecutionContext(logicSQL, trafficInstanceId) :
createExecutionContext(logicSQL);
batchPreparedStatementExecutor.addBatchForExecutionUnits(executionContext.getExecutionUnits());
} finally {
currentResultSet = null;
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 78cd9509211..2e66734f4b7 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -67,6 +67,7 @@ import
org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.merge.MergeEngine;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import org.apache.shardingsphere.infra.rule.identifier.type.RawExecutionRule;
@@ -75,8 +76,6 @@ import
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
-import org.apache.shardingsphere.traffic.context.TrafficContext;
-import org.apache.shardingsphere.traffic.context.TrafficContextHolder;
import org.apache.shardingsphere.traffic.engine.TrafficEngine;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
@@ -124,7 +123,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private ResultSet currentResultSet;
- private TrafficContext trafficContext;
+ private String trafficInstanceId;
private SQLFederationDeciderContext deciderContext;
@@ -157,9 +156,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
ResultSet result;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
Statement::executeQuery);
}
deciderContext = decide(logicSQL,
metaDataContexts.getMetaData().getProps(),
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()));
@@ -185,19 +184,22 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
return deciderEngine.decide(logicSQL, database);
}
- private TrafficContext getTrafficContext(final LogicSQL logicSQL) {
- TrafficContext result = TrafficContextHolder.get().orElseGet(() ->
createTrafficContext(logicSQL));
- if (connection.isHoldTransaction()) {
- TrafficContextHolder.set(result);
+ private Optional<String> getInstanceIdAndSet(final LogicSQL logicSQL) {
+ Optional<String> result =
connection.getSqlSession().getTrafficInstanceId();
+ if (!result.isPresent()) {
+ result = getInstanceId(logicSQL);
+ }
+ if (connection.isHoldTransaction() && result.isPresent()) {
+ connection.getSqlSession().setTrafficInstanceId(result.get());
}
return result;
}
- private TrafficContext createTrafficContext(final LogicSQL logicSQL) {
+ private Optional<String> getInstanceId(final LogicSQL logicSQL) {
InstanceContext instanceContext =
connection.getContextManager().getInstanceContext();
return null != trafficRule && !trafficRule.getStrategyRules().isEmpty()
? new TrafficEngine(trafficRule,
instanceContext).dispatch(logicSQL, connection.isHoldTransaction())
- : new TrafficContext();
+ : Optional.empty();
}
private List<ResultSet> getShardingSphereResultSets() {
@@ -233,9 +235,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
public int executeUpdate(final String sql) throws SQLException {
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
Statement::executeUpdate);
}
executionContext = createExecutionContext(logicSQL);
@@ -261,9 +263,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
}
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, actualSQL) -> statement.executeUpdate(actualSQL,
autoGeneratedKeys));
}
executionContext = createExecutionContext(logicSQL);
@@ -287,9 +289,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, actualSQL) -> statement.executeUpdate(actualSQL, columnIndexes));
}
executionContext = createExecutionContext(logicSQL);
@@ -313,9 +315,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, actualSQL) -> statement.executeUpdate(actualSQL, columnNames));
}
executionContext = createExecutionContext(logicSQL);
@@ -429,9 +431,9 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
private boolean execute0(final String sql, final ExecuteCallback callback)
throws SQLException {
try {
LogicSQL logicSQL = createLogicSQL(sql);
- trafficContext = getTrafficContext(logicSQL);
- if (trafficContext.isMatchTraffic()) {
- JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficContext, logicSQL);
+ trafficInstanceId = getInstanceIdAndSet(logicSQL).orElse(null);
+ if (null != trafficInstanceId) {
+ JDBCExecutionUnit executionUnit =
createTrafficExecutionUnit(trafficInstanceId, logicSQL);
return executor.getTrafficExecutor().execute(executionUnit,
(statement, actualSQL) -> callback.execute(actualSQL, statement));
}
deciderContext = decide(logicSQL,
metaDataContexts.getMetaData().getProps(),
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()));
@@ -453,10 +455,10 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
}
}
- private JDBCExecutionUnit createTrafficExecutionUnit(final TrafficContext
trafficContext, final LogicSQL logicSQL) throws SQLException {
+ private JDBCExecutionUnit createTrafficExecutionUnit(final String
trafficInstanceId, final LogicSQL logicSQL) throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = createDriverExecutionPrepareEngine();
- ExecutionUnit executionUnit = new
ExecutionUnit(trafficContext.getInstanceId(), new SQLUnit(logicSQL.getSql(),
logicSQL.getParameters()));
- ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(trafficContext.getRouteContext(),
Collections.singletonList(executionUnit));
+ ExecutionUnit executionUnit = new ExecutionUnit(trafficInstanceId, new
SQLUnit(logicSQL.getSql(), logicSQL.getParameters()));
+ ExecutionGroupContext<JDBCExecutionUnit> context =
prepareEngine.prepare(new RouteContext(),
Collections.singletonList(executionUnit));
return context.getInputGroups().stream().flatMap(each ->
each.getInputs().stream()).findFirst().orElseThrow(() -> new
ShardingSphereException("Can not get traffic execution unit."));
}
@@ -481,7 +483,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().getRules(),
connection.getDatabaseName(),
metaDataContexts.getMetaData().getDatabases(), null);
return kernelProcessor.generateExecutionContext(logicSQL,
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
- metaDataContexts.getMetaData().getProps(),
connection.getSessionContext());
+ metaDataContexts.getMetaData().getProps(),
connection.getSqlSession());
}
private ExecutionGroupContext<JDBCExecutionUnit> createExecutionContext()
throws SQLException {
@@ -513,7 +515,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
if (null != currentResultSet) {
return currentResultSet;
}
- if (trafficContext.isMatchTraffic()) {
+ if (null != trafficInstanceId) {
return executor.getTrafficExecutor().getResultSet();
}
if (null != deciderContext && deciderContext.isUseSQLFederation()) {
@@ -554,7 +556,7 @@ public final class ShardingSphereStatement extends
AbstractStatementAdapter {
}
private MergedResult mergeQuery(final List<QueryResult> queryResults)
throws SQLException {
- MergeEngine mergeEngine = new
MergeEngine(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
metaDataContexts.getMetaData().getProps(), connection.getSessionContext());
+ MergeEngine mergeEngine = new
MergeEngine(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()),
metaDataContexts.getMetaData().getProps(), connection.getSqlSession());
return mergeEngine.merge(queryResults,
executionContext.getSqlStatementContext());
}
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContextHolder.java
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContextHolder.java
deleted file mode 100644
index fb3db9645d3..00000000000
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/context/TrafficContextHolder.java
+++ /dev/null
@@ -1,57 +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.traffic.context;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-import java.util.Optional;
-
-/**
- * Hold traffic context for current thread.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class TrafficContextHolder {
-
- private static final ThreadLocal<TrafficContext> TRAFFIC_CONTEXT = new
ThreadLocal<>();
-
- /**
- * Set traffic context.
- *
- * @param trafficContext traffic context
- */
- public static void set(final TrafficContext trafficContext) {
- TRAFFIC_CONTEXT.set(trafficContext);
- }
-
- /**
- * Get traffic context.
- *
- * @return traffic context
- */
- public static Optional<TrafficContext> get() {
- return Optional.ofNullable(TRAFFIC_CONTEXT.get());
- }
-
- /**
- * Remove traffic context.
- */
- public static void remove() {
- TRAFFIC_CONTEXT.remove();
- }
-}
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/engine/TrafficEngine.java
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/engine/TrafficEngine.java
index 89cd23255e7..fff0b708f3f 100644
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/engine/TrafficEngine.java
+++
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/engine/TrafficEngine.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
-import org.apache.shardingsphere.traffic.context.TrafficContext;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
import org.apache.shardingsphere.traffic.rule.TrafficStrategyRule;
import org.apache.shardingsphere.traffic.spi.TrafficLoadBalanceAlgorithm;
@@ -45,21 +44,20 @@ public final class TrafficEngine {
*
* @param logicSQL logic SQL
* @param inTransaction is in transaction
- * @return traffic context
+ * @return instance id
*/
- public TrafficContext dispatch(final LogicSQL logicSQL, final boolean
inTransaction) {
+ public Optional<String> dispatch(final LogicSQL logicSQL, final boolean
inTransaction) {
Optional<TrafficStrategyRule> strategyRule =
trafficRule.findMatchedStrategyRule(logicSQL, inTransaction);
- TrafficContext result = new TrafficContext();
if (!strategyRule.isPresent() ||
isInvalidStrategyRule(strategyRule.get())) {
- return result;
+ return Optional.empty();
}
List<InstanceMetaData> instances =
instanceContext.getAllClusterInstances(InstanceType.PROXY,
strategyRule.get().getLabels());
if (!instances.isEmpty()) {
TrafficLoadBalanceAlgorithm loadBalancer =
strategyRule.get().getLoadBalancer();
InstanceMetaData instanceMetaData = 1 == instances.size() ?
instances.iterator().next() :
loadBalancer.getInstanceId(strategyRule.get().getName(), instances);
- result.setInstanceId(instanceMetaData.getId());
+ return Optional.of(instanceMetaData.getId());
}
- return result;
+ return Optional.empty();
}
private boolean isInvalidStrategyRule(final TrafficStrategyRule
strategyRule) {
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/context/TrafficContextTest.java
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/context/TrafficContextTest.java
deleted file mode 100644
index ce9a6e55c2e..00000000000
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/context/TrafficContextTest.java
+++ /dev/null
@@ -1,40 +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.traffic.algorithm.context;
-
-import org.apache.shardingsphere.traffic.context.TrafficContext;
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public final class TrafficContextTest {
-
- @Test
- public void assertIsMatchTrafficWhenExistInstanceId() {
- TrafficContext trafficContext = new TrafficContext();
- trafficContext.setInstanceId("127.0.0.1@3307");
- assertTrue(trafficContext.isMatchTraffic());
- }
-
- @Test
- public void assertIsMatchTrafficWhenNotExistInstanceId() {
- TrafficContext trafficContext = new TrafficContext();
- assertFalse(trafficContext.isMatchTraffic());
- }
-}
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
index 72cf85298d7..ad45af93189 100644
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
+++
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/algorithm/engine/TrafficEngineTest.java
@@ -22,7 +22,6 @@ import
org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
-import org.apache.shardingsphere.traffic.context.TrafficContext;
import org.apache.shardingsphere.traffic.engine.TrafficEngine;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
import org.apache.shardingsphere.traffic.rule.TrafficStrategyRule;
@@ -39,7 +38,7 @@ import java.util.List;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -63,8 +62,8 @@ public final class TrafficEngineTest {
public void assertDispatchWhenNotExistTrafficStrategyRule() {
TrafficEngine trafficEngine = new TrafficEngine(trafficRule,
instanceContext);
when(trafficRule.findMatchedStrategyRule(logicSQL,
false)).thenReturn(Optional.empty());
- TrafficContext actual = trafficEngine.dispatch(logicSQL, false);
- assertNull(actual.getInstanceId());
+ Optional<String> actual = trafficEngine.dispatch(logicSQL, false);
+ assertFalse(actual.isPresent());
}
@Test
@@ -73,8 +72,8 @@ public final class TrafficEngineTest {
TrafficStrategyRule strategyRule = mock(TrafficStrategyRule.class);
when(strategyRule.getLabels()).thenReturn(Collections.emptyList());
when(trafficRule.findMatchedStrategyRule(logicSQL,
false)).thenReturn(Optional.of(strategyRule));
- TrafficContext actual = trafficEngine.dispatch(logicSQL, false);
- assertNull(actual.getInstanceId());
+ Optional<String> actual = trafficEngine.dispatch(logicSQL, false);
+ assertFalse(actual.isPresent());
}
@Test
@@ -82,8 +81,8 @@ public final class TrafficEngineTest {
TrafficEngine trafficEngine = new TrafficEngine(trafficRule,
instanceContext);
when(trafficRule.findMatchedStrategyRule(logicSQL,
false)).thenReturn(Optional.of(strategyRule));
when(strategyRule.getLabels()).thenReturn(Arrays.asList("OLTP",
"OLAP"));
- TrafficContext actual = trafficEngine.dispatch(logicSQL, false);
- assertNull(actual.getInstanceId());
+ Optional<String> actual = trafficEngine.dispatch(logicSQL, false);
+ assertFalse(actual.isPresent());
}
@Test
@@ -97,8 +96,8 @@ public final class TrafficEngineTest {
when(strategyRule.getLoadBalancer()).thenReturn(loadBalancer);
when(strategyRule.getName()).thenReturn("traffic");
when(instanceContext.getAllClusterInstances(InstanceType.PROXY,
Arrays.asList("OLTP", "OLAP"))).thenReturn(instanceIds);
- TrafficContext actual = trafficEngine.dispatch(logicSQL, false);
- assertThat(actual.getInstanceId(), is("foo_id"));
+ Optional<String> actual = trafficEngine.dispatch(logicSQL, false);
+ assertThat(actual, is(Optional.of("foo_id")));
}
private List<InstanceMetaData> mockComputeNodeInstances() {
diff --git
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/context/TrafficContextHolderTest.java
b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/context/TrafficContextHolderTest.java
deleted file mode 100644
index 6d7aa2582b1..00000000000
---
a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/test/java/org/apache/shardingsphere/traffic/context/TrafficContextHolderTest.java
+++ /dev/null
@@ -1,42 +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.traffic.context;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-@RunWith(MockitoJUnitRunner.class)
-public final class TrafficContextHolderTest {
-
- @Mock
- private TrafficContext trafficContext;
-
- @Test
- public void assertTrafficContextHolder() {
- assertFalse(TrafficContextHolder.get().isPresent());
- TrafficContextHolder.set(trafficContext);
- assertTrue(TrafficContextHolder.get().isPresent());
- TrafficContextHolder.remove();
- assertFalse(TrafficContextHolder.get().isPresent());
- }
-}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
index 86ce03274b4..c6e5bc327e1 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
@@ -177,7 +177,7 @@ public abstract class DatabaseCommunicationEngine
implements DatabaseBackendHand
protected MergedResult mergeQuery(final SQLStatementContext<?>
sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
MergeEngine mergeEngine = new MergeEngine(database,
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps(),
-
getBackendConnection().getConnectionSession().getSessionContext());
+ getBackendConnection().getConnectionSession().getSqlSession());
return mergeEngine.merge(queryResults, sqlStatementContext);
}
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 414c05bdaa8..26c2a087de8 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
@@ -124,7 +124,7 @@ public final class JDBCDatabaseCommunicationEngine extends
DatabaseCommunication
return processExecuteFederation(resultSet, metaDataContexts);
}
ExecutionContext executionContext =
getKernelProcessor().generateExecutionContext(logicSQL, getDatabase(),
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
- metaDataContexts.getMetaData().getProps(),
backendConnection.getConnectionSession().getSessionContext());
+ metaDataContexts.getMetaData().getProps(),
backendConnection.getConnectionSession().getSqlSession());
if (executionContext.getExecutionUnits().isEmpty()) {
return new
UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement());
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
index 21c96a3d60e..1a103420e22 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/vertx/VertxDatabaseCommunicationEngine.java
@@ -63,7 +63,7 @@ public final class VertxDatabaseCommunicationEngine extends
DatabaseCommunicatio
return Future.failedFuture(new
UnsupportedOperationException("Executing federated query by Vert.x is not
supported yet."));
}
ExecutionContext executionContext =
getKernelProcessor().generateExecutionContext(getLogicSQL(), getDatabase(),
metaData.getGlobalRuleMetaData(),
- metaData.getProps(),
getBackendConnection().getConnectionSession().getSessionContext());
+ metaData.getProps(),
getBackendConnection().getConnectionSession().getSqlSession());
if (executionContext.getExecutionUnits().isEmpty()) {
return Future.succeededFuture(new
UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement()));
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
index 458d80573fc..db6cdaf2a03 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
@@ -118,7 +118,7 @@ public final class PreviewHandler extends
SQLRULBackendHandler<PreviewStatement>
ConfigurationProperties props =
metaDataContexts.getMetaData().getProps();
SQLFederationDeciderContext deciderContext = decide(logicSQL, props,
metaDataContexts.getMetaData().getDatabase(getConnectionSession().getDatabaseName()));
Collection<ExecutionUnit> executionUnits =
deciderContext.isUseSQLFederation() ? getFederationExecutionUnits(logicSQL,
databaseName, metaDataContexts)
- : kernelProcessor.generateExecutionContext(logicSQL, database,
globalRuleMetaData, props,
getConnectionSession().getSessionContext()).getExecutionUnits();
+ : kernelProcessor.generateExecutionContext(logicSQL, database,
globalRuleMetaData, props,
getConnectionSession().getSqlSession()).getExecutionUnits();
return
executionUnits.stream().map(this::buildRow).collect(Collectors.toList());
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
index efd1b65b78a..75ba35b5326 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSession.java
@@ -23,7 +23,7 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.infra.binder.statement.ddl.CursorStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.session.SessionContext;
+import org.apache.shardingsphere.infra.session.SQLSession;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import
org.apache.shardingsphere.infra.executor.sql.prepare.driver.ExecutorStatementManager;
@@ -78,7 +78,7 @@ public final class ConnectionSession {
private final PreparedStatementRegistry preparedStatementRegistry = new
PreparedStatementRegistry();
- private final SessionContext sessionContext;
+ private final SQLSession sqlSession;
private final RequiredSessionVariableRecorder
requiredSessionVariableRecorder = new RequiredSessionVariableRecorder();
@@ -88,7 +88,7 @@ public final class ConnectionSession {
this.attributeMap = attributeMap;
backendConnection = determineBackendConnection();
statementManager = determineStatementManager();
- sessionContext = new SessionContext();
+ sqlSession = new SQLSession();
}
private BackendConnection determineBackendConnection() {
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
index 94e27cd664c..4a672b038cb 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandler.java
@@ -131,7 +131,7 @@ public final class MySQLMultiStatementsHandler implements
ProxyBackendHandler {
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getRuleMetaData().getRules(),
connectionSession.getDatabaseName(),
metaDataContexts.getMetaData().getDatabases(), null);
return kernelProcessor.generateExecutionContext(logicSQL,
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()),
- metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(),
connectionSession.getSessionContext());
+ metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(), connectionSession.getSqlSession());
}
@Override
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
index a8792831408..f93285271df 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
@@ -128,7 +128,7 @@ public final class PostgreSQLBatchedStatementsExecutor {
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()).getRuleMetaData().getRules(),
connectionSession.getDatabaseName(),
metaDataContexts.getMetaData().getDatabases(), null);
return kernelProcessor.generateExecutionContext(logicSQL,
metaDataContexts.getMetaData().getDatabase(connectionSession.getDatabaseName()),
- metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(),
connectionSession.getSessionContext());
+ metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(), connectionSession.getSqlSession());
}
/**
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
index ed74bb2ad3e..61f8b936c97 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
@@ -200,7 +200,7 @@ public final class PostgreSQLComDescribeExecutor implements
CommandExecutor {
LogicSQL logicSQL = new LogicSQL(sqlStatementContext,
preparedStatement.getSql(), Collections.emptyList());
ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(databaseName);
ExecutionContext executionContext = new
KernelProcessor().generateExecutionContext(
- logicSQL, database,
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(),
connectionSession.getSessionContext());
+ logicSQL, database,
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(), connectionSession.getSqlSession());
ExecutionUnit executionUnitSample =
executionContext.getExecutionUnits().iterator().next();
JDBCBackendConnection backendConnection = (JDBCBackendConnection)
connectionSession.getBackendConnection();
Connection connection =
backendConnection.getConnections(executionUnitSample.getDataSourceName(), 1,
ConnectionMode.CONNECTION_STRICTLY).iterator().next();