Skip to content

Commit 3a1ce09

Browse files
committed
Flaky build due to a possible race condition #1449
Signed-off-by: christian.lutnik <[email protected]>
1 parent 0738f9f commit 3a1ce09

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

src/main/java/dev/openfeature/sdk/Awaitable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ private Awaitable(boolean isDone) {
1919
* {@link Awaitable#wakeup()} has been called before the current thread invokes this method, it will return
2020
* immediately.
2121
*/
22+
@SuppressWarnings("java:S2142")
2223
public void await() {
2324
if (isDone) {
2425
return;
@@ -28,7 +29,7 @@ public void await() {
2829
try {
2930
this.wait();
3031
} catch (InterruptedException ignored) {
31-
Thread.currentThread().interrupt();
32+
// ignored, do not propagate the interrupted state
3233
}
3334
}
3435
}

src/main/java/dev/openfeature/sdk/EventProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ public Awaitable emit(final ProviderEvent event, final ProviderEventDetails deta
8686

8787
final var awaitable = new Awaitable();
8888

89+
// These calls need to be executed on a different thread to prevent deadlocks when the provider initialization
90+
// relies on a ready event to be emitted
8991
emitterExecutor.submit(() -> {
9092
try (var ignored = OpenFeatureAPI.lock.readLockAutoCloseable()) {
9193
if (localEventProviderListener != null) {

src/test/java/dev/openfeature/sdk/AwaitableTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import org.junit.jupiter.api.Test;
1111
import org.junit.jupiter.api.Timeout;
1212

13-
@Timeout(2)
13+
@Timeout(value=5, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
1414
class AwaitableTest {
1515
@Test
1616
void waitingForFinishedIsANoOp() {

0 commit comments

Comments
 (0)