From b3f8866ef76e71b7036af7c66ad1d096dc54010a Mon Sep 17 00:00:00 2001 From: Jakub Date: Fri, 15 Jul 2022 18:28:15 +0200 Subject: [PATCH] GODT-1737: Improve logging during import --- internal/imap/mailbox_append.go | 3 ++- pkg/pmapi/import.go | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/imap/mailbox_append.go b/internal/imap/mailbox_append.go index e772a4df..1239016c 100644 --- a/internal/imap/mailbox_append.go +++ b/internal/imap/mailbox_append.go @@ -197,7 +197,7 @@ func (im *imapMailbox) labelExistingMessage(msg storeMessageProvider) error { // } func (im *imapMailbox) importMessage(kr *crypto.KeyRing, hdr textproto.Header, body []byte, imapFlags []string, date time.Time) error { //nolint:funlen - im.log.Info("Importing external message") + im.log.WithField("size", len(body)).Info("Importing external message") var ( seen bool @@ -251,6 +251,7 @@ func (im *imapMailbox) importMessage(kr *crypto.KeyRing, hdr textproto.Header, b messageID, err := targetMailbox.ImportMessage(enc, seen, labelIDs, flags, time) if err != nil { + log.WithField("enc.size", len(enc)).Error("Import failed") return err } diff --git a/pkg/pmapi/import.go b/pkg/pmapi/import.go index 83e67b8c..aa243bdf 100644 --- a/pkg/pmapi/import.go +++ b/pkg/pmapi/import.go @@ -90,7 +90,14 @@ type ImportMsgRes struct { // Import imports messages to the user's account. func (c *client) Import(ctx context.Context, reqs ImportMsgReqs) ([]*ImportMsgRes, error) { + if len(reqs) == 0 { + return nil, errors.New("missing import requests") + } + if len(reqs) > MaxImportMessageRequestLength { + log. + WithField("count", len(reqs)). + Warn("Importing too many messages at once.") return nil, errors.New("request is too long") } @@ -98,6 +105,10 @@ func (c *client) Import(ctx context.Context, reqs ImportMsgReqs) ([]*ImportMsgRe for _, req := range reqs { remainingSize -= len(req.Message) if remainingSize < 0 { + log. + WithField("count", len(reqs)). + WithField("size", MaxImportMessageRequestLength-remainingSize). + Warn("Importing too big message(s)") return nil, errors.New("request size is too big") } }