harissecic commented on issue #4194:
URL: https://github.com/apache/pulsar/issues/4194#issuecomment-808381093


   > Broker will require many changes and unlikely it can be made to work with 
graalvm anytime soon. Client should not an issue it has a dependency on netty , 
but netty authors should have already provided a guide to to use it with graal 
and it should work just fine.
   
   Shaded client which is the one I have to use in this case as netty needs to 
be supported independently of the Pulsar Client so I really can't due to other 
limitations extract it. I can only research again what netty methods are used 
with reflection and try to list them with org.apache.pulsar... prefix. On the 
other hand looking at the source code I'm not sure how safe calls to Schema 
instantiation would be which heavily rely on reflection. In any case I've made 
own Jackson schema to support passing in ObjectMapper from framework while 
using shaded library. In many cases this library tends to give me warnings and 
such running on new Java versions like 14. This is why it would be nice if 
possible to have less of those reflection and unsafe calls. On the other hand I 
guess main issue is in fact in netty in my case I just have to list all of 
those calls with apache pulsar extension as package name. An example from my 
point of view is ```java
   public static Schema<byte[]> newBytesSchema() {
           return catchExceptions(
                   () -> (Schema<byte[]>) 
newClassInstance("org.apache.pulsar.client.impl.schema.BytesSchema")
                           .newInstance());
       }
   
       public static Schema<String> newStringSchema() {
           return catchExceptions(
                   () -> (Schema<String>) 
newClassInstance("org.apache.pulsar.client.impl.schema.StringSchema")
                           .newInstance());
       }
   ```
   In my case it's replaced by simple `new StringSchema()` calls instead of 
`Schema<String> STRING = DefaultImplementation.newStringSchema();`. I get that 
most of reflective calls that it uses are "safe" around graal but not really 
liked.
   In any case thanks for the response and I'll try to figure out how to make 
this specific use case work because I expect it's not really that applicable 
(having to use shaded but having to list netty calls for graal yet again having 
to pass in your own jackson mapper).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to