qa-dev / jsonwire-grid

High-performance scalable implementation of Selenium Grid
MIT License
73 stars 10 forks source link

Invalid session id #38

Closed rsimkin closed 4 years ago

rsimkin commented 5 years ago

Здравствуйте!

Используем WebDriverGrid в k8s кластере. Конфиг запуска:

{
  "logger": {
    "level": "debug"
  },
  "db": {
    "implementation": "local"
  },
  "grid": {
    "client_type": "selenium",
    "port": 4444,
    "strategy_list": [
      {
        "type": "kubernetes",
        "limit": 20,
        "params": {"pod_creation_timeout": "2m"},
        "node_list": [
          {
            "params": {
              "image":"selenium/standalone-chrome:3.141.59-gold",
              "port": "4444"
            },
            "capabilities_list": [
              {
                "browserName": "chrome",
                "browserVersion": 73
              }
            ]
          }
        ]
      }
    ],
    "busy_node_duration": "15m",
    "reserved_node_duration": "5m"
  }
}

Столкнулись с проблемой, что при запуске тестов в 5 потоков случайным образом один или несколько тестов отваливаются с ошибкой Invalid session id.

В логах ничего необычного, штатное общение с WebDriver

time="2019-08-12T11:02:13Z" level=info msg="200 GET /wd/hub/session/1cca6fc9cea39f0b847cc69b260d030b/element/0.4291076091421373-84/attribute/href (172.16.51.90:64930) 0.008s" 
time="2019-08-12T11:02:13Z" level=info msg="200 GET /wd/hub/session/d8c8e2ebccf3f36448cff0a10da8d8e2/element/0.7319198903879018-123/displayed (172.16.51.90:64899) 0.009s" 
time="2019-08-12T11:02:13Z" level=info msg="200 GET /wd/hub/session/1cca6fc9cea39f0b847cc69b260d030b/element/0.4291076091421373-85/attribute/href (172.16.51.90:64930) 0.011s" 
time="2019-08-12T11:02:13Z" level=info msg="200 GET /wd/hub/session/d8c8e2ebccf3f36448cff0a10da8d8e2/element/0.7319198903879018-123/text (172.16.51.90:64899) 0.019s" 

Можете, пожалуйста, подсказать, в какую сторону смотреть?

makhov commented 5 years ago

Привет!

  1. Пришлите, пожалуйста, полный текст ошибки.
  2. Сколько инстансов jsonwire-grid запущено (ReplicaCount в терминах k8s)
  3. Как часто появляются ошибки?
rsimkin commented 5 years ago

Пришлите, пожалуйста, полный текст ошибки.

С версией образа для пода selenium/standalone-chrome:3.4.0 ошибки стала более информативными: chrome not reachable (Session info: chrome=60.0.3112.113) (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-149-generic x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 7 milliseconds Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' System info: host: 'wd-node-b3d83eee-1e8c-4d22-853a-4f635cdc5034', ip: '10.233.90.128', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-149-generic', java.version: '1.8.0_131' Driver info: org.openqa.selenium.chrome.ChromeDriver Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8), userDataDir=/tmp/.org.chromium.Chromium.bXRx27}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.113, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}] Session ID: 98c79229f465aeca84dcce5cf8948af8

И еще одна no such session (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-149-generic x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 2 milliseconds Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' System info: host: 'wd-node-861276fa-f2fd-47fb-b1d4-94ab7bd49d2e', ip: '10.233.90.130', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-149-generic', java.version: '1.8.0_131' Driver info: org.openqa.selenium.chrome.ChromeDriver Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8), userDataDir=/tmp/.org.chromium.Chromium.0sYZhy}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.113, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}] Session ID: 43eaf9e3a4ac27dae9da170d360e173a

Сколько инстансов jsonwire-grid запущено (ReplicaCount в терминах k8s)

Реплика одна.

Как часто появляются ошибки?

Каждый раз. Запускаем 36 тестов в 5 потоков. Падает на разных тестах.

rsimkin commented 5 years ago

Исследование показало, что ошибка в том, что поды с selenium'ом иногда падают сразу при старте:

07:42:47.915 INFO [ProtocolHandshake.createSession] - Detected dialect: OSS
07:42:48.418 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 52abf5d143ce07791ca3c393d567c2d6 (org.openqa.selenium.chrome.ChromeDriverService)
[1565941381.366][SEVERE]: Unable to receive message from renderer
[1565941381.460][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.481][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.681][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.695][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.807][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.821][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.920][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941381.929][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941382.552][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools
[1565941382.570][WARNING]: Unable to evaluate script: disconnected: not connected to DevTools

Можете подсказать, какие вы используете образы для подов?

rsimkin commented 5 years ago

Вероятно, дело в том, что в под не пробрасывается /dev/shm (как это рекомендуется тут: https://github.com/SeleniumHQ/docker-selenium)

When executing docker run for an image with Chrome or Firefox please either mount -v /dev/shm:/dev/shm or use the flag --shm-size=2g to use the host's shared memory.

В нашем решении данный способ помог, прикрепляю PR на случай, если у кого-то будет такая проблема.

andrskom commented 4 years ago

Спасибо, за работу и просим прощение за медленную реакцию. Очень интересная особенность работы. Вот тут пишут что проблема решается уже https://github.com/kubernetes/kubernetes/issues/28272 Но ваше решение абсолютно легитимно, пока не появится возможности явно указывать размер Shared memory. Спасибо за PR!