aboutsummaryrefslogtreecommitdiff
path: root/pkg/worker/list_processor.go
diff options
context:
space:
mode:
authorGabriel Arakaki Giovanini <mail@gabrielgio.me>2023-07-03 23:13:04 +0200
committerGabriel Arakaki Giovanini <mail@gabrielgio.me>2023-07-03 23:13:04 +0200
commitc2d666b43477ea7042b574ad940c508216cb0e83 (patch)
treea459b552374114c4ef9ebe9966ed6ec83bb9a11d /pkg/worker/list_processor.go
parent6e84441dab0a2b89869e33d7e89d14189d9b67c0 (diff)
downloadlens-c2d666b43477ea7042b574ad940c508216cb0e83.tar.gz
lens-c2d666b43477ea7042b574ad940c508216cb0e83.tar.bz2
lens-c2d666b43477ea7042b574ad940c508216cb0e83.zip
fix: Fix content type
Content type was always being set to `text/html`. Also swap lib for processing thumbnail for something that accepts HEIC.
Diffstat (limited to 'pkg/worker/list_processor.go')
-rw-r--r--pkg/worker/list_processor.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/pkg/worker/list_processor.go b/pkg/worker/list_processor.go
index 0a07085..c060583 100644
--- a/pkg/worker/list_processor.go
+++ b/pkg/worker/list_processor.go
@@ -16,6 +16,10 @@ type (
Process(context.Context, T) error
}
+ OnFail[T any] interface {
+ OnFail(context.Context, T, error)
+ }
+
BatchProcessor[T any] interface {
Query(context.Context) ([]T, error)
Process(context.Context, T) error
@@ -77,6 +81,12 @@ func (l *batchProcessorWorker[T]) Start(ctx context.Context) error {
var wg sync.WaitGroup
for _, v := range values {
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ default:
+ }
+
wg.Add(1)
l.scheduler.Take()
go func(v T) {
@@ -84,6 +94,9 @@ func (l *batchProcessorWorker[T]) Start(ctx context.Context) error {
defer wg.Done()
if err := l.batchProcessor.Process(ctx, v); err != nil && !errors.Is(err, context.Canceled) {
l.logrus.WithError(err).Error("Error processing batch")
+ if failure, ok := l.batchProcessor.(OnFail[T]); ok {
+ failure.OnFail(ctx, v, err)
+ }
}
}(v)
}