aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-04-14 16:14:51 +0200
committerMartin Polden <mpolden@mpolden.no>2023-04-17 10:31:40 +0200
commit468dc5f1a47f3d7d90ae7e83476344c55c20b149 (patch)
treeeda0b21f00e6bfd701ae881a8617d48bbf78e06e /client
parentbb273b823216308a1b33ce2ef6dc7b0a4639494b (diff)
Release lock before retrying
Diffstat (limited to 'client')
-rw-r--r--client/go/internal/vespa/document/dispatcher.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/client/go/internal/vespa/document/dispatcher.go b/client/go/internal/vespa/document/dispatcher.go
index dc6045ac791..533ca7a0019 100644
--- a/client/go/internal/vespa/document/dispatcher.go
+++ b/client/go/internal/vespa/document/dispatcher.go
@@ -74,8 +74,6 @@ func NewDispatcher(feeder Feeder, throttler Throttler, breaker CircuitBreaker, o
func (d *Dispatcher) sendDocumentIn(group *documentGroup) {
group.mu.Lock()
- defer group.mu.Unlock()
- defer d.releaseSlot()
first := group.ops.Front()
if first == nil {
panic("sending from empty document group, this should not happen")
@@ -84,6 +82,8 @@ func (d *Dispatcher) sendDocumentIn(group *documentGroup) {
op.attempts++
result := d.feeder.Send(op.document)
d.results <- result
+ d.releaseSlot()
+ group.mu.Unlock()
if d.shouldRetry(op, result) {
d.enqueue(op)
}