Do not insert empty chunks that loop to themselves

We were getting some stuck timelines because of the insertion of empty
chunks that link to themselves in both directions.

Change-Id: Id3672e6704d82cbcdafa2fa5ded716b624db3680
This commit is contained in:
SpiritCroc 2022-05-13 11:30:28 +02:00
parent 42ac513da4
commit d9e5dfa90a
1 changed files with 13 additions and 0 deletions

View File

@ -70,6 +70,19 @@ internal class TokenChunkEventPersistor @Inject constructor(
suspend fun insertInDb(receivedChunk: TokenChunkEvent,
roomId: String,
direction: PaginationDirection): Result {
if (receivedChunk.events.isEmpty() && receivedChunk.start == receivedChunk.end) {
Timber.w("Discard empty chunk with identical start/end token ${receivedChunk.start}")
if (receivedChunk.hasMore()) {
Result.SHOULD_FETCH_MORE
} else {
Result.REACHED_END
}
} else if (receivedChunk.start == receivedChunk.end) {
// I don't think we have seen this case so far, but let's log it just in case...
// -> if it happens, we need to address it somehow!
Timber.e("Non-empty chunk with identical start/end token ${receivedChunk.start}")
}
monarchy
.awaitTransaction { realm ->
Timber.i("Start persisting ${receivedChunk.events.size} events in $roomId towards $direction | " +