From c51a26d40e7f2c6d4f2f826857e46f83fb345e2a Mon Sep 17 00:00:00 2001 From: Radim Vansa Date: Fri, 27 Sep 2019 13:17:21 +0200 Subject: [PATCH] #4241 100% CPU in epoll_wait --- .../runtime/graal/NettySubstitutions.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java b/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java index 3056bc26ab648c..6712e73798b41e 100644 --- a/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java +++ b/extensions/netty/runtime/src/main/java/io/quarkus/netty/runtime/graal/NettySubstitutions.java @@ -284,6 +284,37 @@ private static Queue newTaskQueue0(int maxPendingTasks) { } } +final class Holder_io_netty_util_concurrent_ScheduledFutureTask { + private static long START_TIME = Long.MIN_VALUE; + + static long startTime() { + if (START_TIME == Long.MIN_VALUE) { + START_TIME = System.nanoTime(); + } + return START_TIME; + } +} + +@TargetClass(className = "io.netty.util.concurrent.ScheduledFutureTask") +final class Target_io_netty_util_concurrent_ScheduledFutureTask { + + @Substitute + static long nanoTime() { + return System.nanoTime() - Holder_io_netty_util_concurrent_ScheduledFutureTask.startTime(); + } + + @Alias + public long deadlineNanos() { + return 0; + } + + @Substitute + public long delayNanos(long currentTimeNanos) { + return Math.max(0, + deadlineNanos() - (currentTimeNanos - Holder_io_netty_util_concurrent_ScheduledFutureTask.startTime())); + } +} + class NettySubstitutions { }