Skip to content

Commit 4b429b0

Browse files
committed
[grid] Fixing bug where lock was being used twice
This was causing the task to fail consistently
1 parent 813de31 commit 4b429b0

1 file changed

Lines changed: 7 additions & 16 deletions

File tree

java/src/org/openqa/selenium/grid/sessionqueue/local/LocalNewSessionQueue.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.google.common.annotations.VisibleForTesting;
88
import com.google.common.collect.ImmutableMap;
9+
import com.google.common.collect.ImmutableSet;
910

1011
import org.openqa.selenium.Capabilities;
1112
import org.openqa.selenium.SessionNotCreatedException;
@@ -159,19 +160,11 @@ private void timeoutSessions() {
159160
ids = requests.entrySet().stream()
160161
.filter(entry -> isTimedOut(now, entry.getValue()))
161162
.map(Map.Entry::getKey)
162-
.collect(Collectors.toSet());
163+
.collect(ImmutableSet.toImmutableSet());
163164
} finally {
164165
readLock.unlock();
165166
}
166-
167-
Lock writeLock = lock.writeLock();
168-
try {
169-
for (RequestId id : ids) {
170-
failDueToTimeout(id);
171-
}
172-
} finally {
173-
writeLock.unlock();
174-
}
167+
ids.forEach(this::failDueToTimeout);
175168
}
176169

177170
private boolean isTimedOut(Instant now, Data data) {
@@ -184,7 +177,7 @@ public HttpResponse addToQueue(SessionRequest request) {
184177
Require.nonNull("Request id", request.getRequestId());
185178

186179
TraceContext context = TraceSessionRequest.extract(tracer, request);
187-
try (Span span = context.createSpan("sessionqueue.add_to_queue")) {
180+
try (Span ignored = context.createSpan("sessionqueue.add_to_queue")) {
188181
contexts.put(request.getRequestId(), context);
189182

190183
Data data = injectIntoQueue(request);
@@ -257,7 +250,7 @@ public boolean retryAddToQueue(SessionRequest request) {
257250

258251
boolean added;
259252
TraceContext context = contexts.getOrDefault(request.getRequestId(), tracer.getCurrentContext());
260-
try (Span span = context.createSpan("sessionqueue.retry")) {
253+
try (Span ignored = context.createSpan("sessionqueue.retry")) {
261254
Lock writeLock = lock.writeLock();
262255
writeLock.lock();
263256
try {
@@ -319,9 +312,7 @@ public Optional<SessionRequest> getNextAvailable(Set<Capabilities> stereotypes)
319312
.filter(req -> req.getDesiredCapabilities().stream().anyMatch(matchesStereotype))
320313
.findFirst();
321314

322-
maybeRequest.ifPresent(req -> {
323-
this.remove(req.getRequestId());
324-
});
315+
maybeRequest.ifPresent(req -> this.remove(req.getRequestId()));
325316

326317
return maybeRequest;
327318
} finally {
@@ -334,7 +325,7 @@ public void complete(RequestId reqId, Either<SessionNotCreatedException, CreateS
334325
Require.nonNull("New session request", reqId);
335326
Require.nonNull("Result", result);
336327
TraceContext context = contexts.getOrDefault(reqId, tracer.getCurrentContext());
337-
try (Span span = context.createSpan("sessionqueue.completed")) {
328+
try (Span ignored = context.createSpan("sessionqueue.completed")) {
338329
Lock readLock = lock.readLock();
339330
readLock.lock();
340331
Data data;

0 commit comments

Comments
 (0)