EventIndex: Handle null tokens in the crawler loop as well.

This is similar to 5eb510387c. But now the
checkpoint arrived during a crawl.
pull/21833/head
Damir Jelić 2020-05-20 11:01:56 +02:00
parent b96c1ada8a
commit 86ad6de41e
1 changed files with 23 additions and 8 deletions

View File

@ -489,14 +489,20 @@ export default class EventIndex extends EventEmitter {
return object; return object;
}); });
// Create a new checkpoint so we can continue crawling the room for let newCheckpoint;
// messages.
const newCheckpoint = { // The token can be null for some reason. Don't create a checkpoint
// in that case since adding it to the db will fail.
if (res.end) {
// Create a new checkpoint so we can continue crawling the room
// for messages.
newCheckpoint = {
roomId: checkpoint.roomId, roomId: checkpoint.roomId,
token: res.end, token: res.end,
fullCrawl: checkpoint.fullCrawl, fullCrawl: checkpoint.fullCrawl,
direction: checkpoint.direction, direction: checkpoint.direction,
}; };
}
try { try {
for (let i = 0; i < redactionEvents.length; i++) { for (let i = 0; i < redactionEvents.length; i++) {
@ -506,6 +512,15 @@ export default class EventIndex extends EventEmitter {
const eventsAlreadyAdded = await indexManager.addHistoricEvents( const eventsAlreadyAdded = await indexManager.addHistoricEvents(
events, newCheckpoint, checkpoint); events, newCheckpoint, checkpoint);
// We didn't get a valid new checkpoint from the server, nothing
// to do here anymore.
if (!newCheckpoint) {
console.log("EventIndex: The server didn't return a valid ",
"new checkpoint, not continuing the crawl.", checkpoint);
continue
}
// If all events were already indexed we assume that we catched // If all events were already indexed we assume that we catched
// up with our index and don't need to crawl the room further. // up with our index and don't need to crawl the room further.
// Let us delete the checkpoint in that case, otherwise push // Let us delete the checkpoint in that case, otherwise push