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

Gracefully handle bad mergeCollection #272

Merged
merged 2 commits into from
Jul 12, 2023
Merged

Gracefully handle bad mergeCollection #272

merged 2 commits into from
Jul 12, 2023

Conversation

luacmartins
Copy link
Contributor

@luacmartins luacmartins commented Jul 12, 2023

Gracefully handle bad mergeCollection updates so it doesn't block the merge queue

Details

Coming from https://expensify.slack.com/archives/C049HHMV9SM/p1689120594593919, bad merge updates can block Onyx's merge queue and cause issues in App. We should gracefully handle these.

Related Issues

Related to https://github.com/Expensify/Expensify/issues/290894

Automated Tests

N/A

Linked PRs

@luacmartins luacmartins self-assigned this Jul 12, 2023
@luacmartins luacmartins requested a review from a team as a code owner July 12, 2023 19:42
@melvin-bot melvin-bot bot requested review from Li357 and removed request for a team July 12, 2023 19:42
mountiny
mountiny previously approved these changes Jul 12, 2023
PauloGasparSv
PauloGasparSv previously approved these changes Jul 12, 2023
@luacmartins luacmartins dismissed stale reviews from PauloGasparSv and mountiny via ad1a66d July 12, 2023 19:52
@mountiny mountiny merged commit ed5dc52 into main Jul 12, 2023
3 checks passed

throw new Error(`Provided collection doesn't have all its data belonging to the same parent. CollectionKey: ${collectionKey}, DataKey: ${dataKey}`);
hasCollectionKeyCheckFailed = true;
Logger.logAlert(`Provided collection doesn't have all its data belonging to the same parent. CollectionKey: ${collectionKey}, DataKey: ${dataKey}`);
Copy link
Contributor

@marcaaron marcaaron Jul 12, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could keep throwing if you are on dev? In my opinion, this should throw. It means someone is not testing their API changes against the app. The fact that they are getting to staging or production is a problem. We are kind of making this more likely with this PR since an alert is easier to ignore than a throw.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like we should be fine with this for now, the typescript migration should start pretty soon and that should catch any of these malformed data updates.

Also just couple lines above when the data is "more" malformed, we just resolve the promise and log info which is same as here so thats what makes me think it should be fine

Logger.logInfo('mergeCollection() called with invalid or empty value. Skipping this update.');

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's not a huge deal. But I am not following how the TS migration would prevent this. Updates from Web-Expensify get passed to Onyx.update() more or less blindly. It's gonna be a run time error that can't be prevented during compile time because the API could send the wrong type or even just a 🥔 emoji and Onyx would try to do something with it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To reiterate the main concern here: we are making these errors harder to catch on dev. We will find out about this as a staging deploy blocker, but it would be better to create no deploy blocker in the first place and catch it on dev.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we can throw in dev. Created a PR #277

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.

4 participants