Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
3116fb5e
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 搜索 >>
未验证
提交
3116fb5e
编写于
5月 19, 2020
作者:
家里敷泥呀
提交者:
GitHub
5月 19, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
issue-5390: sharding-scaling nullpoint (#5679)
Co-authored-by:
N
Lucas
<
qiulu3@jd.com
>
上级
2180bc5a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
14 deletion
+23
-14
sharding-scaling/sharding-scaling-mysql/src/main/java/org/apache/shardingsphere/shardingscaling/mysql/MySQLBinlogReader.java
...ardingsphere/shardingscaling/mysql/MySQLBinlogReader.java
+23
-14
未找到文件。
sharding-scaling/sharding-scaling-mysql/src/main/java/org/apache/shardingsphere/shardingscaling/mysql/MySQLBinlogReader.java
浏览文件 @
3116fb5e
...
...
@@ -44,6 +44,7 @@ import org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
java.io.Serializable
;
import
java.util.Objects
;
/**
* MySQL binlog reader.
...
...
@@ -85,25 +86,33 @@ public final class MySQLBinlogReader extends AbstractSyncExecutor implements Log
while
(
isRunning
())
{
AbstractBinlogEvent
event
=
client
.
poll
();
if
(
null
==
event
)
{
try
{
Thread
.
sleep
(
100
);
}
catch
(
InterruptedException
ignored
)
{
}
sleep
();
continue
;
}
if
(
event
instanceof
WriteRowsEvent
)
{
handleWriteRowsEvent
(
channel
,
uri
,
(
WriteRowsEvent
)
event
);
}
else
if
(
event
instanceof
UpdateRowsEvent
)
{
handleUpdateRowsEvent
(
channel
,
uri
,
(
UpdateRowsEvent
)
event
);
}
else
if
(
event
instanceof
DeleteRowsEvent
)
{
handleDeleteRowsEvent
(
channel
,
uri
,
(
DeleteRowsEvent
)
event
);
}
else
if
(
event
instanceof
PlaceholderEvent
)
{
createPlaceholderRecord
(
channel
,
event
);
}
handleEvent
(
channel
,
uri
,
event
);
}
pushRecord
(
channel
,
new
FinishedRecord
(
new
NopLogPosition
()));
}
private
void
sleep
()
{
try
{
Thread
.
sleep
(
100
);
}
catch
(
InterruptedException
ignored
)
{
}
}
private
void
handleEvent
(
final
Channel
channel
,
final
JdbcUri
uri
,
final
AbstractBinlogEvent
event
)
{
if
(
event
instanceof
WriteRowsEvent
)
{
handleWriteRowsEvent
(
channel
,
uri
,
(
WriteRowsEvent
)
event
);
}
else
if
(
event
instanceof
UpdateRowsEvent
)
{
handleUpdateRowsEvent
(
channel
,
uri
,
(
UpdateRowsEvent
)
event
);
}
else
if
(
event
instanceof
DeleteRowsEvent
)
{
handleDeleteRowsEvent
(
channel
,
uri
,
(
DeleteRowsEvent
)
event
);
}
else
if
(
event
instanceof
PlaceholderEvent
)
{
createPlaceholderRecord
(
channel
,
event
);
}
}
private
void
handleWriteRowsEvent
(
final
Channel
channel
,
final
JdbcUri
uri
,
final
WriteRowsEvent
event
)
{
if
(
filter
(
uri
.
getDatabase
(),
event
.
getSchemaName
(),
event
.
getTableName
()))
{
createPlaceholderRecord
(
channel
,
event
);
...
...
@@ -134,7 +143,7 @@ public final class MySQLBinlogReader extends AbstractSyncExecutor implements Log
for
(
int
j
=
0
;
j
<
beforeValues
.
length
;
j
++)
{
Object
oldValue
=
beforeValues
[
j
];
Object
newValue
=
afterValues
[
j
];
record
.
addColumn
(
new
Column
(
tableMetaData
.
getColumnMetaData
(
j
).
getName
(),
newValue
,
!
newValue
.
equals
(
oldValue
),
tableMetaData
.
isPrimaryKey
(
j
)));
record
.
addColumn
(
new
Column
(
tableMetaData
.
getColumnMetaData
(
j
).
getName
(),
newValue
,
!
Objects
.
equals
(
newValue
,
oldValue
),
tableMetaData
.
isPrimaryKey
(
j
)));
}
pushRecord
(
channel
,
record
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录