Add some debug logs for backfill lock

This commit is contained in:
Tulir Asokan 2023-06-29 15:18:36 +03:00
parent 62a1d83508
commit 07785997bf
3 changed files with 22 additions and 7 deletions

View file

@ -17,7 +17,11 @@ import (
) )
func (portal *Portal) forwardBackfillInitial(source *User, thread *Thread) { func (portal *Portal) forwardBackfillInitial(source *User, thread *Thread) {
defer portal.forwardBackfillLock.Unlock() log := portal.log
defer func() {
log.Debug().Msg("Forward backfill finished, unlocking lock")
portal.forwardBackfillLock.Unlock()
}()
// This should only be called from CreateMatrixRoom which locks forwardBackfillLock before creating the room. // This should only be called from CreateMatrixRoom which locks forwardBackfillLock before creating the room.
if portal.forwardBackfillLock.TryLock() { if portal.forwardBackfillLock.TryLock() {
panic("forwardBackfillInitial() called without locking forwardBackfillLock") panic("forwardBackfillInitial() called without locking forwardBackfillLock")
@ -35,14 +39,14 @@ func (portal *Portal) forwardBackfillInitial(source *User, thread *Thread) {
return return
} }
with := portal.log.With(). with := log.With().
Str("action", "initial backfill"). Str("action", "initial backfill").
Str("room_id", portal.MXID.String()). Str("room_id", portal.MXID.String()).
Int("limit", limit) Int("limit", limit)
if thread != nil { if thread != nil {
with = with.Str("thread_id", thread.ID) with = with.Str("thread_id", thread.ID)
} }
log := with.Logger() log = with.Logger()
portal.backfillLimited(log, source, limit, "", thread) portal.backfillLimited(log, source, limit, "", thread)
} }
@ -231,7 +235,6 @@ func (portal *Portal) forwardBatchSend(log zerolog.Logger, source *User, message
} }
} }
portal.bridge.DB.Message.MassInsert(portal.Key, dbMessages) portal.bridge.DB.Message.MassInsert(portal.Key, dbMessages)
log.Info().Msg("Inserted backfilled batch to database")
} }
func (portal *Portal) convertMessageBatch(log zerolog.Logger, source *User, messages []*discordgo.Message, thread *Thread) ([]*event.Event, []*discordgo.Message, []database.Message) { func (portal *Portal) convertMessageBatch(log zerolog.Logger, source *User, messages []*discordgo.Message, thread *Thread) ([]*event.Event, []*discordgo.Message, []database.Message) {

View file

@ -549,13 +549,15 @@ func (portal *Portal) CreateMatrixRoom(user *User, channel *discordgo.Channel) e
func (portal *Portal) handleDiscordMessages(msg portalDiscordMessage) { func (portal *Portal) handleDiscordMessages(msg portalDiscordMessage) {
if portal.MXID == "" { if portal.MXID == "" {
_, ok := msg.msg.(*discordgo.MessageCreate) msgCreate, ok := msg.msg.(*discordgo.MessageCreate)
if !ok { if !ok {
portal.log.Warn().Msg("Can't create Matrix room from non new message event") portal.log.Warn().Msg("Can't create Matrix room from non new message event")
return return
} }
portal.log.Debug().Msg("Creating Matrix room from incoming message") portal.log.Debug().
Str("message_id", msgCreate.ID).
Msg("Creating Matrix room from incoming message")
if err := portal.CreateMatrixRoom(msg.user, nil); err != nil { if err := portal.CreateMatrixRoom(msg.user, nil); err != nil {
portal.log.Err(err).Msg("Failed to create portal room") portal.log.Err(err).Msg("Failed to create portal room")
return return

12
user.go
View file

@ -1199,11 +1199,21 @@ func (user *User) pushPortalMessage(msg interface{}, typeName, channelID, guildI
return return
} }
portal.discordMessages <- portalDiscordMessage{ wrappedMsg := portalDiscordMessage{
msg: msg, msg: msg,
user: user, user: user,
thread: thread, thread: thread,
} }
select {
case portal.discordMessages <- wrappedMsg:
default:
user.log.Warn().
Str("discord_event", typeName).
Str("guild_id", guildID).
Str("channel_id", channelID).
Msg("Portal message buffer is full")
portal.discordMessages <- wrappedMsg
}
} }
type CustomReadReceipt struct { type CustomReadReceipt struct {