Only try to get OTKs if the context isn't done yet
MODIFY
syncapi/sync/requestpool.go
syncapi/sync/requestpool.go
@@ -253,9 +253,12 @@ func (rp *RequestPool) OnIncomingSyncRequest(req *http.Request, device *userapi.
// We should always try to include OTKs in sync responses, otherwise clients might upload keys
// even if that's not required. See also:
// https://github.com/matrix-org/synapse/blob/29f06704b8871a44926f7c99e73cf4a978fb8e81/synapse/rest/client/sync.py#L276-L281
+ // Only try to get OTKs if the context isn't already done.
+ if syncReq.Context.Err() == nil {
err = internal.DeviceOTKCounts(syncReq.Context, rp.keyAPI, syncReq.Device.UserID, syncReq.Device.ID, syncReq.Response)
- if err != nil {
- syncReq.Log.WithError(err).Error("failed to get OTK counts")
+ if err != nil && err != context.Canceled {
+ syncReq.Log.WithError(err).Warn("failed to get OTK counts")
+ }
}
return util.JSONResponse{
Code: http.StatusOK,

Only try to get OTKs if the context isn't done yet