Skip to content

Commit

Permalink
Merge pull request #4242 from rvansa/4241_cpu_spinning_epoll_wait
Browse files Browse the repository at this point in the history
#4241 100% CPU in epoll_wait
  • Loading branch information
kenfinnigan authored Sep 30, 2019
2 parents 7cbdd97 + a80f970 commit e24eda3
Show file tree
Hide file tree
Showing 2 changed files with 35 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 @@ -162,4 +163,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 @@ -12,6 +12,7 @@
import javax.net.ssl.TrustManagerFactory;

import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.Delete;
import com.oracle.svm.core.annotate.RecomputeFieldValue;
import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
Expand Down Expand Up @@ -333,6 +334,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 e24eda3

Please sign in to comment.