Skip to content

NPE during reconnect #1364

@Xander-Polishchuk

Description

@Xander-Polishchuk

Describe the bug
It's possible to get NPE in reconnectBlocking(), due to a race with previously running client connection thread.

The race happens due to closeLatch countdown called before connectReadThread is set to null in run

  • connectReadThread set to null at WebSocketClient.java:526
  • while countdown is called in a callback in engine.closeConnection WebSocketClient.java:524

To Reproduce
Steps to reproduce the behavior:

  1. Setup WS server
  2. Connect
  3. Call reconnectBlocking() in a loop until NPE

Expected behavior
No NPE on reconnectBlocking()

Debug log

java.lang.NullPointerException: Cannot invoke "java.lang.Thread.start()" because "this.connectReadThread" is null
    at org.java_websocket.client.WebSocketClient.connect(WebSocketClient.java:376)
    at org.java_websocket.client.WebSocketClient.connectBlocking(WebSocketClient.java:386)
    at org.java_websocket.client.WebSocketClient.reconnectBlocking(WebSocketClient.java:328)
    at org.web3j.protocol.websocket.WebSocketService.connectToWebSocket(WebSocketService.java:140)

Environment(please complete the following information):

  • Version used: 1.5.4
  • Java version: 17
  • Operating System and version: GCP, Linux container

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions