zalando/zalenium

Radom failure when run selenium tests in parallel with error info as 'cannot forward the request unexpected end of stream on Connection`

Open

#742 opened on Oct 11, 2018

View on GitHub
 (42 comments) (0 reactions) (0 assignees)Java (2,385 stars) (584 forks)batch import
help wanted

Description

Please make sure that you provide enough information for us to help you with this issue. Thank you!

Zalenium Image Version(s):
3.14.0d Docker Version:
18.06.1-ce If using docker-compose, version:
1.22.0

OS: MacOS High Sierra 10.13.6 16GB RAM

Docker Command to start Zalenium:
I use docker compose to start the service

 version: "3"
services:
    zalenium:
        image: "dosel/zalenium"
        container_name: zalenium
        hostname: zalenium
        tty: true
        volumes:
            - '/tmp/videos:/home/seluser/videos'
            - '/var/run/docker.sock:/var/run/docker.sock'
            - '/usr/local/bin/docker:/usr/local/bin/docker'
        ports:
            - 4444:4444
        command: >
          start --chromeContainers 4
                --firefoxContainers 0
                --maxDockerSeleniumContainers 6
                --maxTestSessions 200
                --screenWidth 1200 --screenHeight 900
                --timeZone "America/New_York"
                --videoRecordingEnabled false
                --sauceLabsEnabled false
                --browserStackEnabled false
                --testingBotEnabled false
                --startTunnel false
        environment:
          - HOST_UID
          - HOST_GID
          - SAUCE_USERNAME
          - SAUCE_ACCESS_KEY
          - BROWSER_STACK_USER
          - BROWSER_STACK_KEY
          - TESTINGBOT_KEY
          - TESTINGBOT_SECRET 

Expected Behavior -

The test should run without random error

Actual Behavior -

Now I am getting random test failure. It looks like the request to Selenium does not get through and yield a 500 error, this triggers the failure. I have 4 tests in parallel, and 50 test cases in total. There are about 4-5 tests will fail randomly due to this error. Here is the stacktrace of the error,

2018-10-11 13:01:31,197 root INFO Take screenshot and save as 308fe567.png
2018-10-11 13:01:31,199 selenium.webdriver.remote.remote_connection DEBUG GET http://192.168.240.2:4444/wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot {"sessionId": "af67b690272dd60a3c34f90d2467dc1d"}
2018-10-11 13:01:31,202 urllib3.connectionpool DEBUG Starting new HTTP connection (1): 192.168.240.2:4444
2018-10-11 13:01:39,841 urllib3.connectionpool DEBUG http://192.168.240.2:4444 "GET /wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot HTTP/1.1" 500 11436
2018-10-11 13:01:39,842 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2018-10-11 13:01:39,844 root INFO Take screenshot error
2018-10-11 13:01:39,846 selenium.webdriver.remote.remote_connection DEBUG GET http://192.168.240.2:4444/wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot {"sessionId": "af67b690272dd60a3c34f90d2467dc1d"}
2018-10-11 13:01:39,846 urllib3.connectionpool DEBUG Starting new HTTP connection (1): 192.168.240.2:4444
2018-10-11 13:01:43,108 urllib3.connectionpool DEBUG http://192.168.240.2:4444 "GET /wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot HTTP/1.1" 500 3261
2018-10-11 13:01:43,109 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2018-10-11 13:01:43,109 root ERROR An error ocurred:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/golem_framework-0.5.0-py3.6.egg/golem/actions.py", line 351, in verify_element_exist_by_text
    driver.get_screenshot_as_file(img_path)
  File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1032, in get_screenshot_as_file
    png = self.get_screenshot_as_png()
  File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png
    return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))
  File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64
    return self.execute(Command.SCREENSHOT)['value']
  File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.WebDriverException: Message: cannot forward the request unexpected end of stream on Connection{192.168.240.6:40002, proxy=DIRECT hostAddress=/192.168.240.6:40002 cipherSuite=none protocol=http/1.1}

Stacktrace:
    at org.openqa.grid.web.servlet.handler.RequestHandler.process (RequestHandler.java:143)
    at org.openqa.grid.web.servlet.DriverServlet.process (DriverServlet.java:86)
    at org.openqa.grid.web.servlet.DriverServlet.doGet (DriverServlet.java:64)
    at javax.servlet.http.HttpServlet.service (HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service (HttpServlet.java:790)
    at org.seleniumhq.jetty9.servlet.ServletHolder.handle (ServletHolder.java:860)
    at org.seleniumhq.jetty9.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1650)
    at io.prometheus.client.filter.MetricsFilter.doFilter (MetricsFilter.java:170)
    at org.seleniumhq.jetty9.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1637)
    at org.seleniumhq.jetty9.servlet.ServletHandler.doHandle (ServletHandler.java:533)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:143)
    at org.seleniumhq.jetty9.security.SecurityHandler.handle (SecurityHandler.java:548)
    at org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:190)
    at org.seleniumhq.jetty9.server.session.SessionHandler.doHandle (SessionHandler.java:1595)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:188)
    at org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle (ContextHandler.java:1253)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:168)
    at org.seleniumhq.jetty9.servlet.ServletHandler.doScope (ServletHandler.java:473)
    at org.seleniumhq.jetty9.server.session.SessionHandler.doScope (SessionHandler.java:1564)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:166)
    at org.seleniumhq.jetty9.server.handler.ContextHandler.doScope (ContextHandler.java:1155)
    at org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:141)
    at org.seleniumhq.jetty9.server.handler.StatisticsHandler.handle (StatisticsHandler.java:169)
    at org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
    at org.seleniumhq.jetty9.server.Server.handle (Server.java:530)
    at org.seleniumhq.jetty9.server.HttpChannel.handle (HttpChannel.java:347)
    at org.seleniumhq.jetty9.server.HttpConnection.onFillable (HttpConnection.java:256)
    at org.seleniumhq.jetty9.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:279)
    at org.seleniumhq.jetty9.io.FillInterest.fillable (FillInterest.java:102)
    at org.seleniumhq.jetty9.io.ChannelEndPoint$2.run (ChannelEndPoint.java:124)
    at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:247)
    at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.produce (EatWhatYouKill.java:140)
    at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:131)
    at org.seleniumhq.jetty9.util.thread.ReservedThreadExecutor$ReservedThread.run (ReservedThreadExecutor.java:382)
    at org.seleniumhq.jetty9.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:708)
    at org.seleniumhq.jetty9.util.thread.QueuedThreadPool$2.run (QueuedThreadPool.java:626)
    at java.lang.Thread.run (Thread.java:748)

Contributor guide