Skip to content

FireFly crashed after attempting to send on closed websocket channel #265

@awrichar

Description

@awrichar

While running E2E tests, I observed that one of the FireFly nodes suddenly went down and did not come back up. Logs (below) reveal that FireFly attempted to invoke wc.send from dispatchChangeEvent after the websocket was already closed, which triggered a fatal panic.

[2021-10-19T17:34:31.493Z] ERROR Read failed: websocket: close 1006 (abnormal closure): unexpected EOF pid=1 websocket=b7cd0598-f799-4a6b-a96c-c72b578665d0
[2021-10-19T17:34:31.493Z] DEBUG Sender closing pid=1 websocket=b7cd0598-f799-4a6b-a96c-c72b578665d0
[2021-10-19T17:34:31.493Z] DEBUG SQL<- commit dbtx=NHUhdPFo pid=1 role=aggregator
[2021-10-19T17:34:31.494Z] DEBUG Closing 1 dispatcher(s) for connection 'b7cd0598-f799-4a6b-a96c-c72b578665d0' pid=1
panic: send on closed channel

goroutine 834 [running]:
github.com/hyperledger/firefly/internal/events/websockets.(*websocketConnection).send(0xc0004be5a0, 0xc89840, 0xc0000e9410, 0x0, 0x0)
	/firefly/internal/events/websockets/websocket_connection.go:226 +0xce
github.com/hyperledger/firefly/internal/events/websockets.(*websocketConnection).dispatchChangeEvent(0xc0004be5a0, 0xc000101a40, 0xc000362780, 0x24)
	/firefly/internal/events/websockets/websocket_connection.go:180 +0x116
github.com/hyperledger/firefly/internal/events/websockets.(*WebSockets).ChangeEvent(0x1331000, 0xc000362780, 0x24, 0xc000101a40)
	/firefly/internal/events/websockets/websockets.go:96 +0xcc
github.com/hyperledger/firefly/internal/events.(*eventDispatcher).deliverEvents(0xc0002acc30)
	/firefly/internal/events/event_dispatcher.go:399 +0x617
created by github.com/hyperledger/firefly/internal/events.(*eventDispatcher).electAndStart
	/firefly/internal/events/event_dispatcher.go:147 +0x276

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions