Skip to content

NPE during reconnect #1364

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions