ServerValues.resolveDeferredValue has incorrect cast
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez par ServerValues.resolveDeferredValue dans ServerValues.java:44 et suivez ses appelants via ServerValues.resolveDeferredValueSnapshot et Repo.setValue. Reproduisez l'échec avec DatabaseReference.setValue en utilisant la valeur d'incrément .sv sous forme de map documentée. C'est terminé lorsque cette entrée n'échoue plus avec la ClassCastException signalée et que le comportement a été vérifié conformément aux étapes de reproduction de l'issue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
- Operating System version: Gentoo Linux
- Firebase SDK version: 9.3.0
- Library version: 9.3.0 (but the bug goes back to at least 8.1.0)
- Firebase Product: RTDB
As ServerValue.increment is still not supported by this SDK 4 years after its introduction, I tried implementing it manually. This triggers a ClassCastException inside the SDK due to a bad assumption that the value of the .sv key is always a String.
Steps to reproduce:
- Create the data structure for ServerValue.increment as described in documentation (such as the REST documentation):
{
".sv": {
"increment": delta
}
}
- Call
setValueusing this data structure.
Relevant Code:
var node = databaseNode();
node.setValue(Map.of(".sv", Map.of("increment", delta)), callback);
Error:
2024-06-21T19:58:12,008Z [firebase-database-worker] ERROR c.g.firebase.database.core.RunLoop - Uncaught exception in Firebase Database runloop (9.3.0). Please report to firebase-database-client@google.com
java.lang.ClassCastException: class java.util.HashMap cannot be cast to class java.lang.String (java.util.HashMap and java.lang.String are in module java.base of loader 'bootstrap')
at com.google.firebase.database.core.ServerValues.resolveDeferredValue(ServerValues.java:44)
at com.google.firebase.database.core.ServerValues.resolveDeferredValueSnapshot(ServerValues.java:80)
at com.google.firebase.database.core.Repo.setValue(Repo.java:376)
at com.google.firebase.database.DatabaseReference$1.run(DatabaseReference.java:305)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
- Langage dominant
- Java
- Étoiles
- 620
- Forks
- 305
- Merge moyen
- 4 j 9 h
- PR mergées (30 j)
- 4
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de firebase/firebase-admin-java
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
firebase/firebase-admin-java#1231 ·
-
api: core
firebase/firebase-admin-java#1198 · 3 commentaires · 1 personne assignée ·
-
[BUG] RemoteConfig unit tests fail in non-English (e.g., Korean) Locales due to Date Parsing Ouverteapi: remoteconfig
firebase/firebase-admin-java#1196 · 1 commentaire · 2 personnes assignées ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
firebase/firebase-admin-java#1192 · 3 commentaires ·
-
needs-triage type: feature request
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
firebase/firebase-admin-java#1149 · 1 commentaire ·
Toutes les issues de firebase/firebase-admin-java
Issues similaires
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Ouvertearea/plugin
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
kestra-io/plugin-kestra#190 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Add canonical URLs and a sitemap Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
apache/rocketmq-dashboard#5064 ·