aboutsummaryrefslogtreecommitdiff
path: root/keyserver
diff options
context:
space:
mode:
authorkegsay <kegan@matrix.org>2022-01-20 15:26:45 +0000
committerGitHub <noreply@github.com>2022-01-20 15:26:45 +0000
commitdb7d9cba8ad28c300dd66c01b9b0ce2414e8cbe0 (patch)
treead91c627b4ce44490bd484c53a23f343ee49041e /keyserver
parent16035b97373849d74961e15616f3f1449f0a5abd (diff)
BREAKING: Remove Partitioned Stream Positions (#2096)
* go mod tidy * Break complement to check it fails CI * Remove partitioned stream positions This was used by the device list stream position. The device list position now corresponds to the `Offset`, and the partition is always 0, in prep for removing reliance on Kafka topics for device list changes. * Linting * Migrate old style tokens to new style because element-web doesn't soft-logoout on 4xx errors on /sync
Diffstat (limited to 'keyserver')
-rw-r--r--keyserver/api/api.go4
-rw-r--r--keyserver/internal/internal.go7
-rw-r--r--keyserver/producers/keychange.go9
3 files changed, 2 insertions, 18 deletions
diff --git a/keyserver/api/api.go b/keyserver/api/api.go
index 5a109cc6..eae14ae1 100644
--- a/keyserver/api/api.go
+++ b/keyserver/api/api.go
@@ -224,8 +224,6 @@ type QueryKeysResponse struct {
}
type QueryKeyChangesRequest struct {
- // The partition which had key events sent to
- Partition int32
// The offset of the last received key event, or sarama.OffsetOldest if this is from the beginning
Offset int64
// The inclusive offset where to track key changes up to. Messages with this offset are included in the response.
@@ -236,8 +234,6 @@ type QueryKeyChangesRequest struct {
type QueryKeyChangesResponse struct {
// The set of users who have had their keys change.
UserIDs []string
- // The partition being served - useful if the partition is unknown at request time
- Partition int32
// The latest offset represented in this response.
Offset int64
// Set if there was a problem handling the request.
diff --git a/keyserver/internal/internal.go b/keyserver/internal/internal.go
index 3e91962e..0140a8f4 100644
--- a/keyserver/internal/internal.go
+++ b/keyserver/internal/internal.go
@@ -59,17 +59,14 @@ func (a *KeyInternalAPI) InputDeviceListUpdate(
}
func (a *KeyInternalAPI) QueryKeyChanges(ctx context.Context, req *api.QueryKeyChangesRequest, res *api.QueryKeyChangesResponse) {
- if req.Partition < 0 {
- req.Partition = a.Producer.DefaultPartition()
- }
- userIDs, latest, err := a.DB.KeyChanges(ctx, req.Partition, req.Offset, req.ToOffset)
+ partition := 0
+ userIDs, latest, err := a.DB.KeyChanges(ctx, int32(partition), req.Offset, req.ToOffset)
if err != nil {
res.Error = &api.KeyError{
Err: err.Error(),
}
}
res.Offset = latest
- res.Partition = req.Partition
res.UserIDs = userIDs
}
diff --git a/keyserver/producers/keychange.go b/keyserver/producers/keychange.go
index 782675c2..c5ddf2c1 100644
--- a/keyserver/producers/keychange.go
+++ b/keyserver/producers/keychange.go
@@ -32,15 +32,6 @@ type KeyChange struct {
DB storage.Database
}
-// DefaultPartition returns the default partition this process is sending key changes to.
-// NB: A keyserver MUST send key changes to only 1 partition or else query operations will
-// become inconsistent. Partitions can be sharded (e.g by hash of user ID of key change) but
-// then all keyservers must be queried to calculate the entire set of key changes between
-// two sync tokens.
-func (p *KeyChange) DefaultPartition() int32 {
- return 0
-}
-
// ProduceKeyChanges creates new change events for each key
func (p *KeyChange) ProduceKeyChanges(keys []api.DeviceMessage) error {
userToDeviceCount := make(map[string]int)