Skip to content

Commit

Permalink
Fix 100% CPU in epoll_wait
Browse files Browse the repository at this point in the history
Fixes #4241
  • Loading branch information
rvansa authored and gsmet committed Oct 1, 2019
1 parent 1cc7bad commit 3b3933a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import io.quarkus.deployment.builditem.JniBuildItem;
import io.quarkus.deployment.builditem.SystemPropertyBuildItem;
import io.quarkus.deployment.builditem.substrate.ReflectiveClassBuildItem;
import io.quarkus.deployment.builditem.substrate.RuntimeReinitializedClassBuildItem;
import io.quarkus.deployment.builditem.substrate.SubstrateConfigBuildItem;
import io.quarkus.deployment.builditem.substrate.SubstrateSystemPropertyBuildItem;
import io.quarkus.netty.BossEventLoopGroup;
Expand Down Expand Up @@ -165,4 +166,10 @@ void createExecutors(BuildProducer<RuntimeBeanBuildItem> runtimeBeanBuildItemBui
.build());
}

@BuildStep
public RuntimeReinitializedClassBuildItem reinitScheduledFutureTask() {
return new RuntimeReinitializedClassBuildItem(
"io.quarkus.netty.runtime.graal.Holder_io_netty_util_concurrent_ScheduledFutureTask");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,33 @@ final class Target_io_netty_util_AbstractReferenceCounted {
private static long REFCNT_FIELD_OFFSET;
}

// This class is runtime-initialized by NettyProcessor
final class Holder_io_netty_util_concurrent_ScheduledFutureTask {
static final long START_TIME = System.nanoTime();
}

@TargetClass(className = "io.netty.util.concurrent.ScheduledFutureTask")
final class Target_io_netty_util_concurrent_ScheduledFutureTask {
@Delete
public static long START_TIME = 0;

@Substitute
static long nanoTime() {
return System.nanoTime() - Holder_io_netty_util_concurrent_ScheduledFutureTask.START_TIME;
}

@Alias
public long deadlineNanos() {
return 0;
}

@Substitute
public long delayNanos(long currentTimeNanos) {
return Math.max(0,
deadlineNanos() - (currentTimeNanos - Holder_io_netty_util_concurrent_ScheduledFutureTask.START_TIME));
}
}

class NettySubstitutions {

}

0 comments on commit 3b3933a

Please sign in to comment.