mirror of
https://github.com/matrix-org/sliding-sync.git
synced 2025-03-10 13:37:11 +00:00
More sentry logging
This commit is contained in:
parent
80e46c234d
commit
601e3fce49
@ -46,8 +46,9 @@ type Storage struct {
|
||||
func NewStorage(postgresURI string) *Storage {
|
||||
db, err := sqlx.Open("postgres", postgresURI)
|
||||
if err != nil {
|
||||
logger.Panic().Err(err).Str("uri", postgresURI).Msg("failed to open SQL DB")
|
||||
sentry.CaptureException(err)
|
||||
// TODO: if we panic(), will sentry have a chance to flush the event?
|
||||
logger.Panic().Err(err).Str("uri", postgresURI).Msg("failed to open SQL DB")
|
||||
}
|
||||
acc := &Accumulator{
|
||||
db: db,
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"github.com/getsentry/sentry-go"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
@ -44,6 +45,8 @@ type Storage struct {
|
||||
func NewStore(postgresURI, secret string) *Storage {
|
||||
db, err := sqlx.Open("postgres", postgresURI)
|
||||
if err != nil {
|
||||
sentry.CaptureException(err)
|
||||
// TODO: if we panic(), will sentry have a chance to flush the event?
|
||||
log.Panic().Err(err).Str("uri", postgresURI).Msg("failed to open SQL DB")
|
||||
}
|
||||
db.MustExec(`
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/matrix-org/sliding-sync/internal"
|
||||
"strconv"
|
||||
"sync"
|
||||
|
||||
@ -69,12 +70,15 @@ func (r *ToDeviceRequest) ProcessInitial(ctx context.Context, res *Response, ext
|
||||
from, err = strconv.ParseInt(r.Since, 10, 64)
|
||||
if err != nil {
|
||||
l.Err(err).Str("since", r.Since).Msg("invalid since value")
|
||||
// TODO add context to sentry
|
||||
internal.GetSentryHubFromContextOrDefault(ctx).CaptureException(err)
|
||||
return
|
||||
}
|
||||
// the client is confirming messages up to `from` so delete everything up to and including it.
|
||||
if err = extCtx.Store.ToDeviceTable.DeleteMessagesUpToAndIncluding(extCtx.DeviceID, from); err != nil {
|
||||
l.Err(err).Str("since", r.Since).Msg("failed to delete to-device messages up to this value")
|
||||
// non-fatal TODO sentry
|
||||
// TODO add context to sentry
|
||||
internal.GetSentryHubFromContextOrDefault(ctx).CaptureException(err)
|
||||
}
|
||||
}
|
||||
mapMu.Lock()
|
||||
@ -82,22 +86,26 @@ func (r *ToDeviceRequest) ProcessInitial(ctx context.Context, res *Response, ext
|
||||
mapMu.Unlock()
|
||||
if from < lastSentPos {
|
||||
// we told the client about a newer position, but yet they are using an older position, yell loudly
|
||||
// TODO sentry
|
||||
const errMsg = "Client did not increment since token: possibly sending back duplicate to-device events!"
|
||||
l.Warn().Int64("last_sent", lastSentPos).Int64("recv", from).Bool("initial", extCtx.IsInitial).Msg(
|
||||
"Client did not increment since token: possibly sending back duplicate to-device events!",
|
||||
errMsg,
|
||||
)
|
||||
// TODO add context to sentry
|
||||
internal.GetSentryHubFromContextOrDefault(ctx).CaptureException(fmt.Errorf(errMsg))
|
||||
}
|
||||
|
||||
msgs, upTo, err := extCtx.Store.ToDeviceTable.Messages(extCtx.DeviceID, from, int64(r.Limit))
|
||||
if err != nil {
|
||||
l.Err(err).Int64("from", from).Msg("cannot query to-device messages")
|
||||
// TODO sentry
|
||||
// TODO add context to sentry
|
||||
internal.GetSentryHubFromContextOrDefault(ctx).CaptureException(err)
|
||||
return
|
||||
}
|
||||
err = extCtx.Store.ToDeviceTable.SetUnackedPosition(extCtx.DeviceID, upTo)
|
||||
if err != nil {
|
||||
l.Err(err).Msg("cannot set unacked position")
|
||||
// TODO sentry
|
||||
// TODO add context to sentry
|
||||
internal.GetSentryHubFromContextOrDefault(ctx).CaptureException(err)
|
||||
return
|
||||
}
|
||||
mapMu.Lock()
|
||||
|
@ -187,6 +187,7 @@ func (h *SyncLiveHandler) serve(w http.ResponseWriter, req *http.Request) error
|
||||
defer req.Body.Close()
|
||||
if err := json.NewDecoder(req.Body).Decode(&requestBody); err != nil {
|
||||
log.Err(err).Msg("failed to read/decode request body")
|
||||
internal.GetSentryHubFromContextOrDefault(req.Context()).CaptureException(err)
|
||||
return &internal.HandlerError{
|
||||
StatusCode: 400,
|
||||
Err: err,
|
||||
@ -205,6 +206,7 @@ func (h *SyncLiveHandler) serve(w http.ResponseWriter, req *http.Request) error
|
||||
conn, err := h.setupConnection(req, &requestBody, req.URL.Query().Get("pos") != "")
|
||||
if err != nil {
|
||||
hlog.FromRequest(req).Err(err).Msg("failed to get or create Conn")
|
||||
internal.GetSentryHubFromContextOrDefault(req.Context()).CaptureException(err)
|
||||
return err
|
||||
}
|
||||
// set pos and timeout if specified
|
||||
@ -233,6 +235,7 @@ func (h *SyncLiveHandler) serve(w http.ResponseWriter, req *http.Request) error
|
||||
resp, herr := conn.OnIncomingRequest(req.Context(), &requestBody)
|
||||
if herr != nil {
|
||||
log.Err(herr).Msg("failed to OnIncomingRequest")
|
||||
internal.GetSentryHubFromContextOrDefault(req.Context()).CaptureException(herr)
|
||||
return herr
|
||||
}
|
||||
// for logging
|
||||
|
3
v3.go
3
v3.go
@ -169,8 +169,9 @@ func RunSyncV3Server(h http.Handler, bindAddr, destV2Server, tlsCert, tlsKey str
|
||||
err = http.ListenAndServe(bindAddr, srv)
|
||||
}
|
||||
if err != nil {
|
||||
logger.Fatal().Err(err).Msg("failed to listen and serve")
|
||||
sentry.CaptureException(err)
|
||||
// TODO: Fatal() calls os.Exit. Will that give time for sentry.Flush() to run?
|
||||
logger.Fatal().Err(err).Msg("failed to listen and serve")
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user