From 44f8640a8280478adabc59d680404651b09ba35f Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Tue, 7 Jul 2020 18:44:44 +0100 Subject: [PATCH] More debugging --- go.mod | 2 +- go.sum | 4 ++++ internal/eventutil/events.go | 7 +++++++ roomserver/internal/query.go | 11 +++++++---- syncapi/consumers/roomserver.go | 6 +++++- syncapi/storage/postgres/output_room_events_table.go | 5 ++++- syncapi/storage/shared/syncserver.go | 2 ++ syncapi/storage/sqlite3/output_room_events_table.go | 2 +- 8 files changed, 31 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 4efd0bca1..6ae9167c5 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/matrix-org/go-http-js-libp2p v0.0.0-20200518170932-783164aeeda4 github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3 github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 - github.com/matrix-org/gomatrixserverlib v0.0.0-20200707103800-7470b03f069b + github.com/matrix-org/gomatrixserverlib v0.0.0-20200707162611-db0a4f22326a github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 github.com/mattn/go-sqlite3 v2.0.2+incompatible diff --git a/go.sum b/go.sum index 586fa39d4..c5c579f6b 100644 --- a/go.sum +++ b/go.sum @@ -423,6 +423,10 @@ github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 h1:Hr3zjRsq2bh github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0= github.com/matrix-org/gomatrixserverlib v0.0.0-20200707103800-7470b03f069b h1:g1ueoPHI5tpafw/QysVfDw43FwRTPqz8sT+MZbK54yk= github.com/matrix-org/gomatrixserverlib v0.0.0-20200707103800-7470b03f069b/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200707161606-3036a9eb040b h1:+xwQiX62joTDOYYxqALCalw/kMN6FyBAvn4OJkN9nug= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200707161606-3036a9eb040b/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200707162611-db0a4f22326a h1:mmT0nbvYtJq75XoF8Mi6fPrx8vDtlLyg17LXH4GOkvA= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200707162611-db0a4f22326a/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU= github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f h1:pRz4VTiRCO4zPlEMc3ESdUOcW4PXHH4Kj+YDz1XyE+Y= github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f/go.mod h1:y0oDTjZDv5SM9a2rp3bl+CU+bvTRINQsdb7YlDql5Go= github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 h1:ntrLa/8xVzeSs8vHFHK25k0C+NV74sYMJnNSg5NoSRo= diff --git a/internal/eventutil/events.go b/internal/eventutil/events.go index e3b8f3d31..a993adf1e 100644 --- a/internal/eventutil/events.go +++ b/internal/eventutil/events.go @@ -22,6 +22,7 @@ import ( "github.com/matrix-org/dendrite/internal/config" "github.com/matrix-org/dendrite/roomserver/api" + "github.com/sirupsen/logrus" "github.com/matrix-org/gomatrixserverlib" ) @@ -157,10 +158,16 @@ func RedactEvent(redactionEvent, redactedEvent *gomatrixserverlib.Event) (*gomat if redactionEvent.Type() != gomatrixserverlib.MRoomRedaction { return nil, fmt.Errorf("RedactEvent: redactionEvent isn't a redaction event, is '%s'", redactionEvent.Type()) } + logrus.Infof("IMMA REDACTME NOW! redacted=", redactedEvent.Redacted(), " ver=", redactedEvent.Version()) r := redactedEvent.Redact() err := r.SetUnsignedField("redacted_because", redactionEvent) if err != nil { return nil, err } + // NOTSPEC: sytest relies on this unspecced field existing :( + err = r.SetUnsignedField("redacted_by", redactionEvent.EventID()) + if err != nil { + return nil, err + } return &r, nil } diff --git a/roomserver/internal/query.go b/roomserver/internal/query.go index ca4af0b25..bede6c881 100644 --- a/roomserver/internal/query.go +++ b/roomserver/internal/query.go @@ -20,6 +20,7 @@ import ( "context" "fmt" + "github.com/matrix-org/dendrite/internal/eventutil" "github.com/matrix-org/dendrite/roomserver/api" "github.com/matrix-org/dendrite/roomserver/auth" "github.com/matrix-org/dendrite/roomserver/state" @@ -867,7 +868,7 @@ func getAuthChain( func persistEvents(ctx context.Context, db storage.Database, events []gomatrixserverlib.HeaderedEvent) (types.RoomNID, map[string]types.Event) { var roomNID types.RoomNID backfilledEventMap := make(map[string]types.Event) - for _, ev := range events { + for j, ev := range events { nidMap, err := db.EventNIDs(ctx, ev.AuthEventIDs()) if err != nil { // this shouldn't happen as RequestBackfill already found them logrus.WithError(err).WithField("auth_events", ev.AuthEventIDs()).Error("Failed to find one or more auth events") @@ -891,12 +892,14 @@ func persistEvents(ctx context.Context, db storage.Database, events []gomatrixse // It's also possible for this event to be a redaction which results in another event being // redacted, which we don't care about since we aren't returning it in this backfill. if redactedEventID == ev.EventID() { - ev = ev.Redact().Headered(ev.RoomVersion) - err = ev.SetUnsignedField("redacted_because", redactionEvent) + eventToRedact := ev.Unwrap() + redactedEvent, err := eventutil.RedactEvent(redactionEvent, &eventToRedact) if err != nil { - logrus.WithError(err).WithField("event_id", ev.EventID()).Error("Failed to set unsigned field") + logrus.WithError(err).WithField("event_id", ev.EventID()).Error("Failed to redact event") continue } + ev = redactedEvent.Headered(ev.RoomVersion) + events[j] = ev } backfilledEventMap[ev.EventID()] = types.Event{ EventNID: stateAtEvent.StateEntry.EventNID, diff --git a/syncapi/consumers/roomserver.go b/syncapi/consumers/roomserver.go index e4af623ec..62d157bc2 100644 --- a/syncapi/consumers/roomserver.go +++ b/syncapi/consumers/roomserver.go @@ -99,7 +99,11 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error { func (c *OutputRoomEventConsumer) onRedactEvent( ctx context.Context, msg api.OutputRedactedEvent, ) error { - return c.db.RedactEvent(ctx, msg.RedactedEventID, &msg.RedactedBecause) + err := c.db.RedactEvent(ctx, msg.RedactedEventID, &msg.RedactedBecause) + if err != nil { + log.WithError(err).Error("RedactEvent error'd") + } + return err } func (s *OutputRoomEventConsumer) onNewRoomEvent( diff --git a/syncapi/storage/postgres/output_room_events_table.go b/syncapi/storage/postgres/output_room_events_table.go index 79257051f..646520d1f 100644 --- a/syncapi/storage/postgres/output_room_events_table.go +++ b/syncapi/storage/postgres/output_room_events_table.go @@ -29,6 +29,7 @@ import ( "github.com/lib/pq" "github.com/matrix-org/dendrite/internal/sqlutil" "github.com/matrix-org/gomatrixserverlib" + "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus" ) @@ -164,7 +165,9 @@ func (s *outputRoomEventsStatements) UpdateEventJSON(ctx context.Context, event if err != nil { return err } - _, err = s.updateEventJSONStmt.ExecContext(ctx, event.EventID(), headeredJSON) + rr, err := s.updateEventJSONStmt.ExecContext(ctx, headeredJSON, event.EventID()) + mod, _ := rr.RowsAffected() + logrus.Infof("UpdateEventJSON modified=%d json=%s", mod, string(headeredJSON)) return err } diff --git a/syncapi/storage/shared/syncserver.go b/syncapi/storage/shared/syncserver.go index 7988b199a..37a2375da 100644 --- a/syncapi/storage/shared/syncserver.go +++ b/syncapi/storage/shared/syncserver.go @@ -607,10 +607,12 @@ func (d *Database) RedactEvent(ctx context.Context, redactedEventID string, reda logrus.WithField("event_id", redactedEventID).WithField("redaction_event", redactedBecause.EventID()).Warnf("missing redacted event for redaction") return nil } + logrus.Infof("redaction-ver:%v event-ver:%v", redactedBecause.RoomVersion, redactedEvents[0].RoomVersion) eventToRedact := redactedEvents[0].Unwrap() redactionEvent := redactedBecause.Unwrap() ev, err := eventutil.RedactEvent(&redactionEvent, &eventToRedact) if err != nil { + logrus.Infof("REDACTME RedactEvent returned an error: %s", err) return err } diff --git a/syncapi/storage/sqlite3/output_room_events_table.go b/syncapi/storage/sqlite3/output_room_events_table.go index 73527879a..da2ea3f69 100644 --- a/syncapi/storage/sqlite3/output_room_events_table.go +++ b/syncapi/storage/sqlite3/output_room_events_table.go @@ -155,7 +155,7 @@ func (s *outputRoomEventsStatements) UpdateEventJSON(ctx context.Context, event if err != nil { return err } - _, err = s.updateEventJSONStmt.ExecContext(ctx, event.EventID(), headeredJSON) + _, err = s.updateEventJSONStmt.ExecContext(ctx, headeredJSON, event.EventID()) return err }