Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ChromeDriver does not close AsyncHttpClient threads #9224

Closed
ajurge opened this issue Mar 1, 2021 · 4 comments
Closed

ChromeDriver does not close AsyncHttpClient threads #9224

ajurge opened this issue Mar 1, 2021 · 4 comments
Labels

Comments

@ajurge
Copy link

ajurge commented Mar 1, 2021

🐛 Bug Report

Chrome driver does not close AsyncHttpClient threads and after some time produces

java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached

Build info: version: '4.0.0-beta-1', revision: '9c03156c2b'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-128-generic', java.version: '11.0.10'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {desiredCapabilities=Capabilities {--whitelisted-ips: , browserName: chrome, ensureCleanSession: true}}]
Capabilities {}
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:252)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:174)
	at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:82)

JConsole Threads (>200 Live Threads after 1 hour, scheduled service execution fixed period 30s):

JName: AsyncHttpClient-234-1
State: RUNNABLE
Total blocked: 0  Total waited: 0
Stack trace: 
java.base@11.0.2/sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
java.base@11.0.2/sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:339)
java.base@11.0.2/sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:167)
java.base@11.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
   - locked io.netty.channel.nio.SelectedSelectionKeySet@6d364864
   - locked sun.nio.ch.WindowsSelectorImpl@48886843
java.base@11.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:141)
app//io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:68)
app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:810)
app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:457)
app//io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
java.base@11.0.2/java.lang.Thread.run(Thread.java:834)

Similar issues:

  1. Server does not stop http client threads for closed sessions #9153
  2. ChromeDriver does not fully quit when using Selenium for java of 4+ version #8028
  3. RemoteDriver.Quit() doesn't finish cromedriver.exe process via selenium-server-4.0.0-alpha-X.jar #7989

To Reproduce

This is just a possible way to reproduce it (we have a very similar setup in our scheduled service), i have not tested it:

seleniumVersion = '4.0.0-beta-1'
nettyVersion = '4.1.59.Final'

for (int i = 0; i < 6000; i++) {
   var driverContext = new EventFiringWebDriver(new ChromeDriver());
   driverContext.close();
   driverContext.quit();
}

Expected behavior

This worked with:
seleniumVersion = '4.0.0-alpha-7'
nettyVersion = '4.1.59.Final'

Environment

OS: Linux, Windows 10
Browser: Chrome
Browser version: 88.0.4324.190
Browser Driver version: ChromeDriver 88.0.4324.96
Language Bindings version: Java 11.0.10
Selenium Grid version (if applicable): 4.0.0-beta-1
Netty version (if applicable): 4.1.59.Final

@ghost ghost added the needs-triaging label Mar 1, 2021
@diemol
Copy link
Member

diemol commented Mar 2, 2021

Thank you for reporting this, seems that creating an http client per connection is not working well. This PR is fixing that #9227

@diemol
Copy link
Member

diemol commented Mar 2, 2021

PR has been merged and this will be available in beta-2.

@diemol diemol closed this as completed Mar 2, 2021
@ajurge
Copy link
Author

ajurge commented Mar 2, 2021

Thanks for fixing it so fast. Is it already known when beta-2 will be released?

@diemol
Copy link
Member

diemol commented Mar 3, 2021

We will know better when a release will happen by the end of next week, my wild guess is end of March.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants