firebase / firebase/firebase-admin-java
Error when use Firebase Admin SDK with GraalVM Native Image
- 主要语言
- Java
- 星标
- 620
- 派生
- 305
- 平均合并
- 3 小时 23 分钟
- 30 天内合并 PR
- 1
描述
* Operating System version: macOS 13.5
* Firebase SDK version: 9.2.0
* Library version: _____
* Firebase Product: auth
Hello,
I'm getting the error below when using Firebase Admin SDK with GraalVM native image.
When I run it with JVM it works perfectly.
Reference link: https://firebase.google.com/docs/auth/admin/manage-users#update_a_user
My code Example:
if (FirebaseApp.getApps().isEmpty()) new FirebaseUtil().init(FIREBASE_AUTH_KEY);
// Update User Firebase
UpdateRequest request = new UpdateRequest(firebaseUid)
.setPassword(user.getNewPassword());
FirebaseAuth.getInstance(FirebaseApp.getInstance()).updateUser(request);
Error:
java.lang.RuntimeException: java.lang.IllegalArgumentException:
at br.com.healthmode.serviceapilogin.service.LoginService.saveNewPassword(LoginService.java:86)
at br.com.healthmode.serviceapilogin.controller.LoginController.saveNewPassword(LoginController.java:60)
at br.com.healthmode.serviceapilogin.controller.$LoginController$Definition$Exec.dispatch(Unknown Source)
at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invoke(AbstractExecutableMethodsDefinition.java:371)
at io.micronaut.context.DefaultBeanContext$4.invoke(DefaultBeanContext.java:594)
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:303)
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:111)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:103)
at io.micronaut.http.server.RouteExecutor.lambda$executeRoute$14(RouteExecutor.java:659)
at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:49)
at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:194)
at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedCallable.call(InvocationInstrumenterWrappedCallable.java:53)
at java.base@17.0.6/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
Caused by: java.lang.IllegalArgumentException:
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:900)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:360)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:318)
at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:162)
at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:144)
at com.google.firebase.internal.ErrorHandlingHttpClient.parse(ErrorHandlingHttpClient.java:120)
at com.google.firebase.auth.internal.AuthHttpClient.parse(AuthHttpClient.java:79)
at com.google.firebase.auth.FirebaseUserManager.lookupUserAccount(FirebaseUserManager.java:239)
at com.google.firebase.auth.FirebaseUserManager.getUserById(FirebaseUserManager.java:121)
at com.google.firebase.auth.AbstractFirebaseAuth$12.execute(AbstractFirebaseAuth.java:763)
at com.google.firebase.auth.AbstractFirebaseAuth$12.execute(AbstractFirebaseAuth.java:759)
at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)
at com.google.firebase.auth.AbstractFirebaseAuth.updateUser(AbstractFirebaseAuth.java:740)
at br.com.healthmode.serviceapilogin.service.LoginService.saveNewPassword(LoginService.java:80)
... 21 more
Caused by: java.lang.IllegalArgumentException: unable to create new instance of class com.google.firebase.auth.internal.GetAccountInfoResponse because it has no accessible default constructor
at com.google.api.client.util.Types.handleExceptionForNewInstance(Types.java:162)
at com.google.api.client.util.Types.newInstance(Types.java:117)
at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:768)
... 34 more
Caused by: java.lang.InstantiationException: com.google.firebase.auth.internal.GetAccountInfoResponse
at java.base@17.0.6/java.lang.Class.newInstance(DynamicHub.java:639)
at com.google.api.client.util.Types.newInstance(Types.java:113)
... 35 more
Caused by: java.lang.NoSuchMethodException: com.google.firebase.auth.internal.GetAccountInfoResponse.()
at java.base@17.0.6/java.lang.Class.getConstructor0(DynamicHub.java:3585)
at java.base@17.0.6/java.lang.Class.newInstance(DynamicHub.java:626)
Is there any incompatibility between Firebase Admin SDK and Native Image?
贡献指南
调研方向
从提供的 FirebaseAuth.updateUser 路径以及 FirebaseUserManager.lookupUserAccount、JsonParser 和 GetAccountInfoResponse 的堆栈跟踪条目开始。在 GraalVM Native Image 下重现 updateUser 调用,并将其与正常工作的 JVM 运行进行比较;完成的标准是确定 SDK 是否兼容,并记录或识别所需的 native-image 支持。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- firebase, java
- 领域
- authentication, backend
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 35/100