From 59db7074f732375942f17454da658975c8fdc519 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 20 十月 2023 15:21:58 +0800
Subject: [PATCH] 同步数据时,长度超过serf限制,修改为分段发送
---
serf/sync.go | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/serf/sync.go b/serf/sync.go
index c6337cf..829d412 100644
--- a/serf/sync.go
+++ b/serf/sync.go
@@ -402,8 +402,11 @@
}
}
+// serf 鍚屾鏁版嵁鐨勯檺鍒朵负92160 byte
func (ss *SyncServer) handleSyncTableMessage(msg []byte) error {
+ sizeLimit := 61440
targetId := string(msg)
+
//fmt.Println("鍚屾鍏ㄩ噺鏁版嵁缁欒妭鐐�:", targetId)
sqls, err := DumpTables(ss.sqlDB, ss.syncTables)
if err != nil {
@@ -412,7 +415,19 @@
}
syncSql := strings.Join(sqls, ";")
- err = ss.pubSyncSqlMessage([]byte(syncSql), targetId)
+ if len(syncSql) < sizeLimit {
+ err = ss.pubSyncSqlMessage([]byte(syncSql), targetId)
+ } else {
+ shard := ""
+ for _, sql := range sqls{
+ if len(shard) + len(sql) > sizeLimit {
+ err = ss.pubSyncSqlMessage([]byte(shard), targetId)
+ shard = ""
+ }
+
+ shard = fmt.Sprintf("%s%s;",shard,sql)
+ }
+ }
return err
}
--
Gitblit v1.8.0