summaryrefslogtreecommitdiff
path: root/internal/media/processingemoji.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/media/processingemoji.go')
-rw-r--r--internal/media/processingemoji.go70
1 files changed, 32 insertions, 38 deletions
diff --git a/internal/media/processingemoji.go b/internal/media/processingemoji.go
index f4265759b..b4e96a946 100644
--- a/internal/media/processingemoji.go
+++ b/internal/media/processingemoji.go
@@ -22,7 +22,6 @@ import (
errorsv2 "codeberg.org/gruf/go-errors/v2"
"codeberg.org/gruf/go-runners"
- "github.com/superseriousbusiness/gotosocial/internal/gtscontext"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@@ -77,42 +76,34 @@ func (p *ProcessingEmoji) load(ctx context.Context) (
defer func() {
// This is only done when ctx NOT cancelled.
- done = (err == nil || !errorsv2.IsV2(err,
+ if done = (err == nil || !errorsv2.IsV2(err,
context.Canceled,
context.DeadlineExceeded,
- ))
-
- if !done {
- return
- }
-
- // Anything from here, we
- // need to ensure happens
- // (i.e. no ctx canceled).
- ctx = gtscontext.WithValues(
- context.Background(),
- ctx, // values
- )
-
- // On error, clean
- // downloaded files.
- if err != nil {
- p.cleanup(ctx)
- }
-
- if !done {
- return
+ )); done {
+ // Processing finished,
+ // whether error or not!
+
+ // Anything from here, we
+ // need to ensure happens
+ // (i.e. no ctx canceled).
+ ctx = context.WithoutCancel(ctx)
+
+ // On error, clean
+ // downloaded files.
+ if err != nil {
+ p.cleanup(ctx)
+ }
+
+ // Update with latest details, whatever happened.
+ e := p.mgr.state.DB.UpdateEmoji(ctx, p.emoji)
+ if e != nil {
+ log.Errorf(ctx, "error updating emoji in db: %v", e)
+ }
+
+ // Store values.
+ p.done = true
+ p.err = err
}
-
- // Update with latest details, whatever happened.
- e := p.mgr.state.DB.UpdateEmoji(ctx, p.emoji)
- if e != nil {
- log.Errorf(ctx, "error updating emoji in db: %v", e)
- }
-
- // Store final values.
- p.done = true
- p.err = err
}()
// Attempt to store media and calculate
@@ -122,7 +113,10 @@ func (p *ProcessingEmoji) load(ctx context.Context) (
err = p.store(ctx)
return err
})
- emoji = p.emoji
+
+ // Return a copy of emoji.
+ emoji = new(gtsmodel.Emoji)
+ *emoji = *p.emoji
return
}
@@ -265,11 +259,11 @@ func (p *ProcessingEmoji) store(ctx context.Context) error {
// cleanup will remove any traces of processing emoji from storage,
// and perform any other necessary cleanup steps after failure.
func (p *ProcessingEmoji) cleanup(ctx context.Context) {
- var err error
+ log.Debugf(ctx, "running cleanup of emoji %s", p.emoji.ID)
if p.emoji.ImagePath != "" {
// Ensure emoji file at path is deleted from storage.
- err = p.mgr.state.Storage.Delete(ctx, p.emoji.ImagePath)
+ err := p.mgr.state.Storage.Delete(ctx, p.emoji.ImagePath)
if err != nil && !storage.IsNotFound(err) {
log.Errorf(ctx, "error deleting %s: %v", p.emoji.ImagePath, err)
}
@@ -277,7 +271,7 @@ func (p *ProcessingEmoji) cleanup(ctx context.Context) {
if p.emoji.ImageStaticPath != "" {
// Ensure emoji static file at path is deleted from storage.
- err = p.mgr.state.Storage.Delete(ctx, p.emoji.ImageStaticPath)
+ err := p.mgr.state.Storage.Delete(ctx, p.emoji.ImageStaticPath)
if err != nil && !storage.IsNotFound(err) {
log.Errorf(ctx, "error deleting %s: %v", p.emoji.ImageStaticPath, err)
}