mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-03 00:27:38 +00:00
Release Lock Before Panicking (#12464)
This commit is contained in:
parent
be16b64535
commit
52da7b3de6
@ -144,6 +144,7 @@ func (f *Feed) Send(value interface{}) (nsent int) {
|
|||||||
|
|
||||||
if !f.typecheck(rvalue.Type()) {
|
if !f.typecheck(rvalue.Type()) {
|
||||||
f.sendLock <- struct{}{}
|
f.sendLock <- struct{}{}
|
||||||
|
f.mu.Unlock()
|
||||||
panic(feedTypeError{op: "Send", got: rvalue.Type(), want: f.etype})
|
panic(feedTypeError{op: "Send", got: rvalue.Type(), want: f.etype})
|
||||||
}
|
}
|
||||||
f.mu.Unlock()
|
f.mu.Unlock()
|
||||||
|
@ -32,6 +32,8 @@ func TestFeedPanics(t *testing.T) {
|
|||||||
f.Send(2)
|
f.Send(2)
|
||||||
want := feedTypeError{op: "Send", got: reflect.TypeOf(uint64(0)), want: reflect.TypeOf(0)}
|
want := feedTypeError{op: "Send", got: reflect.TypeOf(uint64(0)), want: reflect.TypeOf(0)}
|
||||||
assert.NoError(t, checkPanic(want, func() { f.Send(uint64(2)) }))
|
assert.NoError(t, checkPanic(want, func() { f.Send(uint64(2)) }))
|
||||||
|
// Validate it doesn't deadlock.
|
||||||
|
assert.NoError(t, checkPanic(want, func() { f.Send(uint64(2)) }))
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
var f Feed
|
var f Feed
|
||||||
|
Loading…
Reference in New Issue
Block a user