Unsupported `__op` value in a write request returns HTTP 500
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript, mongodb, nodejs, postgres
Rechercherichtung
Beginne mit dem Lesen von SchemaController.getObjectType und verfolge, wie Schreibanfragen Operationsobjekte validieren, bevor sie die Storage-Adapter erreichen. Prüfe die vorhandenen Adapterfehler und zugehörigen Tests auf nicht unterstützte __op-Werte. Als erledigt gilt die Arbeit, wenn Create- und Update-Anfragen mit SetOnInsert oder einem unbekannten Operator einen Clientfehler zurückgeben, der den nicht unterstützten Operator nennt, statt HTTP 500.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
New Issue Checklist
- Report security issues confidentially.
- Any contribution is under this license.
- Before posting search existing issues.
Issue Description
A create or update whose field value is an operation object with an __op value that the REST API does not support returns HTTP 500 instead of a client error. This applies to SetOnInsert, which #8791 added for the server-side database API only, and to any unknown operator name.
SchemaController.getObjectType throws a plain string ('unexpected op: <name>') for an operator it does not know. The thrown value is not an Error, so it reaches the client as Internal server error and is logged without a message. The storage adapters reject such operators with a Parse error (COMMAND_UNAVAILABLE, "The operator is not supported yet."), but schema validation runs first and never gets there.
Steps to reproduce
POST /classes/Thingwith body{"counter": {"__op": "SetOnInsert", "amount": 1}}.PUT /classes/Thing/<objectId>with the same body.- Either request with
{"counter": {"__op": "Foo"}}.
All with the master key; the behavior is independent of ACL and class-level permissions.
Actual Outcome
HTTP 500 with {"code": 1, "message": "Internal server error."}. The server logs Uncaught internal server error. with no message or stack, because a string was thrown.
Expected Outcome
A client error that names the unsupported operator, for example HTTP 400 with Parse.Error.COMMAND_UNAVAILABLE (code 108) as the storage adapters already return, or Parse.Error.INCORRECT_TYPE (code 111). No HTTP 500.
Environment
Server
- Parse Server version:
9.10.7 - Operating system:
macOS - Local or remote host (AWS, Azure, Google Cloud, Heroku, Digital Ocean, etc):
local
Database
- System (MongoDB or Postgres):
MongoDB(the error occurs in schema validation before the storage adapter, so Postgres is expected to behave the same) - Database version:
8.0 - Local or remote host (MongoDB Atlas, mLab, AWS, Azure, Google Cloud, etc):
local
Client
- SDK (iOS, Android, JavaScript, PHP, Unity, etc):
REST API - SDK version:
n/a
Logs
error: Uncaught internal server error.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 21.4k
- Forks
- 4.8k
- Ø Merge
- 7 Std. 8 Min.
- Gemergte PRs (30 T.)
- 65
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
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 parse-community/parse-server
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
parse-community/parse-server#10871 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
parse-community/parse-server#10870 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Query with an include path through an inherited object member fails with an internal server errorEvtl. vergeben @charan-rathore hat das vor 20 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
parse-community/parse-server#10795 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
parse-community/parse-server#10794 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Add MongoDB 9 supportEvtl. vergeben @ga262 hat das vor 34 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
parse-community/parse-server#10750 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in parse-community/parse-server
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
postcss/postcss.org#302 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
ImranR98/apps.obtainium.imranr.dev#2000 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
microsoft/monaco-editor#5577 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Ebony-Vinyl/dsh-our-free-model#785 ·
Maintainer antworten meist innerhalb von 1 Tag