Admin java sdk can't use BrokerStats.getLoadReport method
- Dominant language
- Java
- Stars
- 15.3k
- Forks
- 3.8k
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 160
Description
**Describe the bug**
Admin java sdk can't use BrokerStats.getLoadReport method . Below is environment
os: win 10
java: 1.8
maven
```
org.apache.pulsar
pulsar-client-admin
2.9.2
```
here is the code
```java
try( PulsarAdmin admin = PulsarAdmin.builder()
.serviceHttpUrl(url)
.build()) {
BrokerStats brokerStats = admin.brokerStats();
System.out.println(brokerStats.getLoadReportAsync().get());
} catch (Exception e) {
e.printStackTrace();
}
```
exception:
```
java.util.concurrent.ExecutionException: org.apache.pulsar.client.admin.PulsarAdminException: java.lang.TypeNotPresentException: Type org.apache.pulsar.shade.org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport not present
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
at com.pulsar.service.impl.BrokerServiceImpl.main(BrokerServiceImpl.java:94)
Caused by: org.apache.pulsar.client.admin.PulsarAdminException: java.lang.TypeNotPresentException: Type org.apache.pulsar.shade.org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport not present
at org.apache.pulsar.client.admin.internal.BaseResource.getApiException(BaseResource.java:247)
at org.apache.pulsar.client.admin.internal.BrokerStatsImpl$5.failed(BrokerStatsImpl.java:210)
at org.apache.pulsar.shade.org.glassfish.jersey.client.JerseyInvocation.submit(JerseyInvocation.java:908)
at org.apache.pulsar.shade.org.glassfish.jersey.client.JerseyInvocation.submit(JerseyInvocation.java:800)
at org.apache.pulsar.shade.org.glassfish.jersey.client.JerseyInvocation$AsyncInvoker.method(JerseyInvocation.java:614)
at org.apache.pulsar.shade.org.glassfish.jersey.client.CompletableFutureAsyncInvoker.get(CompletableFutureAsyncInvoker.java:30)
at org.apache.pulsar.shade.org.glassfish.jersey.client.CompletableFutureAsyncInvoker.get(CompletableFutureAsyncInvoker.java:26)
at org.apache.pulsar.client.admin.internal.BaseResource.asyncGetRequest(BaseResource.java:165)
at org.apache.pulsar.client.admin.internal.BrokerStatsImpl.getLoadReportAsync(BrokerStatsImpl.java:201)
... 1 more
Caused by: java.lang.TypeNotPresentException: Type org.apache.pulsar.shade.org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport not present
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
at sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:108)
at java.lang.Class.getGenericInterfaces(Class.java:913)
at org.apache.pulsar.shade.org.glassfish.jersey.internal.util.ReflectionHelper.getClass(ReflectionHelper.java:1085)
at org.apache.pulsar.shade.org.glassfish.jersey.internal.util.ReflectionHelper.getClass(ReflectionHelper.java:1081)
at org.apache.pulsar.shade.org.glassfish.jersey.client.JerseyInvocation.submit(JerseyInvocation.java:823)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.apache.pulsar.shade.org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
... 17 more
```
Contributor guide
Research direction
Start with BrokerStatsImpl.getLoadReportAsync and BaseResource in the 2.9.2 admin client, then inspect how the shaded LoadManagerReport type is packaged in the Maven dependency. Reproduce the supplied Java 8 example and trace the TypeNotPresentException; done means getLoadReportAsync().get() completes without the reported missing-class error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100