Bruno Windels
73ea09f668
Handle sync ordering vs back-fill ordering (see synapse #7164 ) resulting in dupe events
...
Also extra robustness while filling a gap
ignore duplicate events from synapse instead considering them an
overlapping event with the adjacent fragment
2020-03-30 20:37:36 +02:00
Bruno Windels
f02641c808
look for transaction_id in /messages response to delete pending events
2020-03-22 00:07:37 +01:00
Bruno Windels
c4a5de20c0
update previous fragment in comparer when appending a new line fragment
2020-03-21 10:45:09 +01:00
Bruno Windels
56c87b3966
better naming
2020-03-14 20:49:15 +01:00
Bruno Windels
224d56698a
only set new live key when creating a fragment after the txn succeeds
...
when doing a limited sync, and a new fragment is created,
this._lastLiveKey is updated immediately. If the transaction
would then fail, the fragmentId in this._lastLiveKey was incremented
but the fragment wasn't written to the store, so if sync is resumed
and would subsequently succeed, fragmentIds would be assigned to events
that don't have a corresponding fragment in the timelineFragment store.
This would throw errors when trying to load the timeline,
breaking the whole app.
This changes SyncWriter to only update this._lastLiveKey in
the emit phase, when the transactions has been committed already.
2020-01-04 20:06:49 +01:00
Bruno Windels
bdc2c3d9ad
cleanup: storage is not used in SyncWriter
...
as the transaction is now always passed as an argument, it never
creates one on its own.
2020-01-04 20:04:57 +01:00
Bruno Windels
201b70ee4f
fix failing to sync new rooms
2019-10-12 22:18:36 +02:00
Bruno Windels
90a38078e0
unused import
2019-06-26 22:19:40 +02:00
Bruno Windels
0524f06722
remove logging
2019-06-03 00:31:21 +02:00
Bruno Windels
6bdf44d114
adjust comment
2019-06-03 00:30:37 +02:00
Bruno Windels
3dbf5e727d
process in incoming order (reverse-chronological order if backward)
...
makes code simpler, don't need fix to undo reverse ordering of
nonOverlappingEvents. reverse looking is very likely premature
optimization as well.
2019-06-03 00:18:52 +02:00
Bruno Windels
0407829b26
fix filling gaps with overlapping events
...
although event order remains wrong, as events are reversed.
step before removing premature optimization, so it's in the git
commit log
2019-06-03 00:11:29 +02:00
Bruno Windels
7852f31f7e
clear token on pagination when events start overlapping
2019-06-02 19:28:24 +02:00
Bruno Windels
bb5f139355
fix fragmentId:0 being evaluated as falsy
2019-06-02 19:27:23 +02:00
Bruno Windels
c63d94947f
fix persisting a gappy sync
2019-06-02 18:28:38 +02:00
Bruno Windels
ef5d2cfa08
chunk is in reverse-chronological order for backward pagination
2019-06-02 18:15:40 +02:00
Bruno Windels
bdad0ad86b
fix some gap fill errors
2019-06-02 15:46:24 +02:00
Bruno Windels
e339cb7321
more fixes, timeline is showing again
2019-06-02 14:59:30 +02:00
Bruno Windels
a1e527ccbc
first round of fixes after running the app again in the browser!
2019-06-02 00:49:47 +02:00
Bruno Windels
35d90a8535
ctor takes a bool, not Direction. But use helper fn instead.
2019-06-01 18:20:29 +02:00
Bruno Windels
f8fbfbff9a
implement reading n events from end of live fragment
2019-06-01 17:04:05 +02:00
Bruno Windels
447b0aa03c
allow adding fragments to comparer, instead of reloading from db.
...
This is a suboptimal implementation now,
but is the API we want to end up with. Readers and Writers
in persistence add fragments to the comparer when they become
aware of, create, or link up fragments.
2019-06-01 16:42:57 +02:00
Bruno Windels
fa4efe0132
rename Gap/SyncPersistence to Writer, in line with TimelineReader
2019-06-01 15:40:21 +02:00
Bruno Windels
784588440c
WIP for fragment support
2019-05-19 20:49:46 +02:00
Bruno Windels
3324fd3afd
split up persistFragmentFill method into smaller ones
2019-05-12 20:44:20 +02:00
Bruno Windels
a6b17cf25a
first draft of persistFragmentFill
2019-05-12 20:25:41 +02:00
Bruno Windels
89bc0e1696
split up RoomPersister to SyncPersister
...
also rename stores to timelineEvents and timelineFragments
2019-05-12 20:24:06 +02:00