Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
b388432a
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b388432a
编写于
1月 10, 2019
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ShardingTransactionHandler => ShardingTransactionEngine
上级
f5299f3b
变更
21
显示空白变更内容
内联
并排
Showing
21 changed file
with
168 addition
and
175 deletion
+168
-175
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractConnectionAdapter.java
.../shardingjdbc/jdbc/adapter/AbstractConnectionAdapter.java
+9
-9
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractDataSourceAdapter.java
.../shardingjdbc/jdbc/adapter/AbstractDataSourceAdapter.java
+2
-2
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/adapter/ConnectionAdapterTest.java
...here/shardingjdbc/jdbc/adapter/ConnectionAdapterTest.java
+8
-8
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/connection/ShardingConnectionTest.java
...dingjdbc/jdbc/core/connection/ShardingConnectionTest.java
+10
-10
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/ShardingDataSourceTest.java
...dingjdbc/jdbc/core/datasource/ShardingDataSourceTest.java
+3
-3
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fixture/FixedBaseShardingTransactionEngine.java
...jdbc/core/fixture/FixedBaseShardingTransactionEngine.java
+14
-14
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fixture/FixedXAShardingTransactionEngine.java
...c/jdbc/core/fixture/FixedXAShardingTransactionEngine.java
+14
-14
sharding-jdbc/sharding-jdbc-core/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionEngine
....shardingsphere.transaction.spi.ShardingTransactionEngine
+2
-0
sharding-jdbc/sharding-jdbc-core/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionHandler
...shardingsphere.transaction.spi.ShardingTransactionHandler
+0
-8
sharding-proxy/src/main/java/io/shardingsphere/shardingproxy/backend/jdbc/connection/BackendTransactionManager.java
...xy/backend/jdbc/connection/BackendTransactionManager.java
+16
-16
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/backend/TransactionBackendHandlerTest.java
.../shardingproxy/backend/TransactionBackendHandlerTest.java
+1
-1
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/transport/mysql/packet/command/query/text/query/ComQueryPacketTest.java
...l/packet/command/query/text/query/ComQueryPacketTest.java
+3
-3
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/transport/mysql/packet/command/query/text/query/FixedXAShardingTransactionEngine.java
...nd/query/text/query/FixedXAShardingTransactionEngine.java
+13
-13
sharding-proxy/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionEngine
....shardingsphere.transaction.spi.ShardingTransactionEngine
+1
-1
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/java/io/shardingsphere/transaction/xa/handler/XAShardingTransactionEngine.java
...e/transaction/xa/handler/XAShardingTransactionEngine.java
+19
-20
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionEngine
....shardingsphere.transaction.spi.ShardingTransactionEngine
+1
-0
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionHandler
...shardingsphere.transaction.spi.ShardingTransactionHandler
+0
-1
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/test/java/io/shardingsphere/transaction/xa/AllTests.java
.../test/java/io/shardingsphere/transaction/xa/AllTests.java
+2
-2
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/test/java/io/shardingsphere/transaction/xa/handler/XAShardingTransactionEngineTest.java
...ansaction/xa/handler/XAShardingTransactionEngineTest.java
+17
-17
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/core/loader/ShardingTransactionEngineRegistry.java
...action/core/loader/ShardingTransactionEngineRegistry.java
+14
-14
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/spi/ShardingTransactionEngine.java
...dingsphere/transaction/spi/ShardingTransactionEngine.java
+19
-19
未找到文件。
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractConnectionAdapter.java
浏览文件 @
b388432a
...
...
@@ -30,8 +30,8 @@ import io.shardingsphere.spi.root.RootInvokeHook;
import
io.shardingsphere.spi.root.SPIRootInvokeHook
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.api.TransactionTypeHolder
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Handler
Registry
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Engine
Registry
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
lombok.Getter
;
import
javax.sql.DataSource
;
...
...
@@ -75,14 +75,14 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
private
final
TransactionType
transactionType
;
private
final
ShardingTransaction
Handler
shardingTransactionHandler
;
private
final
ShardingTransaction
Engine
shardingTransactionEngine
;
protected
AbstractConnectionAdapter
(
final
TransactionType
transactionType
)
{
rootInvokeHook
.
start
();
this
.
transactionType
=
transactionType
;
shardingTransaction
Handler
=
ShardingTransactionHandlerRegistry
.
getHandler
(
transactionType
);
shardingTransaction
Engine
=
ShardingTransactionEngineRegistry
.
getShardingTransactionEngine
(
transactionType
);
if
(
TransactionType
.
LOCAL
!=
transactionType
)
{
Preconditions
.
checkNotNull
(
shardingTransaction
Handler
,
"Cannot find transaction manager of [%s]"
,
transactionType
);
Preconditions
.
checkNotNull
(
shardingTransaction
Engine
,
"Cannot find transaction manager of [%s]"
,
transactionType
);
}
}
...
...
@@ -162,7 +162,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
}
private
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
Connection
result
=
null
==
shardingTransaction
Handler
?
dataSource
.
getConnection
()
:
shardingTransactionHandler
.
createConnection
(
dataSourceName
,
dataSource
);
Connection
result
=
null
==
shardingTransaction
Engine
?
dataSource
.
getConnection
()
:
shardingTransactionEngine
.
createConnection
(
dataSourceName
,
dataSource
);
replayMethodsInvocation
(
result
);
return
result
;
}
...
...
@@ -180,7 +180,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
if
(
TransactionType
.
LOCAL
==
transactionType
)
{
setAutoCommitForLocalTransaction
(
autoCommit
);
}
else
if
(!
autoCommit
)
{
shardingTransaction
Handler
.
begin
();
shardingTransaction
Engine
.
begin
();
}
}
...
...
@@ -200,7 +200,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
if
(
TransactionType
.
LOCAL
==
transactionType
)
{
commitForLocalTransaction
();
}
else
{
shardingTransaction
Handler
.
commit
();
shardingTransaction
Engine
.
commit
();
}
}
...
...
@@ -219,7 +219,7 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
if
(
TransactionType
.
LOCAL
==
transactionType
)
{
rollbackForLocalTransaction
();
}
else
{
shardingTransaction
Handler
.
rollback
();
shardingTransaction
Engine
.
rollback
();
}
}
...
...
sharding-jdbc/sharding-jdbc-core/src/main/java/io/shardingsphere/shardingjdbc/jdbc/adapter/AbstractDataSourceAdapter.java
浏览文件 @
b388432a
...
...
@@ -22,7 +22,7 @@ import io.shardingsphere.core.bootstrap.ShardingBootstrap;
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.core.util.ReflectiveUtil
;
import
io.shardingsphere.shardingjdbc.jdbc.unsupported.AbstractUnsupportedOperationDataSource
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Handler
Registry
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Engine
Registry
;
import
lombok.Getter
;
import
lombok.Setter
;
...
...
@@ -57,7 +57,7 @@ public abstract class AbstractDataSourceAdapter extends AbstractUnsupportedOpera
public
AbstractDataSourceAdapter
(
final
Map
<
String
,
DataSource
>
dataSourceMap
)
throws
SQLException
{
databaseType
=
getDatabaseType
(
dataSourceMap
.
values
());
ShardingTransaction
Handler
Registry
.
registerTransactionResource
(
databaseType
,
dataSourceMap
);
ShardingTransaction
Engine
Registry
.
registerTransactionResource
(
databaseType
,
dataSourceMap
);
this
.
dataSourceMap
=
dataSourceMap
;
}
...
...
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/adapter/ConnectionAdapterTest.java
浏览文件 @
b388432a
...
...
@@ -20,8 +20,8 @@ package io.shardingsphere.shardingjdbc.jdbc.adapter;
import
com.google.common.collect.Multimap
;
import
io.shardingsphere.shardingjdbc.common.base.AbstractShardingJDBCDatabaseAndTableTest
;
import
io.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed.FixedBaseShardingTransactionHandler
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed.FixedXAShardingTransactionHandler
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture.FixedBaseShardingTransactionEngine
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture.FixedXAShardingTransactionEngine
;
import
io.shardingsphere.shardingjdbc.jdbc.util.JDBCTestSQL
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.api.TransactionTypeHolder
;
...
...
@@ -47,8 +47,8 @@ public final class ConnectionAdapterTest extends AbstractShardingJDBCDatabaseAnd
@After
public
void
tearDown
()
{
TransactionTypeHolder
.
clear
();
FixedXAShardingTransaction
Handler
.
getInvokes
().
clear
();
FixedBaseShardingTransaction
Handler
.
getInvokes
().
clear
();
FixedXAShardingTransaction
Engine
.
getInvokes
().
clear
();
FixedBaseShardingTransaction
Engine
.
getInvokes
().
clear
();
}
@Test
...
...
@@ -75,7 +75,7 @@ public final class ConnectionAdapterTest extends AbstractShardingJDBCDatabaseAnd
TransactionTypeHolder
.
set
(
TransactionType
.
XA
);
try
(
ShardingConnection
actual
=
getShardingDataSource
().
getConnection
())
{
actual
.
setAutoCommit
(
true
);
assertNull
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"begin"
));
assertNull
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"begin"
));
}
}
...
...
@@ -84,7 +84,7 @@ public final class ConnectionAdapterTest extends AbstractShardingJDBCDatabaseAnd
TransactionTypeHolder
.
set
(
TransactionType
.
BASE
);
try
(
ShardingConnection
actual
=
getShardingDataSource
().
getConnection
())
{
actual
.
setAutoCommit
(
true
);
assertNull
(
FixedBaseShardingTransaction
Handler
.
getInvokes
().
get
(
"begin"
));
assertNull
(
FixedBaseShardingTransaction
Engine
.
getInvokes
().
get
(
"begin"
));
}
}
...
...
@@ -103,7 +103,7 @@ public final class ConnectionAdapterTest extends AbstractShardingJDBCDatabaseAnd
TransactionTypeHolder
.
set
(
TransactionType
.
XA
);
try
(
ShardingConnection
actual
=
getShardingDataSource
().
getConnection
())
{
actual
.
commit
();
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
}
}
...
...
@@ -122,7 +122,7 @@ public final class ConnectionAdapterTest extends AbstractShardingJDBCDatabaseAnd
TransactionTypeHolder
.
set
(
TransactionType
.
XA
);
try
(
ShardingConnection
actual
=
getShardingDataSource
().
getConnection
())
{
actual
.
rollback
();
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
}
}
...
...
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/connection/ShardingConnectionTest.java
浏览文件 @
b388432a
...
...
@@ -25,8 +25,8 @@ import io.shardingsphere.core.constant.DatabaseType;
import
io.shardingsphere.shardingjdbc.fixture.TestDataSource
;
import
io.shardingsphere.shardingjdbc.jdbc.core.ShardingContext
;
import
io.shardingsphere.shardingjdbc.jdbc.core.datasource.MasterSlaveDataSource
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed.FixedBaseShardingTransactionHandler
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed.FixedXAShardingTransactionHandler
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture.FixedBaseShardingTransactionEngine
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture.FixedXAShardingTransactionEngine
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.api.TransactionTypeHolder
;
import
io.shardingsphere.transaction.core.TransactionOperationType
;
...
...
@@ -90,8 +90,8 @@ public final class ShardingConnectionTest {
try
{
connection
.
close
();
TransactionTypeHolder
.
clear
();
FixedXAShardingTransaction
Handler
.
getInvokes
().
clear
();
FixedBaseShardingTransaction
Handler
.
getInvokes
().
clear
();
FixedXAShardingTransaction
Engine
.
getInvokes
().
clear
();
FixedBaseShardingTransaction
Engine
.
getInvokes
().
clear
();
}
catch
(
final
SQLException
ignored
)
{
}
}
...
...
@@ -110,21 +110,21 @@ public final class ShardingConnectionTest {
public
void
assertXATransactionOperation
()
throws
SQLException
{
connection
=
new
ShardingConnection
(
dataSourceMap
,
shardingContext
,
TransactionType
.
XA
);
connection
.
setAutoCommit
(
false
);
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"begin"
),
is
(
TransactionOperationType
.
BEGIN
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"begin"
),
is
(
TransactionOperationType
.
BEGIN
));
connection
.
commit
();
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
connection
.
rollback
();
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
}
@Test
public
void
assertBaseTransactionOperation
()
throws
SQLException
{
connection
=
new
ShardingConnection
(
dataSourceMap
,
shardingContext
,
TransactionType
.
BASE
);
connection
.
setAutoCommit
(
false
);
assertThat
(
FixedBaseShardingTransaction
Handler
.
getInvokes
().
get
(
"begin"
),
is
(
TransactionOperationType
.
BEGIN
));
assertThat
(
FixedBaseShardingTransaction
Engine
.
getInvokes
().
get
(
"begin"
),
is
(
TransactionOperationType
.
BEGIN
));
connection
.
commit
();
assertThat
(
FixedBaseShardingTransaction
Handler
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
assertThat
(
FixedBaseShardingTransaction
Engine
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
connection
.
rollback
();
assertThat
(
FixedBaseShardingTransaction
Handler
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
assertThat
(
FixedBaseShardingTransaction
Engine
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
}
}
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/datasource/ShardingDataSourceTest.java
浏览文件 @
b388432a
...
...
@@ -26,7 +26,7 @@ import io.shardingsphere.core.constant.DatabaseType;
import
io.shardingsphere.core.rule.ShardingRule
;
import
io.shardingsphere.shardingjdbc.api.MasterSlaveDataSourceFactory
;
import
io.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed.FixedXAShardingTransactionHandler
;
import
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture.FixedXAShardingTransactionEngine
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.api.TransactionTypeHolder
;
import
org.junit.After
;
...
...
@@ -178,13 +178,13 @@ public final class ShardingDataSourceTest {
ShardingConnection
shardingConnection
=
shardingDataSource
.
getConnection
();
assertThat
(
shardingConnection
.
getDataSourceMap
().
size
(),
is
(
1
));
assertThat
(
shardingConnection
.
getTransactionType
(),
is
(
TransactionType
.
XA
));
assertThat
(
shardingConnection
.
getShardingTransaction
Handler
(),
instanceOf
(
FixedXAShardingTransactionHandler
.
class
));
assertThat
(
shardingConnection
.
getShardingTransaction
Engine
(),
instanceOf
(
FixedXAShardingTransactionEngine
.
class
));
TransactionTypeHolder
.
set
(
TransactionType
.
LOCAL
);
shardingConnection
=
shardingDataSource
.
getConnection
();
assertThat
(
shardingConnection
.
getConnection
(
"ds"
),
is
(
dataSource
.
getConnection
()));
assertThat
(
shardingConnection
.
getDataSourceMap
(),
is
(
dataSourceMap
));
assertThat
(
shardingConnection
.
getTransactionType
(),
is
(
TransactionType
.
LOCAL
));
assertThat
(
shardingConnection
.
getShardingTransaction
Handler
()
==
null
,
is
(
true
));
assertThat
(
shardingConnection
.
getShardingTransaction
Engine
()
==
null
,
is
(
true
));
}
private
ShardingDataSource
createShardingDataSource
(
final
Map
<
String
,
DataSource
>
dataSourceMap
)
throws
SQLException
{
...
...
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fix
ed/FixedBaseShardingTransactionHandler
.java
→
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fix
ture/FixedBaseShardingTransactionEngine
.java
浏览文件 @
b388432a
...
...
@@ -15,12 +15,12 @@
* </p>
*/
package
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed
;
package
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture
;
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.core.TransactionOperationType
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
...
...
@@ -29,11 +29,11 @@ import java.util.HashMap;
import
java.util.Map
;
/**
* Fixed base sharding transaction
handler
.
* Fixed base sharding transaction
engine
.
*
* @author zhaojun
*/
public
final
class
FixedBaseShardingTransaction
Handler
implements
ShardingTransactionHandler
{
public
final
class
FixedBaseShardingTransaction
Engine
implements
ShardingTransactionEngine
{
private
static
final
Map
<
String
,
TransactionOperationType
>
INVOKES
=
new
HashMap
<>();
...
...
@@ -52,30 +52,30 @@ public final class FixedBaseShardingTransactionHandler implements ShardingTransa
}
@Override
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
}
@Override
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
public
void
clearTransactionalResources
()
{
}
@Override
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
}
@Override
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
}
@Override
public
void
clearTransactionalResource
()
{
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
}
@Override
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
}
}
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fix
ed/FixedXAShardingTransactionHandler
.java
→
sharding-jdbc/sharding-jdbc-core/src/test/java/io/shardingsphere/shardingjdbc/jdbc/core/fix
ture/FixedXAShardingTransactionEngine
.java
浏览文件 @
b388432a
...
...
@@ -15,12 +15,12 @@
* </p>
*/
package
io.shardingsphere.shardingjdbc.jdbc.core.fix
ed
;
package
io.shardingsphere.shardingjdbc.jdbc.core.fix
ture
;
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.core.TransactionOperationType
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
...
...
@@ -29,11 +29,11 @@ import java.util.HashMap;
import
java.util.Map
;
/**
* Fixed base sharding transaction
handler
.
* Fixed base sharding transaction
engine
.
*
* @author zhaojun
*/
public
final
class
FixedXAShardingTransaction
Handler
implements
ShardingTransactionHandler
{
public
final
class
FixedXAShardingTransaction
Engine
implements
ShardingTransactionEngine
{
private
static
final
Map
<
String
,
TransactionOperationType
>
INVOKES
=
new
HashMap
<>();
...
...
@@ -52,30 +52,30 @@ public final class FixedXAShardingTransactionHandler implements ShardingTransact
}
@Override
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
}
@Override
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
public
void
clearTransactionalResources
()
{
}
@Override
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
}
@Override
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
}
@Override
public
void
clearTransactionalResource
()
{
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
}
@Override
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
}
}
sharding-jdbc/sharding-jdbc-core/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionEngine
0 → 100644
浏览文件 @
b388432a
io.shardingsphere.shardingjdbc.jdbc.core.fixture.FixedBaseShardingTransactionEngine
io.shardingsphere.shardingjdbc.jdbc.core.fixture.FixedXAShardingTransactionEngine
sharding-jdbc/sharding-jdbc-core/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionHandler
已删除
100644 → 0
浏览文件 @
f5299f3b
io.shardingsphere.shardingjdbc.jdbc.core.fixed.FixedBaseShardingTransactionHandler
io.shardingsphere.shardingjdbc.jdbc.core.fixed.FixedXAShardingTransactionHandler
sharding-proxy/src/main/java/io/shardingsphere/shardingproxy/backend/jdbc/connection/BackendTransactionManager.java
浏览文件 @
b388432a
...
...
@@ -20,8 +20,8 @@ package io.shardingsphere.shardingproxy.backend.jdbc.connection;
import
com.google.common.base.Optional
;
import
com.google.common.base.Preconditions
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Handler
Registry
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.core.loader.ShardingTransaction
Engine
Registry
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
lombok.RequiredArgsConstructor
;
import
java.sql.SQLException
;
...
...
@@ -38,43 +38,43 @@ public final class BackendTransactionManager implements TransactionManager {
@Override
public
void
begin
()
{
Optional
<
ShardingTransaction
Handler
>
shardingTransactionHandler
=
getShardingTransactionHandler
(
connection
);
Optional
<
ShardingTransaction
Engine
>
shardingTransactionEngine
=
getShardingTransactionEngine
(
connection
);
if
(!
connection
.
getStateHandler
().
isInTransaction
())
{
connection
.
getStateHandler
().
getAndSetStatus
(
ConnectionStatus
.
TRANSACTION
);
connection
.
releaseConnections
(
false
);
}
if
(!
shardingTransaction
Handler
.
isPresent
())
{
if
(!
shardingTransaction
Engine
.
isPresent
())
{
new
LocalTransactionManager
(
connection
).
begin
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Handler
.
get
().
getTransactionType
())
{
shardingTransaction
Handler
.
get
().
begin
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Engine
.
get
().
getTransactionType
())
{
shardingTransaction
Engine
.
get
().
begin
();
}
}
@Override
public
void
commit
()
throws
SQLException
{
Optional
<
ShardingTransaction
Handler
>
shardingTransactionHandler
=
getShardingTransactionHandler
(
connection
);
if
(!
shardingTransaction
Handler
.
isPresent
())
{
Optional
<
ShardingTransaction
Engine
>
shardingTransactionEngine
=
getShardingTransactionEngine
(
connection
);
if
(!
shardingTransaction
Engine
.
isPresent
())
{
new
LocalTransactionManager
(
connection
).
commit
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Handler
.
get
().
getTransactionType
())
{
shardingTransaction
Handler
.
get
().
commit
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Engine
.
get
().
getTransactionType
())
{
shardingTransaction
Engine
.
get
().
commit
();
connection
.
getStateHandler
().
getAndSetStatus
(
ConnectionStatus
.
TERMINATED
);
}
}
@Override
public
void
rollback
()
throws
SQLException
{
Optional
<
ShardingTransaction
Handler
>
shardingTransactionHandler
=
getShardingTransactionHandler
(
connection
);
if
(!
shardingTransaction
Handler
.
isPresent
())
{
Optional
<
ShardingTransaction
Engine
>
shardingTransactionEngine
=
getShardingTransactionEngine
(
connection
);
if
(!
shardingTransaction
Engine
.
isPresent
())
{
new
LocalTransactionManager
(
connection
).
rollback
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Handler
.
get
().
getTransactionType
())
{
shardingTransaction
Handler
.
get
().
rollback
();
}
else
if
(
TransactionType
.
XA
==
shardingTransaction
Engine
.
get
().
getTransactionType
())
{
shardingTransaction
Engine
.
get
().
rollback
();
connection
.
getStateHandler
().
getAndSetStatus
(
ConnectionStatus
.
TERMINATED
);
}
}
private
Optional
<
ShardingTransaction
Handler
>
getShardingTransactionHandler
(
final
BackendConnection
connection
)
{
private
Optional
<
ShardingTransaction
Engine
>
getShardingTransactionEngine
(
final
BackendConnection
connection
)
{
TransactionType
transactionType
=
connection
.
getTransactionType
();
ShardingTransaction
Handler
result
=
ShardingTransactionHandlerRegistry
.
getHandler
(
transactionType
);
ShardingTransaction
Engine
result
=
ShardingTransactionEngineRegistry
.
getShardingTransactionEngine
(
transactionType
);
if
(
null
!=
transactionType
&&
transactionType
!=
TransactionType
.
LOCAL
)
{
Preconditions
.
checkNotNull
(
result
,
String
.
format
(
"Cannot find transaction manager of [%s]"
,
transactionType
));
}
...
...
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/backend/TransactionBackendHandlerTest.java
浏览文件 @
b388432a
...
...
@@ -35,7 +35,7 @@ public class TransactionBackendHandlerTest {
private
BackendConnection
backendConnection
=
new
BackendConnection
(
TransactionType
.
LOCAL
);
@Test
public
void
assert
TransactionHandler
Execute
()
{
public
void
assertExecute
()
{
TransactionBackendHandler
transactionBackendHandler
=
new
TransactionBackendHandler
(
TransactionOperationType
.
BEGIN
,
backendConnection
);
CommandResponsePackets
actual
=
transactionBackendHandler
.
execute
();
assertThat
(
actual
.
getHeadPacket
(),
instanceOf
(
OKPacket
.
class
));
...
...
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/transport/mysql/packet/command/query/text/query/ComQueryPacketTest.java
浏览文件 @
b388432a
...
...
@@ -74,7 +74,7 @@ public final class ComQueryPacketTest {
@After
public
void
tearDown
()
{
FixedXAShardingTransaction
Handler
.
getInvokes
().
clear
();
FixedXAShardingTransaction
Engine
.
getInvokes
().
clear
();
}
@SneakyThrows
...
...
@@ -144,7 +144,7 @@ public final class ComQueryPacketTest {
Optional
<
CommandResponsePackets
>
actual
=
packet
.
execute
();
assertTrue
(
actual
.
isPresent
());
assertOKPacket
(
actual
.
get
());
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"rollback"
),
is
(
TransactionOperationType
.
ROLLBACK
));
}
@Test
...
...
@@ -156,7 +156,7 @@ public final class ComQueryPacketTest {
Optional
<
CommandResponsePackets
>
actual
=
packet
.
execute
();
assertTrue
(
actual
.
isPresent
());
assertOKPacket
(
actual
.
get
());
assertThat
(
FixedXAShardingTransaction
Handler
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
assertThat
(
FixedXAShardingTransaction
Engine
.
getInvokes
().
get
(
"commit"
),
is
(
TransactionOperationType
.
COMMIT
));
}
private
void
assertOKPacket
(
final
CommandResponsePackets
actual
)
{
...
...
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/transport/mysql/packet/command/query/text/query/FixedXAShardingTransaction
Handler
.java
→
sharding-proxy/src/test/java/io/shardingsphere/shardingproxy/transport/mysql/packet/command/query/text/query/FixedXAShardingTransaction
Engine
.java
浏览文件 @
b388432a
...
...
@@ -20,7 +20,7 @@ package io.shardingsphere.shardingproxy.transport.mysql.packet.command.query.tex
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.core.TransactionOperationType
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
javax.sql.DataSource
;
import
java.sql.Connection
;
...
...
@@ -29,11 +29,11 @@ import java.util.HashMap;
import
java.util.Map
;
/**
* Fixed base sharding transaction
handler
.
* Fixed base sharding transaction
engine
.
*
* @author zhaojun
*/
public
final
class
FixedXAShardingTransaction
Handler
implements
ShardingTransactionHandler
{
public
final
class
FixedXAShardingTransaction
Engine
implements
ShardingTransactionEngine
{
private
static
final
Map
<
String
,
TransactionOperationType
>
INVOKES
=
new
HashMap
<>();
...
...
@@ -47,30 +47,30 @@ public final class FixedXAShardingTransactionHandler implements ShardingTransact
}
@Override
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
}
@Override
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
public
void
clearTransactionalResources
()
{
}
@Override
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
}
@Override
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
public
void
begin
()
{
INVOKES
.
put
(
"begin"
,
TransactionOperationType
.
BEGIN
);
}
@Override
public
void
clearTransactionalResource
()
{
public
void
commit
()
{
INVOKES
.
put
(
"commit"
,
TransactionOperationType
.
COMMIT
);
}
@Override
public
Connection
createConnection
(
final
String
dataSourceName
,
final
DataSource
dataSource
)
throws
SQLException
{
return
dataSource
.
getConnection
(
);
public
void
rollback
()
{
INVOKES
.
put
(
"rollback"
,
TransactionOperationType
.
ROLLBACK
);
}
}
sharding-proxy/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransaction
Handler
→
sharding-proxy/src/test/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransaction
Engine
浏览文件 @
b388432a
io.shardingsphere.shardingproxy.transport.mysql.packet.command.query.text.query.FixedXAShardingTransaction
Handler
io.shardingsphere.shardingproxy.transport.mysql.packet.command.query.text.query.FixedXAShardingTransaction
Engine
...
...
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/java/io/shardingsphere/transaction/xa/handler/XAShardingTransaction
Handler
.java
→
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/java/io/shardingsphere/transaction/xa/handler/XAShardingTransaction
Engine
.java
浏览文件 @
b388432a
...
...
@@ -21,7 +21,7 @@ import com.atomikos.jdbc.AtomikosDataSourceBean;
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.core.exception.ShardingException
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
io.shardingsphere.transaction.spi.xa.XATransactionManager
;
import
io.shardingsphere.transaction.xa.jta.connection.ShardingXAConnection
;
import
io.shardingsphere.transaction.xa.jta.datasource.ShardingXADataSource
;
...
...
@@ -40,12 +40,12 @@ import java.util.Map;
import
java.util.Map.Entry
;
/**
*
XA sharding transaction handler
.
*
Sharding transaction engine for XA
.
*
* @author zhaojun
*/
@Slf4j
public
final
class
XAShardingTransaction
Handler
implements
ShardingTransactionHandler
{
public
final
class
XAShardingTransaction
Engine
implements
ShardingTransactionEngine
{
private
final
Map
<
String
,
ShardingXADataSource
>
cachedShardingXADataSourceMap
=
new
HashMap
<>();
...
...
@@ -56,21 +56,6 @@ public final class XAShardingTransactionHandler implements ShardingTransactionHa
return
TransactionType
.
XA
;
}
@Override
public
void
begin
()
{
xaTransactionManager
.
begin
();
}
@Override
public
void
commit
()
{
xaTransactionManager
.
commit
();
}
@Override
public
void
rollback
()
{
xaTransactionManager
.
rollback
();
}
@Override
public
void
registerTransactionalResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
for
(
Entry
<
String
,
DataSource
>
entry
:
dataSourceMap
.
entrySet
())
{
...
...
@@ -86,7 +71,7 @@ public final class XAShardingTransactionHandler implements ShardingTransactionHa
}
@Override
public
void
clearTransactionalResource
()
{
public
void
clearTransactionalResource
s
()
{
if
(!
cachedShardingXADataSourceMap
.
isEmpty
())
{
for
(
ShardingXADataSource
each
:
cachedShardingXADataSourceMap
.
values
())
{
xaTransactionManager
.
removeRecoveryResource
(
each
.
getResourceName
(),
each
.
getXaDataSource
());
...
...
@@ -114,5 +99,19 @@ public final class XAShardingTransactionHandler implements ShardingTransactionHa
}
return
result
;
}
}
@Override
public
void
begin
()
{
xaTransactionManager
.
begin
();
}
@Override
public
void
commit
()
{
xaTransactionManager
.
commit
();
}
@Override
public
void
rollback
()
{
xaTransactionManager
.
rollback
();
}
}
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionEngine
0 → 100644
浏览文件 @
b388432a
io.shardingsphere.transaction.xa.handler.XAShardingTransactionEngine
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/main/resources/META-INF/services/io.shardingsphere.transaction.spi.ShardingTransactionHandler
已删除
100644 → 0
浏览文件 @
f5299f3b
io.shardingsphere.transaction.xa.handler.XAShardingTransactionHandler
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/test/java/io/shardingsphere/transaction/xa/AllTests.java
浏览文件 @
b388432a
...
...
@@ -18,7 +18,7 @@
package
io.shardingsphere.transaction.xa
;
import
io.shardingsphere.transaction.xa.convert.AllConvertTests
;
import
io.shardingsphere.transaction.xa.handler.XAShardingTransaction
Handler
Test
;
import
io.shardingsphere.transaction.xa.handler.XAShardingTransaction
Engine
Test
;
import
io.shardingsphere.transaction.xa.manager.AllManagerTests
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.Suite
;
...
...
@@ -27,7 +27,7 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
AllManagerTests
.
class
,
XAShardingTransaction
Handler
Test
.
class
,
XAShardingTransaction
Engine
Test
.
class
,
AllConvertTests
.
class
})
public
final
class
AllTests
{
...
...
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/test/java/io/shardingsphere/transaction/xa/handler/XAShardingTransaction
Handler
Test.java
→
sharding-transaction/sharding-transaction-2pc/sharding-transaction-2pc-xa/src/test/java/io/shardingsphere/transaction/xa/handler/XAShardingTransaction
Engine
Test.java
浏览文件 @
b388432a
...
...
@@ -55,9 +55,9 @@ import static org.mockito.Mockito.verify;
import
static
org
.
mockito
.
Mockito
.
when
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
XAShardingTransaction
Handler
Test
{
public
class
XAShardingTransaction
Engine
Test
{
private
XAShardingTransaction
Handler
xaShardingTransactionHandler
=
new
XAShardingTransactionHandler
();
private
XAShardingTransaction
Engine
xaShardingTransactionEngine
=
new
XAShardingTransactionEngine
();
@Mock
private
XATransactionManager
xaTransactionManager
;
...
...
@@ -71,27 +71,27 @@ public class XAShardingTransactionHandlerTest {
@Before
@SneakyThrows
public
void
setUp
()
{
setMockXATransactionManager
(
xaShardingTransaction
Handler
,
xaTransactionManager
);
setMockXATransactionManager
(
xaShardingTransaction
Engine
,
xaTransactionManager
);
when
(
xaTransactionManager
.
getUnderlyingTransactionManager
()).
thenReturn
(
transactionManager
);
when
(
transactionManager
.
getTransaction
()).
thenReturn
(
transaction
);
}
@SneakyThrows
private
void
setMockXATransactionManager
(
final
XAShardingTransaction
Handler
xaShardingTransactionHandler
,
final
XATransactionManager
xaTransactionManager
)
{
Field
field
=
xaShardingTransaction
Handler
.
getClass
().
getDeclaredField
(
"xaTransactionManager"
);
private
void
setMockXATransactionManager
(
final
XAShardingTransaction
Engine
xaShardingTransactionEngine
,
final
XATransactionManager
xaTransactionManager
)
{
Field
field
=
xaShardingTransaction
Engine
.
getClass
().
getDeclaredField
(
"xaTransactionManager"
);
field
.
setAccessible
(
true
);
field
.
set
(
xaShardingTransaction
Handler
,
xaTransactionManager
);
field
.
set
(
xaShardingTransaction
Engine
,
xaTransactionManager
);
}
@Test
public
void
assertGetTransactionType
()
{
assertThat
(
xaShardingTransaction
Handler
.
getTransactionType
(),
is
(
TransactionType
.
XA
));
assertThat
(
xaShardingTransaction
Engine
.
getTransactionType
(),
is
(
TransactionType
.
XA
));
}
@Test
public
void
assertRegisterXATransactionalDataSource
()
{
Map
<
String
,
DataSource
>
dataSourceMap
=
createDataSourceMap
(
PoolType
.
DRUID_XA
,
DatabaseType
.
MySQL
);
xaShardingTransaction
Handler
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
xaShardingTransaction
Engine
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
for
(
Entry
<
String
,
DataSource
>
entry
:
dataSourceMap
.
entrySet
())
{
verify
(
xaTransactionManager
).
registerRecoveryResource
(
entry
.
getKey
(),
(
XADataSource
)
entry
.
getValue
());
}
...
...
@@ -100,14 +100,14 @@ public class XAShardingTransactionHandlerTest {
@Test
public
void
assertRegisterAtomikosDataSourceBean
()
{
Map
<
String
,
DataSource
>
dataSourceMap
=
createAtomikosDataSourceBeanMap
();
xaShardingTransaction
Handler
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
xaShardingTransaction
Engine
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
verify
(
xaTransactionManager
,
times
(
0
)).
registerRecoveryResource
(
anyString
(),
any
(
XADataSource
.
class
));
}
@Test
public
void
assertRegisterNoneXATransactionalDAtaSource
()
{
Map
<
String
,
DataSource
>
dataSourceMap
=
createDataSourceMap
(
PoolType
.
HIKARI
,
DatabaseType
.
MySQL
);
xaShardingTransaction
Handler
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
xaShardingTransaction
Engine
.
registerTransactionalResource
(
DatabaseType
.
MySQL
,
dataSourceMap
);
Map
<
String
,
ShardingXADataSource
>
cachedXADatasourceMap
=
getCachedShardingXADataSourceMap
();
assertThat
(
cachedXADatasourceMap
.
size
(),
is
(
2
));
}
...
...
@@ -119,7 +119,7 @@ public class XAShardingTransactionHandlerTest {
DataSource
dataSource
=
mock
(
DataSource
.
class
);
setCachedShardingXADataSourceMap
(
"ds1"
);
ShardingXADataSource
shardingXADataSource
=
getCachedShardingXADataSourceMap
().
get
(
"ds1"
);
xaShardingTransaction
Handler
.
createConnection
(
"ds1"
,
dataSource
);
xaShardingTransaction
Engine
.
createConnection
(
"ds1"
,
dataSource
);
verify
(
shardingXADataSource
).
getConnectionFromOriginalDataSource
();
}
...
...
@@ -129,7 +129,7 @@ public class XAShardingTransactionHandlerTest {
when
(
transaction
.
getStatus
()).
thenReturn
(
Status
.
STATUS_ACTIVE
);
DataSource
dataSource
=
mock
(
DataSource
.
class
);
setCachedShardingXADataSourceMap
(
"ds1"
);
Connection
actual
=
xaShardingTransaction
Handler
.
createConnection
(
"ds1"
,
dataSource
);
Connection
actual
=
xaShardingTransaction
Engine
.
createConnection
(
"ds1"
,
dataSource
);
assertThat
(
actual
,
instanceOf
(
Connection
.
class
));
verify
(
transaction
).
enlistResource
(
any
(
XAResource
.
class
));
}
...
...
@@ -137,7 +137,7 @@ public class XAShardingTransactionHandlerTest {
@Test
public
void
assertClearTransactionalDataSource
()
{
setCachedShardingXADataSourceMap
(
"ds1"
);
xaShardingTransaction
Handler
.
clearTransactionalResource
();
xaShardingTransaction
Engine
.
clearTransactionalResources
();
Map
<
String
,
ShardingXADataSource
>
cachedShardingXADataSourceMap
=
getCachedShardingXADataSourceMap
();
verify
(
xaTransactionManager
).
removeRecoveryResource
(
anyString
(),
any
(
XADataSource
.
class
));
assertThat
(
cachedShardingXADataSourceMap
.
size
(),
is
(
0
));
...
...
@@ -146,16 +146,16 @@ public class XAShardingTransactionHandlerTest {
@SneakyThrows
@SuppressWarnings
(
"unchecked"
)
private
Map
<
String
,
ShardingXADataSource
>
getCachedShardingXADataSourceMap
()
{
Field
field
=
xaShardingTransaction
Handler
.
getClass
().
getDeclaredField
(
"cachedShardingXADataSourceMap"
);
Field
field
=
xaShardingTransaction
Engine
.
getClass
().
getDeclaredField
(
"cachedShardingXADataSourceMap"
);
field
.
setAccessible
(
true
);
return
(
Map
<
String
,
ShardingXADataSource
>)
field
.
get
(
xaShardingTransaction
Handler
);
return
(
Map
<
String
,
ShardingXADataSource
>)
field
.
get
(
xaShardingTransaction
Engine
);
}
@SneakyThrows
private
void
setCachedShardingXADataSourceMap
(
final
String
datasourceName
)
{
Field
field
=
xaShardingTransaction
Handler
.
getClass
().
getDeclaredField
(
"cachedShardingXADataSourceMap"
);
Field
field
=
xaShardingTransaction
Engine
.
getClass
().
getDeclaredField
(
"cachedShardingXADataSourceMap"
);
field
.
setAccessible
(
true
);
field
.
set
(
xaShardingTransaction
Handler
,
createMockShardingXADataSourceMap
(
datasourceName
));
field
.
set
(
xaShardingTransaction
Engine
,
createMockShardingXADataSourceMap
(
datasourceName
));
}
@SneakyThrows
...
...
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/core/loader/ShardingTransaction
Handler
Registry.java
→
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/core/loader/ShardingTransaction
Engine
Registry.java
浏览文件 @
b388432a
...
...
@@ -19,7 +19,7 @@ package io.shardingsphere.transaction.core.loader;
import
io.shardingsphere.core.constant.DatabaseType
;
import
io.shardingsphere.transaction.api.TransactionType
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Handler
;
import
io.shardingsphere.transaction.spi.ShardingTransaction
Engine
;
import
lombok.AccessLevel
;
import
lombok.NoArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -37,37 +37,37 @@ import java.util.ServiceLoader;
*/
@NoArgsConstructor
(
access
=
AccessLevel
.
PRIVATE
)
@Slf4j
public
final
class
ShardingTransaction
Handler
Registry
{
public
final
class
ShardingTransaction
Engine
Registry
{
private
static
final
Map
<
TransactionType
,
ShardingTransaction
Handler
>
TRANSACTION_HANDLER_MAP
=
new
HashMap
<>();
private
static
final
Map
<
TransactionType
,
ShardingTransaction
Engine
>
TRANSACTION_ENGINES
=
new
HashMap
<>();
static
{
load
();
}
/**
* Load sharding transaction
handler
.
* Load sharding transaction
engines
.
*/
@SuppressWarnings
(
"unchecked"
)
private
static
void
load
()
{
for
(
ShardingTransaction
Handler
each
:
ServiceLoader
.
load
(
ShardingTransactionHandler
.
class
))
{
if
(
TRANSACTION_
HANDLER_MAP
.
containsKey
(
each
.
getTransactionType
()))
{
log
.
warn
(
"Find more than one {} transaction
handler
implementation class, use `{}` now"
,
each
.
getTransactionType
(),
TRANSACTION_
HANDLER_MAP
.
get
(
each
.
getTransactionType
()).
getClass
().
getName
());
for
(
ShardingTransaction
Engine
each
:
ServiceLoader
.
load
(
ShardingTransactionEngine
.
class
))
{
if
(
TRANSACTION_
ENGINES
.
containsKey
(
each
.
getTransactionType
()))
{
log
.
warn
(
"Find more than one {} transaction
engine
implementation class, use `{}` now"
,
each
.
getTransactionType
(),
TRANSACTION_
ENGINES
.
get
(
each
.
getTransactionType
()).
getClass
().
getName
());
continue
;
}
TRANSACTION_
HANDLER_MAP
.
put
(
each
.
getTransactionType
(),
each
);
TRANSACTION_
ENGINES
.
put
(
each
.
getTransactionType
(),
each
);
}
}
/**
* Get
transaction handler by typ
e.
* Get
sharding transaction engin
e.
*
* @param transactionType transaction type
* @return sharding transaction
handler implement
* @return sharding transaction
engine
*/
public
static
ShardingTransaction
Handler
getHandler
(
final
TransactionType
transactionType
)
{
return
TRANSACTION_
HANDLER_MAP
.
get
(
transactionType
);
public
static
ShardingTransaction
Engine
getShardingTransactionEngine
(
final
TransactionType
transactionType
)
{
return
TRANSACTION_
ENGINES
.
get
(
transactionType
);
}
/**
...
...
@@ -77,7 +77,7 @@ public final class ShardingTransactionHandlerRegistry {
* @param dataSourceMap data source map
*/
public
static
void
registerTransactionResource
(
final
DatabaseType
databaseType
,
final
Map
<
String
,
DataSource
>
dataSourceMap
)
{
for
(
Entry
<
TransactionType
,
ShardingTransaction
Handler
>
entry
:
TRANSACTION_HANDLER_MAP
.
entrySet
())
{
for
(
Entry
<
TransactionType
,
ShardingTransaction
Engine
>
entry
:
TRANSACTION_ENGINES
.
entrySet
())
{
entry
.
getValue
().
registerTransactionalResource
(
databaseType
,
dataSourceMap
);
}
}
...
...
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/spi/ShardingTransaction
Handler
.java
→
sharding-transaction/sharding-transaction-core/src/main/java/io/shardingsphere/transaction/spi/ShardingTransaction
Engine
.java
浏览文件 @
b388432a
...
...
@@ -26,12 +26,12 @@ import java.sql.SQLException;
import
java.util.Map
;
/**
* Sharding transaction
handler SPI
.
* Sharding transaction
engine
.
*
* @author zhaojun
*
*/
public
interface
ShardingTransaction
Handler
{
public
interface
ShardingTransaction
Engine
{
/**
* Get transaction type.
...
...
@@ -40,21 +40,6 @@ public interface ShardingTransactionHandler {
*/
TransactionType
getTransactionType
();
/**
* Begin transaction.
*/
void
begin
();
/**
* Commit transaction.
*/
void
commit
();
/**
* Rollback transaction.
*/
void
rollback
();
/**
* Register transaction data source.
*
...
...
@@ -64,9 +49,9 @@ public interface ShardingTransactionHandler {
void
registerTransactionalResource
(
DatabaseType
databaseType
,
Map
<
String
,
DataSource
>
dataSourceMap
);
/**
* Clear transactional resource.
* Clear transactional resource
s
.
*/
void
clearTransactionalResource
();
void
clearTransactionalResource
s
();
/**
* Create transactional connection.
...
...
@@ -77,4 +62,19 @@ public interface ShardingTransactionHandler {
* @throws SQLException SQL exception
*/
Connection
createConnection
(
String
dataSourceName
,
DataSource
dataSource
)
throws
SQLException
;
/**
* Begin transaction.
*/
void
begin
();
/**
* Commit transaction.
*/
void
commit
();
/**
* Rollback transaction.
*/
void
rollback
();
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录