Unsupported `__op` value in a write request returns HTTP 500
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, mongodb, nodejs, postgres
Piste de recherche
Commencez par lire SchemaController.getObjectType et suivez la manière dont les requêtes d’écriture valident les objets d’opération avant d’atteindre les adaptateurs de stockage. Examinez les erreurs existantes des adaptateurs et les tests associés pour repérer les valeurs __op non prises en charge. Le travail est terminé lorsque les requêtes de création et de mise à jour avec SetOnInsert ou un opérateur inconnu renvoient une erreur client indiquant l’opérateur non pris en charge, au lieu de HTTP 500.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- JavaScript
- Étoiles
- 21.4k
- Forks
- 4.8k
- Merge moyen
- 7 h 8 min
- PR mergées (30 j)
- 65
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire 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 parse-community/parse-server
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
parse-community/parse-server#10871 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
parse-community/parse-server#10870 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Query with an include path through an inherited object member fails with an internal server errorPeut-être pris @charan-rathore l’a pris il y a 19 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
parse-community/parse-server#10795 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
parse-community/parse-server#10794 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Add MongoDB 9 supportPeut-être pris @ga262 l’a pris il y a 34 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
parse-community/parse-server#10750 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de parse-community/parse-server
Issues similaires
-
[docs] RELEASE.md: wrong branch name, no check that the prepare PR merged with the right subject, manual publish stepPeut-être pris @albertteoh l’a pris aujourd’hui. Ouvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
jaegertracing/jaeger-ui#4739 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
keepassxreboot/keepassxc-browser#3159 · 1 commentaire ·
-
Add: ESP 2 RSOuverteapproved check:passed feeds:add
Difficulté 1/5 Moins d'une heure Accessibilité débutants 67/100
-
v6: OTP input keeps the rest of a selection when you type over itPeut-être pris @thejesh23 l’a pris aujourd’hui. Ouvertebug confirmed has-pr js v6
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
twbs/bootstrap#43323 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour