ServerValues.resolveDeferredValue has incorrect cast
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne bei ServerValues.resolveDeferredValue in ServerValues.java:44 und verfolge seine Aufrufer über ServerValues.resolveDeferredValueSnapshot und Repo.setValue. Reproduziere den Fehler über DatabaseReference.setValue unter Verwendung des dokumentierten map-förmigen .sv-Inkrementwerts. Erledigt ist die Aufgabe, wenn diese Eingabe nicht mehr mit der gemeldeten ClassCastException fehlschlägt und das Verhalten anhand der Reproduktionsschritte des Issues überprüft wurde.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
- 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)
- Vorherrschende Sprache
- Java
- Sterne
- 620
- Forks
- 305
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 4
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus firebase/firebase-admin-java
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
firebase/firebase-admin-java#1231 ·
-
api: core
firebase/firebase-admin-java#1198 · 3 Kommentare · 1 zugewiesene Person ·
-
api: remoteconfig
firebase/firebase-admin-java#1196 · 1 Kommentar · 2 zugewiesene Personen ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
firebase/firebase-admin-java#1192 · 3 Kommentare ·
-
needs-triage type: feature request
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
firebase/firebase-admin-java#1149 · 1 Kommentar ·
Alle Issues in firebase/firebase-admin-java
Ähnliche Issues
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
inu-appcenter/memorIN-backend#288 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
frontend maui-pilot pilot-ask question
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Offenarea/plugin
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
kestra-io/plugin-kestra#190 ·