Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
4cc45d3f
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 搜索 >>
提交
4cc45d3f
编写于
8月 06, 2018
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor NettyBackendHandler
上级
b28c9fb6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
16 addition
and
13 deletion
+16
-13
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/NettyBackendHandler.java
...ardingsphere/proxy/backend/netty/NettyBackendHandler.java
+12
-10
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/future/SynchronizedFuture.java
...sphere/proxy/backend/netty/future/SynchronizedFuture.java
+3
-3
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/mysql/MySQLQueryResult.java
...ingsphere/proxy/backend/netty/mysql/MySQLQueryResult.java
+1
-0
未找到文件。
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/NettyBackendHandler.java
浏览文件 @
4cc45d3f
...
...
@@ -17,7 +17,6 @@
package
io.shardingsphere.proxy.backend.netty
;
import
com.google.common.collect.Lists
;
import
io.netty.channel.Channel
;
import
io.netty.channel.pool.SimpleChannelPool
;
import
io.shardingsphere.core.constant.DatabaseType
;
...
...
@@ -36,6 +35,7 @@ import io.shardingsphere.proxy.backend.AbstractBackendHandler;
import
io.shardingsphere.proxy.backend.BackendExecutorContext
;
import
io.shardingsphere.proxy.backend.ResultPacket
;
import
io.shardingsphere.proxy.backend.netty.future.FutureRegistry
;
import
io.shardingsphere.proxy.backend.netty.future.SynchronizedFuture
;
import
io.shardingsphere.proxy.backend.netty.mysql.MySQLQueryResult
;
import
io.shardingsphere.proxy.config.ProxyTableMetaDataConnectionManager
;
import
io.shardingsphere.proxy.config.RuleRegistry
;
...
...
@@ -46,7 +46,6 @@ import io.shardingsphere.proxy.transport.mysql.packet.command.CommandResponsePac
import
io.shardingsphere.proxy.transport.mysql.packet.command.query.text.query.ComQueryPacket
;
import
io.shardingsphere.proxy.transport.mysql.packet.generic.ErrPacket
;
import
io.shardingsphere.proxy.transport.mysql.packet.generic.OKPacket
;
import
io.shardingsphere.proxy.backend.netty.future.SynchronizedFuture
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -126,8 +125,7 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
}
List
<
QueryResult
>
queryResults
=
synchronizedFuture
.
get
(
RULE_REGISTRY
.
getBackendNIOConfig
().
getConnectionTimeoutSeconds
(),
TimeUnit
.
SECONDS
);
FutureRegistry
.
getInstance
().
delete
(
connectionId
);
List
<
CommandResponsePackets
>
packets
=
Lists
.
newArrayListWithCapacity
(
queryResults
.
size
());
List
<
CommandResponsePackets
>
packets
=
new
ArrayList
<>(
queryResults
.
size
());
for
(
QueryResult
each
:
queryResults
)
{
MySQLQueryResult
queryResult
=
(
MySQLQueryResult
)
each
;
if
(
0
==
currentSequenceId
)
{
...
...
@@ -138,13 +136,10 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
}
packets
.
add
(
queryResult
.
getCommandResponsePackets
());
}
CommandResponsePackets
result
=
merge
(
routeResult
.
getSqlStatement
(),
packets
,
queryResults
);
SQLStatement
sqlStatement
=
routeResult
.
getSqlStatement
();
if
(!
RULE_REGISTRY
.
isMasterSlaveOnly
()
&&
SQLType
.
DDL
==
sqlStatement
.
getType
()
&&
!
sqlStatement
.
getTables
().
isEmpty
())
{
String
logicTableName
=
sqlStatement
.
getTables
().
getSingleTableName
();
TableMetaDataLoader
tableMetaDataLoader
=
new
TableMetaDataLoader
(
BackendExecutorContext
.
getInstance
().
getExecutorService
(),
new
ProxyTableMetaDataConnectionManager
(
RULE_REGISTRY
.
getBackendDataSource
()));
RULE_REGISTRY
.
getMetaData
().
getTable
().
put
(
logicTableName
,
tableMetaDataLoader
.
load
(
logicTableName
,
RULE_REGISTRY
.
getShardingRule
()));
CommandResponsePackets
result
=
merge
(
sqlStatement
,
packets
,
queryResults
);
if
(
SQLType
.
DDL
==
sqlStatement
.
getType
()
&&
!
sqlStatement
.
getTables
().
isEmpty
())
{
refreshTableMetaData
(
sqlStatement
.
getTables
().
getSingleTableName
());
}
return
result
;
}
...
...
@@ -201,6 +196,13 @@ public final class NettyBackendHandler extends AbstractBackendHandler {
return
packets
.
get
(
0
);
}
// TODO :jiaqi use sql packet to refresh meta data
private
void
refreshTableMetaData
(
final
String
logicTableName
)
{
TableMetaDataLoader
tableMetaDataLoader
=
new
TableMetaDataLoader
(
BackendExecutorContext
.
getInstance
().
getExecutorService
(),
new
ProxyTableMetaDataConnectionManager
(
RULE_REGISTRY
.
getBackendDataSource
()));
RULE_REGISTRY
.
getMetaData
().
getTable
().
put
(
logicTableName
,
tableMetaDataLoader
.
load
(
logicTableName
,
RULE_REGISTRY
.
getShardingRule
()));
}
@Override
public
boolean
next
()
throws
SQLException
{
if
(
null
==
mergedResult
||
!
mergedResult
.
next
())
{
...
...
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/future/SynchronizedFuture.java
浏览文件 @
4cc45d3f
...
...
@@ -17,10 +17,10 @@
package
io.shardingsphere.proxy.backend.netty.future
;
import
com.google.common.collect.Lists
;
import
io.shardingsphere.core.merger.QueryResult
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.Future
;
...
...
@@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit;
* @author linjiaqi
*/
@Slf4j
public
class
SynchronizedFuture
implements
Future
<
List
<
QueryResult
>>
{
public
final
class
SynchronizedFuture
implements
Future
<
List
<
QueryResult
>>
{
private
final
CountDownLatch
latch
;
...
...
@@ -43,7 +43,7 @@ public class SynchronizedFuture implements Future<List<QueryResult>> {
public
SynchronizedFuture
(
final
int
resultSize
)
{
latch
=
new
CountDownLatch
(
resultSize
);
responses
=
Lists
.
newArrayListWithCapacity
(
resultSize
);
responses
=
new
ArrayList
<>
(
resultSize
);
}
@Override
...
...
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/netty/mysql/MySQLQueryResult.java
浏览文件 @
4cc45d3f
...
...
@@ -45,6 +45,7 @@ import java.util.concurrent.LinkedBlockingQueue;
*/
@Slf4j
public
final
class
MySQLQueryResult
implements
QueryResult
{
@Getter
private
final
CommandResponsePackets
commandResponsePackets
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录