Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

ServerValues.resolveDeferredValue has incorrect cast

Ouverte
#962 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
firebase, java
Domaine
databases

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

api: database
  • 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:
  1. Create the data structure for ServerValue.increment as described in documentation (such as the REST documentation):
{
  ".sv": {
    "increment": delta
  }
}
  1. Call setValue using 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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de firebase/firebase-admin-java

Toutes les issues de firebase/firebase-admin-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.