diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TokenChunkEventPersistor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TokenChunkEventPersistor.kt
index 56a41b3242..8e081338ba 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TokenChunkEventPersistor.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TokenChunkEventPersistor.kt
@@ -232,7 +232,7 @@ internal class TokenChunkEventPersistor @Inject constructor(
                     val alreadyLinkedNext = currentChunk.doesNextChunksVerifyCondition { it == existingChunk }
                     val alreadyLinkedPrev = currentChunk.doesPrevChunksVerifyCondition { it == existingChunk }
                     if (alreadyLinkedNext || alreadyLinkedPrev) {
-                        Timber.w("Avoid double link, shouldn't happen in an ideal world | " +
+                        Timber.i("Avoid double link | " +
                                 "direction: $direction " +
                                 "room: $roomId event: $eventId " +
                                 "linkedPrev: $alreadyLinkedPrev linkedNext: $alreadyLinkedNext " +
@@ -240,6 +240,12 @@ internal class TokenChunkEventPersistor @Inject constructor(
                                 "oldBackwardCheck: ${currentChunk.nextChunk == existingChunk} " +
                                 "oldForwardCheck: ${currentChunk.prevChunk == existingChunk}"
                         )
+                        if ((direction == PaginationDirection.FORWARDS && !alreadyLinkedNext /* && alreadyLinkedPrev */) ||
+                                (direction == PaginationDirection.BACKWARDS && !alreadyLinkedPrev /* && alreadyLinkedNext */)) {
+                            // Do not stop processing here: even though this event already exists in an already linked chunk,
+                            // we still may have new events to add
+                            return@forEach
+                        }
                         // Stop processing here
                         return@processTimelineEvents
                     }