aboutsummaryrefslogtreecommitdiff
path: root/syncapi/sync
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-08-25 14:42:47 +0200
committerGitHub <noreply@github.com>2022-08-25 13:42:47 +0100
commit07dd9bd9954d0740664651bf9755a81c3ba2d011 (patch)
tree4a547a8c575767efd66c4e6c0b326ded2f151a4d /syncapi/sync
parent8ff3f1a7c9578a3a4f95755c4698da3219777097 (diff)
SyncAPI tweaks/fixes (#2671)
- Reverts 9dc57122d991d54ea6750448ba88c8763a569830 as it was causing issues https://github.com/matrix-org/dendrite/issues/2660 - Updates the GMSL `DefaultStateFilter` to use a limit of 20 events - Uses the timeline events to determine the new position instead of the state events
Diffstat (limited to 'syncapi/sync')
-rw-r--r--syncapi/sync/request.go28
-rw-r--r--syncapi/sync/requestpool.go2
2 files changed, 18 insertions, 12 deletions
diff --git a/syncapi/sync/request.go b/syncapi/sync/request.go
index 9d4740e9..268ed70c 100644
--- a/syncapi/sync/request.go
+++ b/syncapi/sync/request.go
@@ -23,12 +23,13 @@ import (
"strconv"
"time"
- "github.com/matrix-org/dendrite/syncapi/storage"
- "github.com/matrix-org/dendrite/syncapi/types"
- userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
"github.com/sirupsen/logrus"
+
+ "github.com/matrix-org/dendrite/syncapi/storage"
+ "github.com/matrix-org/dendrite/syncapi/types"
+ userapi "github.com/matrix-org/dendrite/userapi/api"
)
const defaultSyncTimeout = time.Duration(0)
@@ -46,15 +47,9 @@ func newSyncRequest(req *http.Request, device userapi.Device, syncDB storage.Dat
return nil, err
}
}
- // TODO: read from stored filters too
+
+ // Create a default filter and apply a stored filter on top of it (if specified)
filter := gomatrixserverlib.DefaultFilter()
- if since.IsEmpty() {
- // Send as much account data down for complete syncs as possible
- // by default, otherwise clients do weird things while waiting
- // for the rest of the data to trickle down.
- filter.AccountData.Limit = math.MaxInt32
- filter.Room.AccountData.Limit = math.MaxInt32
- }
filterQuery := req.URL.Query().Get("filter")
if filterQuery != "" {
if filterQuery[0] == '{' {
@@ -76,6 +71,17 @@ func newSyncRequest(req *http.Request, device userapi.Device, syncDB storage.Dat
}
}
+ // A loaded filter might have overwritten these values,
+ // so set them after loading the filter.
+ if since.IsEmpty() {
+ // Send as much account data down for complete syncs as possible
+ // by default, otherwise clients do weird things while waiting
+ // for the rest of the data to trickle down.
+ filter.AccountData.Limit = math.MaxInt32
+ filter.Room.AccountData.Limit = math.MaxInt32
+ filter.Room.State.Limit = math.MaxInt32
+ }
+
logger := util.GetLogger(req.Context()).WithFields(logrus.Fields{
"user_id": device.UserID,
"device_id": device.ID,
diff --git a/syncapi/sync/requestpool.go b/syncapi/sync/requestpool.go
index d908a962..c2c9616e 100644
--- a/syncapi/sync/requestpool.go
+++ b/syncapi/sync/requestpool.go
@@ -298,8 +298,8 @@ func (rp *RequestPool) OnIncomingSyncRequest(req *http.Request, device *userapi.
return giveup()
case <-userStreamListener.GetNotifyChannel(syncReq.Since):
- syncReq.Log.Debugln("Responding to sync after wake-up")
currentPos.ApplyUpdates(userStreamListener.GetSyncPosition())
+ syncReq.Log.WithField("currentPos", currentPos).Debugln("Responding to sync after wake-up")
}
} else {
syncReq.Log.WithField("currentPos", currentPos).Debugln("Responding to sync immediately")