From 3ce0e33f99ad127e9ce6bb3d0ba5fdf034999fb7 Mon Sep 17 00:00:00 2001 From: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com> Date: Fri, 11 Nov 2022 11:01:53 +0000 Subject: [PATCH] [chore] close in-storage media reader _before_ opening write, no need to leave it hanging around (#1016) Signed-off-by: kim Signed-off-by: kim --- internal/media/processingemoji.go | 14 +++++++------- internal/media/processingmedia.go | 15 ++++++--------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/internal/media/processingemoji.go b/internal/media/processingemoji.go index 32eac4172..ec46ae76d 100644 --- a/internal/media/processingemoji.go +++ b/internal/media/processingemoji.go @@ -148,12 +148,7 @@ func (p *ProcessingEmoji) loadStatic(ctx context.Context) error { atomic.StoreInt32(&p.staticState, int32(errored)) return p.err } - - defer func() { - if err := stored.Close(); err != nil { - log.Errorf("loadStatic: error closing stored full size: %s", err) - } - }() + defer stored.Close() // we haven't processed a static version of this emoji yet so do it now static, err := deriveStaticEmoji(stored, p.emoji.ImageContentType) @@ -163,7 +158,12 @@ func (p *ProcessingEmoji) loadStatic(ctx context.Context) error { return p.err } - // put the static in storage + // Close stored emoji now we're done + if err := stored.Close(); err != nil { + log.Errorf("loadStatic: error closing stored full size: %s", err) + } + + // put the static image in storage if err := p.storage.Put(ctx, p.emoji.ImageStaticPath, static.small); err != nil && err != storage.ErrAlreadyExists { p.err = fmt.Errorf("loadStatic: error storing static: %s", err) atomic.StoreInt32(&p.staticState, int32(errored)) diff --git a/internal/media/processingmedia.go b/internal/media/processingmedia.go index 573df1d0e..1247586cb 100644 --- a/internal/media/processingmedia.go +++ b/internal/media/processingmedia.go @@ -137,22 +137,15 @@ func (p *ProcessingMedia) loadThumb(ctx context.Context) error { } // stream the original file out of storage - log.Tracef("loadThumb: fetching attachment from storage %s", p.attachment.URL) stored, err := p.storage.GetStream(ctx, p.attachment.File.Path) if err != nil { p.err = fmt.Errorf("loadThumb: error fetching file from storage: %s", err) atomic.StoreInt32(&p.thumbState, int32(errored)) return p.err } - - defer func() { - if err := stored.Close(); err != nil { - log.Errorf("loadThumb: error closing stored full size: %s", err) - } - }() + defer stored.Close() // stream the file from storage straight into the derive thumbnail function - log.Tracef("loadThumb: calling deriveThumbnail %s", p.attachment.URL) thumb, err := deriveThumbnail(stored, p.attachment.File.ContentType, createBlurhash) if err != nil { p.err = fmt.Errorf("loadThumb: error deriving thumbnail: %s", err) @@ -160,8 +153,12 @@ func (p *ProcessingMedia) loadThumb(ctx context.Context) error { return p.err } + // Close stored media now we're done + if err := stored.Close(); err != nil { + log.Errorf("loadThumb: error closing stored full size: %s", err) + } + // put the thumbnail in storage - log.Tracef("loadThumb: storing new thumbnail %s", p.attachment.URL) if err := p.storage.Put(ctx, p.attachment.Thumbnail.Path, thumb.small); err != nil && err != storage.ErrAlreadyExists { p.err = fmt.Errorf("loadThumb: error storing thumbnail: %s", err) atomic.StoreInt32(&p.thumbState, int32(errored))