Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix invalid date error in beforeSave hook #7217

Open
wants to merge 21 commits into
base: alpha
Choose a base branch
from

Conversation

mtrezza
Copy link
Member

@mtrezza mtrezza commented Feb 23, 2021

New Pull Request Checklist

Issue Description

Saving an object with invalid ISO date throws an error instead of rejecting the Parse.Object.save() promise.

Related issue: closes #7192

Approach

(tdb, just the failing test case for now)

TODOs before merging

  • Add test cases
  • Add entry to changelog
  • Add new Parse Error codes to Parse JS SDK

mtrezza and others added 21 commits November 19, 2020 01:05
* commit 'ccb045b68c5b4d983a90fa125513fc476e4e2387':
  fix: upgrade @graphql-tools/links from 6.2.4 to 6.2.5 (parse-community#7007)
  fix: upgrade pg-promise from 10.7.0 to 10.7.1 (parse-community#7009)
  fix: upgrade jwks-rsa from 1.10.1 to 1.11.0 (parse-community#7008)
  fix: upgrade graphql from 15.3.0 to 15.4.0 (parse-community#7011)
  update stale bot (parse-community#6998)
  fix(beforeSave/afterSave): Return value instead of Parse.Op for nested fields (parse-community#7005)
  fix(beforeSave): Skip Sanitizing Database results (parse-community#7003)
  Fix includeAll for querying a Pointer and Pointer array (parse-community#7002)
  Init (parse-community#6999)
* commit '7f47b0427ea56214d9b0199f0fcfa4af38794e02':
  Add page localization (parse-community#7128)
  Improve contribution guide (parse-community#7075)
  fix: upgrade pg-promise from 10.9.0 to 10.9.1 (parse-community#7170)
  Add tests against multiple MongoDB versions (parse-community#7161)
  fix: upgrade mime from 2.4.7 to 2.5.0 (parse-community#7166)
  fix: upgrade pg-promise from 10.8.7 to 10.9.0 (parse-community#7168)
  fix: upgrade apollo-server-express from 2.19.1 to 2.19.2 (parse-community#7165)
  Upgrade @node-rs/bcrypt to latest version (parse-community#7159)
  Run Prettier after Definitions (parse-community#7164)
@mtrezza mtrezza changed the title Fix invalid date error in before save hook Fix invalid date error in beforeSave hook Feb 23, 2021
@mtrezza
Copy link
Member Author

mtrezza commented Feb 23, 2021

The failing test reveals another issue, are two different error messages for the same error:

Failures:
1) beforeSave hooks rejects saving with invalid iso date and beforeSave hook (#7192)
  Message:
    Expected a promise to be rejected with ParseError: 111 This is not a valid Date but it was rejected with Error: Tried to encode an invalid date..
  Stack:
    Error
        at <Jasmine>
        at UserContext.<anonymous> (/root/parse-server/spec/CloudCode.spec.js:1833:37)
        at <Jasmine>
        at /root/parse-server/spec/helper.js:192:7
        at processTicksAndRejections (node:internal/process/task_queues:93:5)
  Message:
    Unhandled promise rejection: Error: Tried to encode an invalid date.
  Stack:
    Error: Tried to encode an invalid date.
        at encode (/root/parse-server/node_modules/parse/lib/node/encode.js:85:13)
        at _default (/root/parse-server/node_modules/parse/lib/node/encode.js:132:10)
        at SetOp.toJSON (/root/parse-server/node_modules/parse/lib/node/ParseOp.js:155:32)
        at ParseObjectSubclass._getSaveJSON (/root/parse-server/node_modules/parse/lib/node/ParseObject.js:485:61)
        at success (/root/parse-server/lib/triggers.js:385:45)
        at processTicksAndRejections (node:internal/process/task_queues:93:5)
  Message:
    Failed: There were open connections to the server left after the test finished
  Stack:
    Error: Failed: There were open connections to the server left after the test finished
        at <Jasmine>
        at afterLogOut (/root/parse-server/spec/helper.js:200:7)

@mtrezza
Copy link
Member Author

mtrezza commented Sep 3, 2021

⚠️ Important change for merging PRs from Parse Server 5.0 onwards!

We are planning to release the first beta version of Parse Server 5.0 in October 2021.

If a PR contains a breaking change and is not merged before the beta release of Parse Server 5.0, it cannot be merged until the end of 2022. Instead it has to follow the Deprecation Policy and phase-in breaking changes to be merged during the course of 2022.

One of the most voiced community feedbacks was the demand for predictability in breaking changes to make it easy to upgrade Parse Server. We have made a first step towards this by introducing the Deprecation Policy in February 2021 that assists to phase-in breaking changes, giving developers time to adapt. We will follow-up with the introduction of Release Automation and a branch model that will allow breaking changes only with a new major release, scheduled for the beginning of each calendar year.

We understand that some PRs are a long time in the making and we very much appreciate your contribution. We want to make it easy for PRs that contain a breaking change and were created before the introduction of the Deprecation Policy. These PRs can be merged with a breaking change without being phased-in before the beta release of Parse Server 5.0. We are making this exception because we appreciate that this is a time of transition that requires additional effort from contributors to adapt. We encourage everyone to prepare their PRs until the end of September and account for review time and possible adaptions.

If a PR contains a breaking change and should be merged before the beta release, please mention @parse-community/server-maintenance and we will coordinate with you to merge the PR.

Thanks for your contribution and support during this transition to Parse Server release automation!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Invalid date iso with beforeSave make server unhandled promise rejection and request hanging
1 participant