diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2021-01-08 16:59:06 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-08 16:59:06 +0000 |
commit | b5a8935042dfb358f4176bc1ca46d0b8ebd62615 (patch) | |
tree | b3b0409cc184f6392eb0230f2127d10d0752b4af /syncapi/consumers/clientapi.go | |
parent | 56a7839aedfdf849193bf25c0e2fcd8f4a0146d8 (diff) |
Sync refactor — Part 1 (#1688)
* It's half-alive
* Wakeups largely working
* Other tweaks, typing works
* Fix bugs, add receipt stream
* Delete notifier, other tweaks
* Dedupe a bit, add a template for the invite stream
* Clean up, add templates for other streams
* Don't leak channels
* Bring forward some more PDU logic, clean up other places
* Add some more wakeups
* Use addRoomDeltaToResponse
* Log tweaks, typing fixed?
* Fix timed out syncs
* Don't reset next batch position on timeout
* Add account data stream/position
* End of day
* Fix complete sync for receipt, typing
* Streams package
* Clean up a bit
* Complete sync send-to-device
* Don't drop errors
* More lightweight notifications
* Fix typing positions
* Don't advance position on remove again unless needed
* Device list updates
* Advance account data position
* Use limit for incremental sync
* Limit fixes, amongst other things
* Remove some fmt.Println
* Tweaks
* Re-add notifier
* Fix invite position
* Fixes
* Notify account data without advancing PDU position in notifier
* Apply account data position
* Get initial position for account data
* Fix position update
* Fix complete sync positions
* Review comments @Kegsay
* Room consumer parameters
Diffstat (limited to 'syncapi/consumers/clientapi.go')
-rw-r--r-- | syncapi/consumers/clientapi.go | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/syncapi/consumers/clientapi.go b/syncapi/consumers/clientapi.go index 9883c6b0..4958f221 100644 --- a/syncapi/consumers/clientapi.go +++ b/syncapi/consumers/clientapi.go @@ -22,8 +22,8 @@ import ( "github.com/matrix-org/dendrite/internal" "github.com/matrix-org/dendrite/internal/eventutil" "github.com/matrix-org/dendrite/setup/config" + "github.com/matrix-org/dendrite/syncapi/notifier" "github.com/matrix-org/dendrite/syncapi/storage" - "github.com/matrix-org/dendrite/syncapi/sync" "github.com/matrix-org/dendrite/syncapi/types" log "github.com/sirupsen/logrus" ) @@ -32,15 +32,17 @@ import ( type OutputClientDataConsumer struct { clientAPIConsumer *internal.ContinualConsumer db storage.Database - notifier *sync.Notifier + stream types.StreamProvider + notifier *notifier.Notifier } // NewOutputClientDataConsumer creates a new OutputClientData consumer. Call Start() to begin consuming from room servers. func NewOutputClientDataConsumer( cfg *config.SyncAPI, kafkaConsumer sarama.Consumer, - n *sync.Notifier, store storage.Database, + notifier *notifier.Notifier, + stream types.StreamProvider, ) *OutputClientDataConsumer { consumer := internal.ContinualConsumer{ @@ -52,7 +54,8 @@ func NewOutputClientDataConsumer( s := &OutputClientDataConsumer{ clientAPIConsumer: &consumer, db: store, - notifier: n, + notifier: notifier, + stream: stream, } consumer.ProcessMessage = s.onMessage @@ -81,7 +84,7 @@ func (s *OutputClientDataConsumer) onMessage(msg *sarama.ConsumerMessage) error "room_id": output.RoomID, }).Info("received data from client API server") - pduPos, err := s.db.UpsertAccountData( + streamPos, err := s.db.UpsertAccountData( context.TODO(), string(msg.Key), output.RoomID, output.Type, ) if err != nil { @@ -92,7 +95,8 @@ func (s *OutputClientDataConsumer) onMessage(msg *sarama.ConsumerMessage) error }).Panicf("could not save account data") } - s.notifier.OnNewEvent(nil, "", []string{string(msg.Key)}, types.StreamingToken{PDUPosition: pduPos}) + s.stream.Advance(streamPos) + s.notifier.OnNewAccountData(string(msg.Key), types.StreamingToken{AccountDataPosition: streamPos}) return nil } |