Open dhorbach opened 8 years ago
Need more details here
I might guess you want to add next hub dynamicaly. My initial idea here is to put all your potential hubs in quota, but start them only when it's required. When gridrouter try to talk to hub that is not started, it gets network error and instantly try another hub so there wouldn't be any delay, only error message in log
We can workaround quotas with AWS by using pool of DNS records or ENI - this is not a problem. But the issue is that test sessions don't wait inside Gridrouter for new Hub to appear and they return immediately with error (no hub available). It makes behavior of Gridrouter different comparing to Hub in this case.
The only solution i see is to implement some sort of queue inside Gridrouter similar to Hub. Logic - iterate over hubs and if nothing is available - wait for some interval before next try.
GET /grid/api/hub {"configuration":["newSessionRequestCount","slotCounts"]}
I see You are right about the reason we made gridrouter, and I understand now your case
Gridrouter doesn't have queue, we have plans to add it to gridrouter in the future. Actually we plan to add limits for concurrent sessions for quota and put all other requests to queue. Your solution here might be to be able to control dynamicaly that limit.
For now I see two posibilities:
Probably you have to implement both for the case when actualy available hub was reached last.
Hi
When scaling Selenium infrastructure in AWS we make decision based on number of new sessions count on Hub. This way we can have 1 static Hub and 0-X dynamic Node servers. Using Gridrouter - selection logic will return error in case of no any hubs are available. We are planning 1 server to host Gridrouter and 0-X dynamic servers hosting Hub+Nodes.
Is there any potential workaround for this?