diff --git a/pipelines/_steps/thumbnails/generate.go b/pipelines/_steps/thumbnails/generate.go index a2ffc216324712435db535fc3dac3ea5b07f647b..1eca40268e99c7f4359e6776c68985bab7239590 100644 --- a/pipelines/_steps/thumbnails/generate.go +++ b/pipelines/_steps/thumbnails/generate.go @@ -1,12 +1,16 @@ package thumbnails import ( + "errors" "io" + "strconv" + "github.com/prometheus/client_golang/prometheus" "github.com/turt2live/matrix-media-repo/common" "github.com/turt2live/matrix-media-repo/common/rcontext" "github.com/turt2live/matrix-media-repo/database" "github.com/turt2live/matrix-media-repo/datastores" + "github.com/turt2live/matrix-media-repo/metrics" "github.com/turt2live/matrix-media-repo/pipelines/_steps/datastore_op" "github.com/turt2live/matrix-media-repo/pipelines/_steps/download" "github.com/turt2live/matrix-media-repo/pool" @@ -24,6 +28,14 @@ func Generate(ctx rcontext.RequestContext, mediaRecord *database.DbMedia, width ch := make(chan generateResult) defer close(ch) fn := func() { + metric := metrics.ThumbnailsGenerated.With(prometheus.Labels{ + "width": strconv.Itoa(width), + "height": strconv.Itoa(height), + "method": method, + "animated": strconv.FormatBool(animated), + "origin": mediaRecord.Origin, + }) + mediaStream, err := download.OpenStream(ctx, mediaRecord.Locatable, -1, -1) if err != nil { ch <- generateResult{err: err} @@ -33,10 +45,14 @@ func Generate(ctx rcontext.RequestContext, mediaRecord *database.DbMedia, width i, err := thumbnailing.GenerateThumbnail(mediaStream, fixedContentType, width, height, method, animated, ctx) if err != nil { + if errors.Is(err, common.ErrMediaDimensionsTooSmall) { + metric.Inc() + } ch <- generateResult{err: err} return } + metric.Inc() ch <- generateResult{i: i} }