dubbo-demo-native-provider from dubbo-demo does not run properly
- Dominant language
- Java
- Stars
- 41.6k
- Forks
- 26.4k
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 4
Description
### Environment
* Dubbo version: 3.0.9
* Operating System version: Ubuntu 20.04
* Java version: OpenJDK Runtime Environment GraalVM CE 22.1.0 (build 17.0.3+7-jvmci-22.1-b06)
### Steps to reproduce this issue
1. Install GraalVM CE Java17 22.1.0 (https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java17-linux-amd64-22.1.0.tar.gz)
2. Clone the official dubbo repo (`git clone git@github.com:apache/dubbo.git`)
3. Checkout to 3.0.9 version (`git checkout dubbo-3.0.9`)
4. Build the dubbo-demo-native-provider (run `./mvnw -U clean package -pl dubbo-build-tools -pl dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface -pl dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider -P native -Dmaven.test.skip=true -Dcheckstyle.skip=true`)
5. Run the zookeper (`docker-compose up -d`, docker-compose.yml is below)
6. Run the native app dubbo-demo-native-provider (run `./dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/target/demo-native-provider`)
docker-compose.yml for zookeper
```
version: '3.0'
services:
zookeeper:
image: zookeeper:3.8.0
container_name: zookeeper
networks:
- abnet
ports:
- '2181:2181'
environment:
- 'ZOOKEEPER_CLIENT_PORT=2181'
- 'ZOOKEEPER_TICK_TIME=2000'
networks:
abnet:
driver: bridge
```
### Expected Behavior
The dubbo-demo-native-provider is started successfully.
### Actual Behavior
The exception is raised: `IllegalStateException: No adaptive method exist on extension org.apache.dubbo.common.extension.ExtensionInjector, refuse to create the adaptive class!`
Full stacktrace:
```
$ ./dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/target/demo-native-provider
Exception in thread "main" java.lang.IllegalStateException: Failed to create adaptive instance: java.lang.IllegalStateException: Can't create adaptive extension interface org.apache.dubbo.common.extension.ExtensionInjector, cause: No adaptive method exist on extension org.apache.dubbo.common.extension.ExtensionInjector, refuse to create the adaptive class!
at org.apache.dubbo.common.extension.ExtensionLoader.getAdaptiveExtension(ExtensionLoader.java:716)
at org.apache.dubbo.common.extension.ExtensionLoader.(ExtensionLoader.java:196)
at org.apache.dubbo.common.extension.ExtensionDirector.createExtensionLoader0(ExtensionDirector.java:123)
at org.apache.dubbo.common.extension.ExtensionDirector.createExtensionLoader(ExtensionDirector.java:114)
at org.apache.dubbo.common.extension.ExtensionDirector.getExtensionLoader(ExtensionDirector.java:104)
at org.apache.dubbo.common.extension.ExtensionAccessor.getExtensionLoader(ExtensionAccessor.java:27)
at org.apache.dubbo.metadata.definition.TypeDefinitionBuilder.initBuilders(TypeDefinitionBuilder.java:43)
at org.apache.dubbo.rpc.model.FrameworkModel.initialize(FrameworkModel.java:86)
at org.apache.dubbo.rpc.model.FrameworkModel.(FrameworkModel.java:79)
at org.apache.dubbo.rpc.model.FrameworkModel.defaultModel(FrameworkModel.java:172)
at org.apache.dubbo.rpc.model.ApplicationModel.defaultModel(ApplicationModel.java:92)
at org.apache.dubbo.config.AbstractMethodConfig.(AbstractMethodConfig.java:103)
at org.apache.dubbo.config.AbstractInterfaceConfig.(AbstractInterfaceConfig.java:200)
at org.apache.dubbo.config.AbstractServiceConfig.(AbstractServiceConfig.java:132)
at org.apache.dubbo.config.ServiceConfigBase.(ServiceConfigBase.java:84)
at org.apache.dubbo.config.ServiceConfig.(ServiceConfig.java:136)
at org.apache.dubbo.demo.graalvm.provider.Application.startWithBootstrap(Application.java:50)
at org.apache.dubbo.demo.graalvm.provider.Application.main(Application.java:40)
Caused by: java.lang.IllegalStateException: Can't create adaptive extension interface org.apache.dubbo.common.extension.ExtensionInjector, cause: No adaptive method exist on extension org.apache.dubbo.common.extension.ExtensionInjector, refuse to create the adaptive class!
at org.apache.dubbo.common.extension.ExtensionLoader.createAdaptiveExtension(ExtensionLoader.java:1291)
at org.apache.dubbo.common.extension.ExtensionLoader.getAdaptiveExtension(ExtensionLoader.java:712)
... 17 more
Caused by: java.lang.IllegalStateException: No adaptive method exist on extension org.apache.dubbo.common.extension.ExtensionInjector, refuse to create the adaptive class!
at org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator.generate(AdaptiveClassCodeGenerator.java:104)
at org.apache.dubbo.common.extension.AdaptiveClassCodeGenerator.generate(AdaptiveClassCodeGenerator.java:94)
at org.apache.dubbo.common.extension.ExtensionLoader.createAdaptiveExtensionClass(ExtensionLoader.java:1313)
at org.apache.dubbo.common.extension.ExtensionLoader.getAdaptiveExtensionClass(ExtensionLoader.java:1300)
at org.apache.dubbo.common.extension.ExtensionLoader.createAdaptiveExtension(ExtensionLoader.java:1284)
... 18 more
```
Contributor guide
Research direction
Run the listed Maven native build and provider command first, with ZooKeeper started by docker-compose. Trace the failure from org.apache.dubbo.demo.graalvm.provider.Application through ExtensionLoader and AdaptiveClassCodeGenerator, then verify that the native provider starts without the ExtensionInjector exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker-compose, java
- Domain
- backend, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100