apache / apache/arrow-java

Java 21 breaks access to netty-buffer class

Abierto
#1,106 1 comentario 0 reacciones 0 asignados Ver en GitHub
Type: bug
Lenguaje dominante
Java
Estrellas
94
Forks
152
Merge medio
3 d 16 h
PR fusionados (30 d)
11

Descripción

### Describe the bug, including details regarding any error messages, version, and platform.

When trying to start an Arrow Flight server use is made of class `io.netty.buffer.PoolArena` in netty-buffer that is no longer accessible in java 21 from class `io.netty.buffer.PooledByteBufAllocatorL` in `arrow-memory-netty-buffer-patch-19.0.0.jar`.
I think this might be caused by Java 21 being more restrictive than 17.

Stack trace
```java
Exception in thread "main" java.lang.IllegalAccessError: failed to access class io.netty.buffer.PoolArena from class io.netty.buffer.PooledByteBufAllocatorL$InnerAllocator (io.netty.buffer.PoolArena is in unnamed module of loader 'app'; io.netty.buffer.PooledByteBufAllocatorL$InnerAllocator is in unnamed module of loader org.apache.hop.core.plugins.HopURLClassLoader @26612078)
at io.netty.buffer.PooledByteBufAllocatorL$InnerAllocator.(PooledByteBufAllocatorL.java:141)
at io.netty.buffer.PooledByteBufAllocatorL.(PooledByteBufAllocatorL.java:46)
at org.apache.arrow.memory.netty.NettyAllocationManager.(NettyAllocationManager.java:54)
at org.apache.arrow.memory.netty.DefaultAllocationManagerFactory.(DefaultAllocationManagerFactory.java:26)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:423)
at java.base/java.lang.Class.forName(Class.java:414)
at org.apache.arrow.memory.DefaultAllocationManagerOption.getFactory(DefaultAllocationManagerOption.java:105)
at org.apache.arrow.memory.DefaultAllocationManagerOption.getDefaultAllocationManagerFactory(DefaultAllocationManagerOption.java:92)
at org.apache.arrow.memory.BaseAllocator$Config.getAllocationManagerFactory(BaseAllocator.java:826)
at org.apache.arrow.memory.ImmutableConfig.access$001(ImmutableConfig.java:20)
at org.apache.arrow.memory.ImmutableConfig$InitShim.getAllocationManagerFactory(ImmutableConfig.java:80)
at org.apache.arrow.memory.ImmutableConfig.(ImmutableConfig.java:43)
at org.apache.arrow.memory.ImmutableConfig$Builder.build(ImmutableConfig.java:492)
at org.apache.arrow.memory.BaseAllocator.(BaseAllocator.java:72)
at org.apache.hop.arrow.flight.ArrowFlightServer.(ArrowFlightServer.java:59)
at org.apache.hop.arrow.command.ArrowCommand.run(ArrowCommand.java:108)
at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
at picocli.CommandLine.execute(CommandLine.java:2174)
at org.apache.hop.hop.Hop.main(Hop.java:131)

```

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza reproduciendo el fallo al iniciar un servidor de Arrow Flight en Java 21 y, después, inspecciona PooledByteBufAllocatorL y NettyAllocationManager, tal como se identifican en el stack trace. Compara el comportamiento de acceso relevante con Java 17; se considera terminado cuando ya no se produce el IllegalAccessError y el servidor se inicia correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
backend, data-engineering
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.