quarkusio/quarkus · error · RuntimeException

Could not connect to remote side after restart

Error message

Could not connect to remote side after restart

What it means

HttpRemoteDevClient throws this when it cannot establish a connection to the remote dev-mode server, even after triggering a restart and retrying the connect loop. The loop attempts to reconnect after a remote restart, swallowing IOExceptions per attempt; if every attempt fails it gives up with this RuntimeException.

Source

Thrown at extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/devmode/HttpRemoteDevClient.java:296

            long timeout = System.currentTimeMillis() + reconnectTimeoutMillis;
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
            while (System.currentTimeMillis() < timeout) {
                try {
                    HttpURLConnection connection = (HttpURLConnection) probeUrl.openConnection();
                    connection.setRequestProperty(HttpHeaders.ACCEPT.toString(), DEFAULT_ACCEPT);
                    connection.setRequestMethod("POST");
                    connection.addRequestProperty(HttpHeaders.CONTENT_TYPE.toString(), RemoteSyncHandler.APPLICATION_QUARKUS);
                    IoUtil.readBytes(connection.getInputStream());
                    return doConnect(initialState, initialConnectFunction);
                } catch (IOException e) {

                }
            }
            throw new RuntimeException("Could not connect to remote side after restart");
        }

    }

}

View on GitHub (pinned to e1c734241f)

Solutions

  1. Verify quarkus.live-reload.url points at the reachable remote dev server (curl it)
  2. Increase quarkus.live-reload.retry-interval and quarkus.live-reload.retry-max-attempts to tolerate slow remote restarts
  3. Check network/VPN/firewall reachability of the remote host and port
  4. Restart the client after the remote side is fully up

Example fix

// before
quarkus.live-reload.url=http://remote-host:8080
quarkus.live-reload.retry-max-attempts=5
// after
quarkus.live-reload.url=http://remote-host:8080
quarkus.live-reload.retry-max-attempts=30
quarkus.live-reload.retry-interval=2S
Defensive patterns

Strategy: retry

Validate before calling

// before starting remote dev, check the server is reachable
URL u = URI.create("http://remote-host:8080").toURL();
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setConnectTimeout(5000);
if (c.getResponseCode() >= 400) throw new IllegalStateException("Remote dev server not reachable");

Try / catch

try {
    startRemoteDevClient();
} catch (RuntimeException e) {
    if (e.getMessage().contains("Could not connect to remote side")) {
        // check network/VPN, verify live-reload.url, restart with higher retry-max-attempts
    }
}

Prevention

When it happens

Trigger: doConnect -> waitForRestart loop exhausts all retry attempts (quarkus.live-reload.retry-max-attempts) with IOException on every connection attempt to the live-reload URL after a remote restart.

Common situations: Remote host unreachable or VPN down; wrong quarkus.live-reload.url; remote side restarted but slow to come up so all retries are exhausted; firewall blocking the port; retry-interval too short for a slow remote.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/706cb172b3c03192. Report an issue: GitHub.