Skip to content

Commit 27a9270

Browse files
committed
Add test and comment
1 parent b93a36f commit 27a9270

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

core/src/main/java/io/netty/loom/EventLoopScheduler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public record SchedulerContext(long vThreadId, SchedulerRef scheduler) {
3838
*/
3939
@Override
4040
public SchedulerRef scheduler() {
41+
// TODO consider returning EMPTY_SCHEDULER_REF instead of null
4142
return (Thread.currentThread().threadId() == vThreadId) ? scheduler : null;
4243
}
4344
}

core/src/test/java/io/netty/loom/VirtualMultithreadIoEventLoopGroupTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,24 @@ void schedulerIsInheritedByForkedVTFromTheRightFactory() throws InterruptedExcep
349349
}
350350
}
351351

352+
@Test
353+
void schedulerIsNotInheritedByForkedVT() throws InterruptedException, ExecutionException {
354+
try (var group = new VirtualMultithreadIoEventLoopGroup(1, LocalIoHandler.newFactory())) {
355+
final var vThreadFactory = group.submit(group::vThreadFactory).get();
356+
var schedulerRef = new CompletableFuture<EventLoopScheduler.SchedulerRef>();
357+
vThreadFactory.newThread(() -> {
358+
try (var scope = StructuredTaskScope.open(allSuccessfulOrThrow())) {
359+
var task = scope.fork(() -> EventLoopScheduler.currentThreadSchedulerContext().scheduler());
360+
scope.join();
361+
schedulerRef.complete(task.get());
362+
} catch (InterruptedException e) {
363+
schedulerRef.completeExceptionally(e);
364+
}
365+
}).start();
366+
assertNull(schedulerRef.get());
367+
}
368+
}
369+
352370
@Test
353371
void eventLoopSchedulerCanMakeProgressIfTheEventLoopIsBlocked() throws BrokenBarrierException, InterruptedException, TimeoutException {
354372
var group = new VirtualMultithreadIoEventLoopGroup(1, NioIoHandler.newFactory());

0 commit comments

Comments
 (0)