解决分段拉取消息时可能丢消息的问题
This commit is contained in:
@@ -900,11 +900,13 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
session.setPullHistoryMsg(true);
|
session.setPullHistoryMsg(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long previousCurrent;
|
||||||
while (true) {
|
while (true) {
|
||||||
Map.Entry<Long, Long> entry = maps.higherEntry(current);
|
Map.Entry<Long, Long> entry = maps.higherEntry(current);
|
||||||
if (entry == null) {
|
if (entry == null) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
previousCurrent = current;
|
||||||
current = entry.getKey();
|
current = entry.getKey();
|
||||||
long targetMessageId = entry.getValue();
|
long targetMessageId = entry.getValue();
|
||||||
|
|
||||||
@@ -933,6 +935,8 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
if (size >= 512 * 1024) { //3M
|
if (size >= 512 * 1024) { //3M
|
||||||
if(builder.getMessageCount() == 0){
|
if(builder.getMessageCount() == 0){
|
||||||
builder.addMessage(bundle.getMessage());
|
builder.addMessage(bundle.getMessage());
|
||||||
|
} else {
|
||||||
|
current = previousCurrent;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user