You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A rare issue is fixed where rapidly deleting a topic and recreating a topic with the same name could trigger an assertion by @jcsp in https://github.com/redpanda-data/redpanda/pull/9054
Even though I use older releases I'm thinking that the deadlock is still there waiting.
Ways to reproduce:
Most often this deadlock takes place when the sequence of actions happen.
Produce some data into a topic
Consume all data from that topic (using poll records)
Delete the topic
Rapidly recreate the topic with the same name
Produce some data again into that topic (using produce without promise & same producerID)
Deadlock Code:
Next I will explain how and where the deadlock happened in the code path.
At first here is the dumb of goroutines that got the deadlock
Almost certainly exists on latest release
I'd really like to wire in Go's own priority lock checking someday but I absolutely don't have the time
Very good analysis above, this can be fixed. I spent a lot of time in the past ensuring that I didn't have any lock inversions but you found one I missed 😅
Context
In some very rare cases a deadlock takes place.
Versions
I use:
This is also related with an issue fixed on redpanda latest release -> https://github.com/redpanda-data/redpanda/releases/tag/v22.3.14
Even though I use older releases I'm thinking that the deadlock is still there waiting.
Ways to reproduce:
Most often this deadlock takes place when the sequence of actions happen.
Deadlock Code:
Next I will explain how and where the deadlock happened in the code path.
At first here is the dumb of goroutines that got the deadlock
Process 1
Process 2
These two processes above, use 2 mutex locks
recBuf.mu
->franz-go/pkg/kgo/sink.go
Line 1035 in 8cb298d
producer.idMu
->franz-go/pkg/kgo/producer.go
Line 51 in 8cb298d
But on the opposite priority on each process.
Process 1
LocksrecBuf.mu
->franz-go/pkg/kgo/sink.go
Line 680 in 8cb298d
producer.idMu
->franz-go/pkg/kgo/producer.go
Line 685 in 8cb298d
Process 2
Locksproducer.idMu
->franz-go/pkg/kgo/producer.go
Line 611 in 8cb298d
recBuf.mu
->franz-go/pkg/kgo/producer.go
Line 675 in 8cb298d
This sequence of locks if happen to be in parallel it will create a dead lock with one process waiting the other to be released.
Questions
Are you aware of this issue?
Do you think it would be a valid case on latest release?
Kind Regards
With much respect to your work!
The text was updated successfully, but these errors were encountered: