mirror of
https://github.com/stashapp/stash.git
synced 2026-05-09 05:05:29 +02:00
Use mutex for batch fingerprint submissions
This commit is contained in:
parent
afd2a5d5b8
commit
9690928b76
1 changed files with 10 additions and 1 deletions
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/stashapp/stash/internal/manager"
|
||||
|
|
@ -14,6 +15,8 @@ import (
|
|||
"github.com/stashapp/stash/pkg/stashbox"
|
||||
)
|
||||
|
||||
var fingerprintSubmissionMu sync.Mutex
|
||||
|
||||
func (r *mutationResolver) SubmitStashBoxFingerprints(ctx context.Context, input StashBoxFingerprintSubmissionInput) (bool, error) {
|
||||
b, err := resolveStashBox(input.StashBoxIndex, input.StashBoxEndpoint) //nolint:staticcheck
|
||||
if err != nil {
|
||||
|
|
@ -303,7 +306,13 @@ func (r *mutationResolver) SubmitFingerprintSubmissions(ctx context.Context, sta
|
|||
|
||||
if len(submissions) > 40 {
|
||||
// Submit async to avoid timeouts for large batches
|
||||
go r.submitFingerprintBatch(client, submissions, sceneMap)
|
||||
if !fingerprintSubmissionMu.TryLock() {
|
||||
return false, fmt.Errorf("fingerprint submission already in progress")
|
||||
}
|
||||
go func() {
|
||||
defer fingerprintSubmissionMu.Unlock()
|
||||
r.submitFingerprintBatch(client, submissions, sceneMap)
|
||||
}()
|
||||
} else {
|
||||
r.submitFingerprintBatch(client, submissions, sceneMap)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue