Skip to content

Commit

Permalink
RESTEasyReactive: workaround for Netty upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
FroMage committed Apr 13, 2021
1 parent 4aadce3 commit 6386fea
Showing 1 changed file with 22 additions and 0 deletions.
Expand Up @@ -90,6 +90,7 @@
import io.quarkus.deployment.recording.RecorderContext;
import io.quarkus.gizmo.ClassCreator;
import io.quarkus.gizmo.MethodCreator;
import io.quarkus.netty.deployment.MinNettyAllocatorMaxOrderBuildItem;
import io.quarkus.resteasy.reactive.common.deployment.ApplicationResultBuildItem;
import io.quarkus.resteasy.reactive.common.deployment.FactoryUtils;
import io.quarkus.resteasy.reactive.common.deployment.QuarkusFactoryCreator;
Expand Down Expand Up @@ -147,6 +148,27 @@ CapabilityBuildItem capability() {
return new CapabilityBuildItem(Capability.RESTEASY_REACTIVE);
}

// This is required to get rid of netty exceptions when allocating direct buffers in tests running
// in IDEs, which have assertions enabled, otherwise we run into:
/*
* java.lang.AssertionError
* at io.netty.buffer.PoolChunk.calculateRunSize(PoolChunk.java:366)
* at io.netty.buffer.PoolChunk.allocateSubpage(PoolChunk.java:424)
* at io.netty.buffer.PoolChunk.allocate(PoolChunk.java:299)
* at io.netty.buffer.PoolArena.allocateNormal(PoolArena.java:205)
* at io.netty.buffer.PoolArena.tcacheAllocateSmall(PoolArena.java:174)
* at io.netty.buffer.PoolArena.allocate(PoolArena.java:136)
* at io.netty.buffer.PoolArena.allocate(PoolArena.java:128)
* at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:378)
* at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:187)
* at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:178)
* at io.vertx.core.net.impl.PartialPooledByteBufAllocator.directBuffer(PartialPooledByteBufAllocator.java:92)
*/
@BuildStep
MinNettyAllocatorMaxOrderBuildItem setMinimalNettyMaxOrderSize() {
return new MinNettyAllocatorMaxOrderBuildItem(3);
}

@BuildStep
void vertxIntegration(BuildProducer<MessageBodyWriterBuildItem> writerBuildItemBuildProducer) {
writerBuildItemBuildProducer.produce(new MessageBodyWriterBuildItem(ServerVertxBufferMessageBodyWriter.class.getName(),
Expand Down

0 comments on commit 6386fea

Please sign in to comment.