Skip to content

Commit 4cdc446

Browse files
committed
Migrate ThreadLocal to ScopedValue usage
1 parent 76b898c commit 4cdc446

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

lib/trino-metastore/src/main/java/io/trino/metastore/cache/ReentrantBoundedExecutor.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.concurrent.Executor;
1919

20+
import static java.lang.ScopedValue.where;
2021
import static java.util.Objects.requireNonNull;
2122

2223
/**
@@ -26,7 +27,7 @@
2627
public class ReentrantBoundedExecutor
2728
implements Executor
2829
{
29-
private final ThreadLocal<Boolean> executorThreadMarkers = ThreadLocal.withInitial(() -> false);
30+
private final ScopedValue<Void> executorThreadMarkers = ScopedValue.newInstance();
3031
private final Executor boundedExecutor;
3132
private final Executor coreExecutor;
3233

@@ -39,20 +40,13 @@ public ReentrantBoundedExecutor(Executor coreExecutor, int maxThreads)
3940
@Override
4041
public void execute(Runnable task)
4142
{
42-
if (executorThreadMarkers.get()) {
43+
// We are just interested whether this is reentrant execution
44+
if (executorThreadMarkers.isBound()) {
4345
// schedule recursive task immediately as it's being scheduled from currently executed task
4446
coreExecutor.execute(task);
4547
return;
4648
}
4749

48-
boundedExecutor.execute(() -> {
49-
executorThreadMarkers.set(true);
50-
try {
51-
task.run();
52-
}
53-
finally {
54-
executorThreadMarkers.remove();
55-
}
56-
});
50+
boundedExecutor.execute(() -> where(executorThreadMarkers, null).run(task));
5751
}
5852
}

0 commit comments

Comments
 (0)