2121import static org .openqa .selenium .remote .RemoteTags .SESSION_ID ;
2222import static org .openqa .selenium .remote .RemoteTags .SESSION_ID_EVENT ;
2323import static org .openqa .selenium .remote .http .Contents .asJson ;
24- import static org .openqa .selenium .remote .http .Contents .reader ;
2524import static org .openqa .selenium .remote .http .HttpMethod .GET ;
2625import static org .openqa .selenium .remote .tracing .Tags .EXCEPTION ;
2726import static org .openqa .selenium .remote .tracing .Tags .HTTP_REQUEST ;
2827import static org .openqa .selenium .remote .tracing .Tags .HTTP_REQUEST_EVENT ;
2928import static org .openqa .selenium .remote .tracing .Tags .HTTP_RESPONSE ;
3029
3130import java .io .Closeable ;
32- import java .io .Reader ;
3331import java .net .URI ;
3432import java .time .Duration ;
3533import java .time .Instant ;
5048import org .openqa .selenium .grid .data .NodeStatus ;
5149import org .openqa .selenium .grid .sessionmap .SessionMap ;
5250import org .openqa .selenium .grid .web .ReverseProxyHandler ;
51+ import org .openqa .selenium .grid .web .Values ;
5352import org .openqa .selenium .internal .Require ;
54- import org .openqa .selenium .json .Json ;
55- import org .openqa .selenium .json .JsonInput ;
5653import org .openqa .selenium .remote .ErrorCodec ;
5754import org .openqa .selenium .remote .SessionId ;
5855import org .openqa .selenium .remote .http .ClientConfig ;
@@ -237,7 +234,7 @@ private Callable<UsageCountingReverseProxyHandler> loadSessionId(
237234 return entry ;
238235 }
239236
240- ClientConfig config = fetchNodeSessionTimeout (sessionUri );
237+ ClientConfig config = fetchNodeSessionTimeout (sessionUri ). withRetries () ;
241238 HttpClient httpClient = httpClientFactory .createClient (config );
242239
243240 return new CacheEntry (httpClient , 1 );
@@ -254,37 +251,18 @@ private Callable<UsageCountingReverseProxyHandler> loadSessionId(
254251 }
255252
256253 private ClientConfig fetchNodeSessionTimeout (URI uri ) {
257- ClientConfig config = ClientConfig .defaultConfig ().baseUri (uri ). withRetries () ;
254+ ClientConfig config = ClientConfig .defaultConfig ().baseUri (uri );
258255 Duration sessionTimeout = config .readTimeout ();
259256 try (HttpClient httpClient = httpClientFactory .createClient (config )) {
260- HttpRequest statusRequest = new HttpRequest (GET , "/status" );
257+ HttpRequest statusRequest = new HttpRequest (GET , "/se/grid/node/ status" );
261258 HttpResponse res = httpClient .execute (statusRequest );
262- Reader reader = reader (res );
263- Json JSON = new Json ();
264- JsonInput in = JSON .newInput (reader );
265- in .beginObject ();
266- // Skip everything until we find "value"
267- while (in .hasNext ()) {
268- if ("value" .equals (in .nextName ())) {
269- in .beginObject ();
270- while (in .hasNext ()) {
271- if ("node" .equals (in .nextName ())) {
272- NodeStatus nodeStatus = in .read (NodeStatus .class );
273- sessionTimeout = nodeStatus .getSessionTimeout ();
274- LOG .fine (
275- "Fetched session timeout from node status (read timeout: "
276- + sessionTimeout .toSeconds ()
277- + " seconds) for "
278- + uri );
279- } else {
280- in .skipValue ();
281- }
282- }
283- in .endObject ();
284- } else {
285- in .skipValue ();
286- }
287- }
259+ NodeStatus nodeStatus = Values .get (res , NodeStatus .class );
260+ sessionTimeout = nodeStatus .getSessionTimeout ();
261+ LOG .fine (
262+ "Fetched session timeout from node status (read timeout: "
263+ + sessionTimeout .toSeconds ()
264+ + " seconds) for "
265+ + uri );
288266 } catch (Exception e ) {
289267 LOG .fine (
290268 "Use default from ClientConfig (read timeout: "
0 commit comments