Skip to content

Commit c05f37e

Browse files
hotfix db映射错误问题
1 parent b4505a1 commit c05f37e

File tree

1 file changed

+15
-29
lines changed

1 file changed

+15
-29
lines changed

syncer-transmission/src/main/java/syncer/syncerservice/filter/KeyValueEventDBMappingFilter.java

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import lombok.Getter;
66
import lombok.Setter;
77
import lombok.extern.slf4j.Slf4j;
8-
import org.springframework.beans.BeanUtils;
98
import syncer.syncerplusredis.cmd.impl.DefaultCommand;
109
import syncer.syncerplusredis.event.Event;
1110
import syncer.syncerplusredis.rdb.datatype.DB;
@@ -50,19 +49,17 @@ public void run(Replicator replicator, KeyValueEventEntity eventEntity) throws F
5049
try {
5150

5251

53-
//DUMP格式数据
54-
Event event=eventEntity.getEvent();
52+
//DUMP格式数据
53+
Event event=eventEntity.getEvent();
5554
if (event instanceof DumpKeyValuePair) {
5655
DumpKeyValuePair dumpKeyValuePair= (DumpKeyValuePair) event;
5756

5857
if(null==dumpKeyValuePair.getValue()||null==dumpKeyValuePair.getKey()){
5958
return;
6059
}
6160
DB db = dumpKeyValuePair.getDb();
62-
DB newDb=new DB();
63-
BeanUtils.copyProperties(db,newDb);
6461
try {
65-
dbMapping(eventEntity,newDb);
62+
dbMapping(eventEntity,db);
6663
} catch (KeyWeed0utException e) {
6764
log.info("全量数据key[{}]不符合DB映射规则,被抛弃..", JSON.toJSONString(eventEntity));
6865
//抛弃此kv
@@ -83,10 +80,8 @@ public void run(Replicator replicator, KeyValueEventEntity eventEntity) throws F
8380

8481

8582
DB db = batchedKeyValuePair.getDb();
86-
DB newDb=new DB();
87-
BeanUtils.copyProperties(db,newDb);
8883
try {
89-
dbMapping(eventEntity,newDb);
84+
dbMapping(eventEntity,db);
9085
} catch (KeyWeed0utException e) {
9186
log.info("全量数据key[{}]不符合DB映射规则,被抛弃..", JSON.toJSONString(eventEntity));
9287
//抛弃此kv
@@ -121,8 +116,8 @@ public void run(Replicator replicator, KeyValueEventEntity eventEntity) throws F
121116

122117
}
123118

124-
//继续执行下一Filter节点
125-
toNext(replicator,eventEntity);
119+
//继续执行下一Filter节点
120+
toNext(replicator,eventEntity);
126121
}catch (Exception e){
127122
throw new FilterNodeException(e.getMessage()+"->KeyValueEventDBMappingFilter",e.getCause());
128123
}
@@ -151,35 +146,26 @@ public void setNext(CommonFilter nextFilter) {
151146
void dbMapping(KeyValueEventEntity eventEntity,DB db) throws KeyWeed0utException {
152147
Event event=eventEntity.getEvent();
153148
long dbbnum=db.getDbNumber();
154-
int dbNumInt= Math.toIntExact(db.getDbNumber());
155-
156149
if (null != eventEntity.getDbMapper() && eventEntity.getDbMapper().size() > 0) {
157-
if (eventEntity.getDbMapper().containsKey(dbNumInt)) {
158-
dbbnum = eventEntity.getDbMapper().get(dbNumInt);
150+
if (eventEntity.getDbMapper().containsKey((int) db.getDbNumber())) {
151+
dbbnum = eventEntity.getDbMapper().get((int) db.getDbNumber());
159152
} else {
160153
//忽略本key
154+
161155
throw new KeyWeed0utException("key抛弃");
156+
162157
}
163158
}
164-
165159
if(event instanceof DumpKeyValuePair) {
166160
DumpKeyValuePair dumpKeyValuePair= (DumpKeyValuePair) event;
167-
168-
// DB dbn=dumpKeyValuePair.getDb();
169-
// dbn.setDbNumber(dbbnum);
170-
// dumpKeyValuePair.setDb(dbn);
171-
172-
db.setDbNumber(dbbnum);
173-
dumpKeyValuePair.setDb(db);
174-
161+
DB dbn=dumpKeyValuePair.getDb();
162+
dbn.setDbNumber(dbbnum);
163+
dumpKeyValuePair.setDb(dbn);
175164
eventEntity.setEvent(dumpKeyValuePair);
176165
}else if(event instanceof BatchedKeyValuePair<?, ?>){
177166
BatchedKeyValuePair batchedKeyValuePair = (BatchedKeyValuePair) event;
178-
// DB dbn=batchedKeyValuePair.getDb();
179-
// dbn.setDbNumber(dbbnum);
180-
181-
db.setDbNumber(dbbnum);
182-
batchedKeyValuePair.setDb(db);
167+
DB dbn=batchedKeyValuePair.getDb();
168+
dbn.setDbNumber(dbbnum);
183169
eventEntity.setEvent(batchedKeyValuePair);
184170
}
185171
eventEntity.setDbNum(dbbnum);

0 commit comments

Comments
 (0)