Skip to content

Commit a879ab9

Browse files
Merge branch 'main' into sideshowcoder/remove-fork-non-reuse-add-mockito-javaagent
2 parents bcaa269 + 4e99dc5 commit a879ab9

18 files changed

+286
-26
lines changed

.github/workflows/lint-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ jobs:
1818
name: Validate PR title
1919
runs-on: ubuntu-latest
2020
steps:
21-
- uses: amannn/action-semantic-pull-request@e49f57ce06c1747542fce2243c7a98682384bc0e
21+
- uses: amannn/action-semantic-pull-request@069817c298f23fab00a8f29a2e556a5eac0f6390
2222
env:
2323
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/merge.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ jobs:
2121
runs-on: ubuntu-latest
2222

2323
steps:
24-
- uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
24+
- uses: actions/checkout@71cf2267d89c5cb81562390fa70a37fa40b1305e
2525
with:
2626
fetch-depth: 0
2727
submodules: recursive
2828
- name: Set up JDK 17
29-
uses: actions/setup-java@de5a937a1dc73fbc1a67d7d1aa4bebc1082f3190
29+
uses: actions/setup-java@6ba5449b7dcda52941806a19f0cf626b6420191e
3030
with:
3131
java-version: '17'
3232
distribution: 'temurin'

.github/workflows/pullrequest.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@ jobs:
1919
runs-on: ${{ matrix.os}}
2020
steps:
2121
- name: Check out the code
22-
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
22+
uses: actions/checkout@71cf2267d89c5cb81562390fa70a37fa40b1305e
2323
with:
2424
fetch-depth: 0
2525
submodules: recursive
2626

2727
- name: Set up JDK ${{ matrix.build.java }}
28-
uses: actions/setup-java@de5a937a1dc73fbc1a67d7d1aa4bebc1082f3190
28+
uses: actions/setup-java@6ba5449b7dcda52941806a19f0cf626b6420191e
2929
with:
3030
java-version: ${{ matrix.build.java }}
3131
distribution: 'temurin'
3232
cache: maven
3333

3434
- name: Initialize CodeQL
35-
uses: github/codeql-action/init@8d77149e0c9e2199ac9cfc90c9e15116f5c69c48
35+
uses: github/codeql-action/init@ba454b8ab46733eb6145342877cd148270bb77ab
3636
with:
3737
languages: java
3838

@@ -58,4 +58,4 @@ jobs:
5858
verbose: true # optional (default = false)
5959

6060
- name: Perform CodeQL Analysis
61-
uses: github/codeql-action/analyze@8d77149e0c9e2199ac9cfc90c9e15116f5c69c48
61+
uses: github/codeql-action/analyze@ba454b8ab46733eb6145342877cd148270bb77ab

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ jobs:
3737

3838
steps:
3939
- name: Checkout Repository
40-
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
40+
uses: actions/checkout@71cf2267d89c5cb81562390fa70a37fa40b1305e
4141
with:
4242
fetch-depth: 0
4343
submodules: recursive
4444

4545
- name: Set up JDK 17
46-
uses: actions/setup-java@de5a937a1dc73fbc1a67d7d1aa4bebc1082f3190
46+
uses: actions/setup-java@6ba5449b7dcda52941806a19f0cf626b6420191e
4747
with:
4848
java-version: '17'
4949
distribution: 'temurin'

.github/workflows/static-code-scanning.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ jobs:
2929

3030
steps:
3131
- name: Checkout repository
32-
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
32+
uses: actions/checkout@71cf2267d89c5cb81562390fa70a37fa40b1305e
3333

3434
# Initializes the CodeQL tools for scanning.
3535
- name: Initialize CodeQL
36-
uses: github/codeql-action/init@8d77149e0c9e2199ac9cfc90c9e15116f5c69c48
36+
uses: github/codeql-action/init@ba454b8ab46733eb6145342877cd148270bb77ab
3737
with:
3838
languages: java
3939

4040
- name: Autobuild
41-
uses: github/codeql-action/autobuild@8d77149e0c9e2199ac9cfc90c9e15116f5c69c48
41+
uses: github/codeql-action/autobuild@ba454b8ab46733eb6145342877cd148270bb77ab
4242

4343
- name: Perform CodeQL Analysis
44-
uses: github/codeql-action/analyze@8d77149e0c9e2199ac9cfc90c9e15116f5c69c48
44+
uses: github/codeql-action/analyze@ba454b8ab46733eb6145342877cd148270bb77ab

pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<maven.compiler.source>11</maven.compiler.source>
1414
<maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
1515
<org.mockito.version>5.20.0</org.mockito.version>
16-
<com.vmlens.version>1.2.21</com.vmlens.version>
16+
<com.vmlens.version>1.2.22</com.vmlens.version>
1717
<!-- exclusion expression for e2e tests -->
1818
<testExclusions>**/e2e/*.java</testExclusions>
1919
<module-name>${project.groupId}.${project.artifactId}</module-name>
@@ -214,22 +214,22 @@
214214
<dependency>
215215
<groupId>net.bytebuddy</groupId>
216216
<artifactId>byte-buddy</artifactId>
217-
<version>1.17.8</version>
217+
<version>1.18.1</version>
218218
<scope>test</scope>
219219
</dependency>
220220

221221
<dependency>
222222
<groupId>net.bytebuddy</groupId>
223223
<artifactId>byte-buddy-agent</artifactId>
224-
<version>1.17.8</version>
224+
<version>1.18.0</version>
225225
<scope>test</scope>
226226
</dependency>
227227
<!-- End mockito workaround-->
228228

229229
<dependency>
230230
<groupId>com.fasterxml.jackson</groupId>
231231
<artifactId>jackson-bom</artifactId>
232-
<version>2.20.0</version> <!-- Use the desired version -->
232+
<version>2.20.1</version> <!-- Use the desired version -->
233233
<type>pom</type>
234234
<scope>import</scope>
235235
</dependency>
@@ -245,7 +245,7 @@
245245
<dependency>
246246
<groupId>org.junit</groupId>
247247
<artifactId>junit-bom</artifactId>
248-
<version>6.0.0</version>
248+
<version>6.0.1</version>
249249
<type>pom</type>
250250
<scope>import</scope>
251251
</dependency>
@@ -508,7 +508,7 @@
508508
<dependency>
509509
<groupId>com.puppycrawl.tools</groupId>
510510
<artifactId>checkstyle</artifactId>
511-
<version>11.1.0</version>
511+
<version>12.1.2</version>
512512
</dependency>
513513
</dependencies>
514514
<executions>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.openfeature.sdk;
22

3+
import dev.openfeature.sdk.internal.ConfigurableThreadFactory;
34
import dev.openfeature.sdk.internal.TriConsumer;
45
import java.util.concurrent.ExecutorService;
56
import java.util.concurrent.Executors;
@@ -21,7 +22,8 @@
2122
@Slf4j
2223
public abstract class EventProvider implements FeatureProvider {
2324
private EventProviderListener eventProviderListener;
24-
private final ExecutorService emitterExecutor = Executors.newCachedThreadPool();
25+
private final ExecutorService emitterExecutor =
26+
Executors.newCachedThreadPool(new ConfigurableThreadFactory("openfeature-event-emitter-thread"));
2527

2628
void setEventProviderListener(EventProviderListener eventProviderListener) {
2729
this.eventProviderListener = eventProviderListener;

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.openfeature.sdk;
22

3+
import dev.openfeature.sdk.internal.ConfigurableThreadFactory;
34
import java.util.Collection;
45
import java.util.Map;
56
import java.util.Optional;
@@ -26,7 +27,8 @@ class EventSupport {
2627
private static final String DEFAULT_CLIENT_UUID = UUID.randomUUID().toString();
2728
private final Map<String, HandlerStore> handlerStores = new ConcurrentHashMap<>();
2829
private final HandlerStore globalHandlerStore = new HandlerStore();
29-
private final ExecutorService taskExecutor = Executors.newCachedThreadPool();
30+
private final ExecutorService taskExecutor =
31+
Executors.newCachedThreadPool(new ConfigurableThreadFactory("openfeature-event-handler-thread"));
3032

3133
/**
3234
* Run all the event handlers associated with this domain.

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dev.openfeature.sdk.exceptions.GeneralError;
44
import dev.openfeature.sdk.exceptions.OpenFeatureError;
5+
import dev.openfeature.sdk.internal.ConfigurableThreadFactory;
56
import java.util.List;
67
import java.util.Map;
78
import java.util.Optional;
@@ -22,11 +23,8 @@ class ProviderRepository {
2223
private final Map<String, FeatureProviderStateManager> stateManagers = new ConcurrentHashMap<>();
2324
private final AtomicReference<FeatureProviderStateManager> defaultStateManger =
2425
new AtomicReference<>(new FeatureProviderStateManager(new NoOpProvider()));
25-
private final ExecutorService taskExecutor = Executors.newCachedThreadPool(runnable -> {
26-
final Thread thread = new Thread(runnable);
27-
thread.setDaemon(true);
28-
return thread;
29-
});
26+
private final ExecutorService taskExecutor =
27+
Executors.newCachedThreadPool(new ConfigurableThreadFactory("openfeature-provider-thread", true));
3028
private final Object registerStateManagerLock = new Object();
3129
private final OpenFeatureAPI openFeatureAPI;
3230

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package dev.openfeature.sdk.internal;
2+
3+
import java.util.concurrent.ThreadFactory;
4+
import java.util.concurrent.atomic.AtomicInteger;
5+
6+
/**
7+
* A configurable thread factory for internal use in the SDK.
8+
* Allows daemon or non-daemon threads to be created with a custom name prefix.
9+
*/
10+
public final class ConfigurableThreadFactory implements ThreadFactory {
11+
12+
private final AtomicInteger counter = new AtomicInteger();
13+
private final String namePrefix;
14+
private final boolean daemon;
15+
16+
/**
17+
* {@link ConfigurableThreadFactory}'s constructor.
18+
*
19+
* @param namePrefix Prefix used for setting the new thread's name.
20+
*/
21+
public ConfigurableThreadFactory(String namePrefix) {
22+
this(namePrefix, false);
23+
}
24+
25+
/**
26+
* {@link ConfigurableThreadFactory}'s constructor.
27+
*
28+
* @param namePrefix Prefix used for setting the new thread's name.
29+
* @param daemon Whether daemon or non-daemon threads will be created.
30+
*/
31+
public ConfigurableThreadFactory(String namePrefix, boolean daemon) {
32+
this.namePrefix = namePrefix;
33+
this.daemon = daemon;
34+
}
35+
36+
@Override
37+
public Thread newThread(Runnable runnable) {
38+
final Thread thread = new Thread(runnable);
39+
thread.setDaemon(daemon);
40+
thread.setName(namePrefix + "-" + counter.incrementAndGet());
41+
return thread;
42+
}
43+
}

0 commit comments

Comments
 (0)