Skip to content

[🐛 Bug]: Can not create a new sessions with BiDi enabled #16006

Open
@baflQA

Description

@baflQA

Description

I run the dynamic grid with docker.
When I try to create a new session, it fails to create a new web socket connection.
Selenium tries to establish the connection multiple times by calling this endpoint:
Establishing connection to ws://localhost:4444/session/f677747a492042d657a565f67af933bf/se/bidi
https://seleniumhq.slack.com/archives/C0ABCS03F/p1751876651385139

Reproducible Code

https://github.com/baflQA/selenium-debug/blob/main/src/test/java/seleniumdebug/CreateNewSessionTest.java
Bootstrap script: https://github.com/baflQA/selenium-debug/blob/main/runGridStandalone.sh

Debugging Logs

[ProxyNodeWebsockets.createWsEndPoint] - Connecting to upstream websocket failed
2025-07-07 10:19:49.504 | org.openqa.selenium.remote.http.ConnectionFailedException: JdkWebSocket initial request execution error
2025-07-07 10:19:49.504 | Build info: version: '4.34.0', revision: '2a4c61c498'
2025-07-07 10:19:49.504 | System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.10.14-linuxkit', java.version: '21.0.7'
2025-07-07 10:19:49.504 | Driver info: driver.version: unknown
2025-07-07 10:19:49.504 |   at org.openqa.selenium.remote.http.jdk.JdkHttpClient.openSocket(JdkHttpClient.java:253)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.remote.tracing.TracedHttpClient.openSocket(TracedHttpClient.java:45)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.grid.node.ProxyNodeWebsockets.createWsEndPoint(ProxyNodeWebsockets.java:238)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.grid.node.ProxyNodeWebsockets.lambda$findBiDiEndpoint$3(ProxyNodeWebsockets.java:183)
2025-07-07 10:19:49.504 |   at java.base/java.util.Optional.map(Optional.java:260)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.grid.node.ProxyNodeWebsockets.findBiDiEndpoint(ProxyNodeWebsockets.java:183)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.grid.node.ProxyNodeWebsockets.apply(ProxyNodeWebsockets.java:112)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.grid.node.ProxyNodeWebsockets.apply(ProxyNodeWebsockets.java:48)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.netty.server.WebSocketUpgradeHandler.handleHttpRequest(WebSocketUpgradeHandler.java:137)
2025-07-07 10:19:49.504 |   at org.openqa.selenium.netty.server.WebSocketUpgradeHandler.channelRead(WebSocketUpgradeHandler.java:100)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2025-07-07 10:19:49.504 |   at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
2025-07-07 10:19:49.504 |   at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.onHttpRequestChannelRead(WebSocketServerExtensionHandler.java:158)
2025-07-07 10:19:49.504 |   at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:82)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2025-07-07 10:19:49.504 |   at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
2025-07-07 10:19:49.504 |   at io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2025-07-07 10:19:49.504 |   at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
2025-07-07 10:19:49.504 |   at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
2025-07-07 10:19:49.504 |   at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
2025-07-07 10:19:49.504 |   at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
2025-07-07 10:19:49.504 |   at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
2025-07-07 10:19:49.504 |   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
2025-07-07 10:19:49.504 |   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
2025-07-07 10:19:49.504 |   at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
2025-07-07 10:19:49.504 |   at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)
2025-07-07 10:19:49.504 |   at io.netty.channel.nio.NioEvent...

	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)

	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)

	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)

	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)

	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)

	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)

	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)

	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)

	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)

	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:796)

	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:732)

	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:658)

	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)

	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)

	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)

	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)

	at java.base/java.lang.Thread.run(Thread.java:1583)

Caused by: java.net.http.HttpTimeoutException: request timed out

	at java.net.http/jdk.internal.net.http.ResponseTimerEvent.handle(ResponseTimerEvent.java:63)

	at java.net.http/jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1781)

	at java.net.http/jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:1379)

ℹ️ Last known working version: 4.33

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-needs-triagingA Selenium member will evaluate this soon!B-gridEverything grid and server relatedC-javaJava BindingsD-chromeI-defectSomething is not working as intendedI-regressionSomething was working but we "fixed" itOS-mac

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions