Skip to content

Commit

Permalink
[chore] close in-storage media reader _before_ opening write, no need…
Browse files Browse the repository at this point in the history
… to leave it hanging around (#1016)

Signed-off-by: kim <grufwub@gmail.com>

Signed-off-by: kim <grufwub@gmail.com>
  • Loading branch information
NyaaaWhatsUpDoc committed Nov 11, 2022
1 parent b755906 commit 3ce0e33
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 16 deletions.
14 changes: 7 additions & 7 deletions internal/media/processingemoji.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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))
Expand Down
15 changes: 6 additions & 9 deletions internal/media/processingmedia.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,31 +137,28 @@ 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)
atomic.StoreInt32(&p.thumbState, int32(errored))
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))
Expand Down

0 comments on commit 3ce0e33

Please sign in to comment.