Closed Bug 1812235 Opened 1 year ago Closed 1 year ago

Massive error spike syncing credit-cards on Fenix.

Categories

(Fenix :: Accounts and Sync, defect)

All
Android
defect

Tracking

(firefox109 unaffected, firefox110+ fixed, firefox111 fixed)

RESOLVED FIXED
111 Branch
Tracking Status
firefox109 --- unaffected
firefox110 + fixed
firefox111 --- fixed

People

(Reporter: markh, Assigned: dimi)

References

(Regression, )

Details

(Keywords: regression)

Attachments

(2 files, 3 obsolete files)

Mobile clients connected to a desktop that has bug 1667257 applied fail to sync credit cards. That bug bumped the sync version of the payload to 4, but the mobile clients reject anything not 3.

What's the chance of backing that out? Even if we make the same change in app-services, it will need to ride the trains, so any release or beta Fenix's will remain broken.

Flags: needinfo?(sgalich)

Set release status flags based on info from the regressing bug 1667257

oops, sorry, I got the patch author wrong.

Flags: needinfo?(sgalich) → needinfo?(dlee)

Instead of a backout, I think what is going to need to happen here is:

  • Change the version back to 3.
  • As a kind of migration, go through all credit-cards locally, and if they have version 4, drop it back to 3, possibly re-add the field (see below) and arrange for them to be re-synced.
  • Check what happens with mobile if no cc-type is in the payload - we'll need to know if app-services itself will get upset ([edit] I think it will, so will need to be re-added as an empty string) and also check whether Fenix will get upset if it's not a "known" value (in which case I'm not sure what action to take)
  • Uplift that to beta.
See Also: → 1812244

Mobile clients reject syncing when credit card record version is not 3, so this patch
reverts the credit card record version back to 3 (with cc-type field).

The auto-detect beahvior still exists, the only difference is now we
will still save the cc-type to storage to comply with the epectation
of mobile clients.

Assignee: nobody → dlee
Status: NEW → ASSIGNED
Attachment #9313995 - Attachment is obsolete: true
Flags: needinfo?(dlee)

Mobile clients reject syncing when credit card record version is not 3, so this patch
reverts the credit card record version back to 3 (with cc-type field).

The auto-detect network type behavior implemented in bug 1667257 still applies.
The changes made in this commit are:

  1. Save the cc-type to storage to comply with the expectation of mobile clients.
    (This is the behavior for v3 credit record)
  2. When a v4 record is found, rollback to v3 and make sure _sync.changeCounter is set
    so we upload the downgraded record to the sync server

Differentiac Revision: https://phabricator.services.mozilla.com/D167790

Attachment #9314032 - Attachment is obsolete: true

Mobile clients reject syncing when credit card record version is not 3, so this patch
reverts the credit card record version back to 3 (with cc-type field).

The auto-detect network type behavior implemented in bug 1667257 still applies.
The changes made in this commit are:

  1. Save the cc-type to storage to comply with the expectation of mobile clients.
    (This is the behavior for v3 credit record)
  2. When a v4 record is found, rollback to v3 and make sure _sync.changeCounter is set
    so we upload the downgraded record to the sync server

Differentiac Revision: https://phabricator.services.mozilla.com/D167790

Attachment #9314034 - Attachment is obsolete: true

Mobile clients reject syncing when credit card record version is not 3, so this patch
reverts the credit card record version back to 3 (with cc-type field).

The auto-detect network type behavior implemented in bug 1667257 still applies.
The changes made in this commit are:

  1. Save the cc-type to storage to comply with the expectation of mobile clients.
    (This is the behavior for v3 credit record)
  2. When a v4 record is found, rollback to v3 and make sure _sync.changeCounter is set
    so we upload the downgraded record to the sync server

FTR, release desktop is also impacted if a beta or nightly desktop is syncing with it:

1674691198473 Sync.Engine.CreditCards.Store WARN Failed to apply incoming record 4b1b1c81d4c5: Error: Got unknown record version 4; want 3(resource://autofill/FormAutofillStorageBase.jsm:321:13) JS Stack trace: _ensureMatchingVersion@FormAutofillStorageBase.jsm:321:13

Will that patch require uplifting to beta?

Flags: needinfo?(markh)

(In reply to Pascal Chevrel:pascalc from comment #9)

Will that patch require uplifting to beta?

Yes

Pushed by mhammond@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/3d9e6839b65e
Rollback credit card record version from 4 to 3 r=markh,sgalich
Pushed by dlee@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/30dcad75e37f
Rollback credit card record version from 4 to 3 r=markh,sgalich
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch
Flags: needinfo?(dlee)

Hi Pascal, I'm not sure why I can't see uplift request option in the attachment, so just manually add one:

BetaUplift Approval Request

  • User impact if declined: Users will not be able to sync credit cards,
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • List of other uplifts needed: None
  • Risk to taking this patch: Medium
  • Why is the change risky/not risky? (and alternatives if risky): The code only affect users who have credit card saved in firefox. Once user have migrated back to credit card version 3, the change made in this patch will not run anymore
  • String changes made/needed: None
Flags: needinfo?(pascalc)

It might be because the bug is filed in the Fenix component which is on Github while the patch actually landed on m-c.

Flags: needinfo?(pascalc)

Mobile clients reject syncing when credit card record version is not 3, so this patch
reverts the credit card record version back to 3 (with cc-type field).

The auto-detect network type behavior implemented in bug 1667257 still applies.
The changes made in this commit are:

  1. Save the cc-type to storage to comply with the expectation of mobile clients.
    (This is the behavior for v3 credit record)
  2. When a v4 record is found, rollback to v3 and make sure _sync.changeCounter is set
    so we upload the downgraded record to the sync server

Original Revision: https://phabricator.services.mozilla.com/D167814

Uplift Approval Request

  • User impact if declined: Credit card syncing broken
  • Needs manual QE test: no
  • Fix verified in Nightly: yes
  • Code covered by automated testing: yes
  • Explanation of risk level: risk limited to credit-card functionality
  • Is Android affected?: no
  • Risk associated with taking this patch: low
  • Steps to reproduce for manual QE testing: n/a
  • String changes made/needed: None
Flags: needinfo?(markh)

A patch has been attached on this bug, which was already closed. Filing a separate bug will ensure better tracking. If this was not by mistake and further action is needed, please alert the appropriate party. (Or: if the patch doesn't change behavior -- e.g. landing a test case, or fixing a typo -- then feel free to disregard this message)

Flags: qe-verify+

Removing the qe-verify+ label since it appears that manual qe isn't needed. However, when attempting to reproduce the issue, we cannot meet the condition from 1667257 and the fix cannot be confirmed on our side.

Flags: qe-verify+ → qe-verify-

Attempted to reproduce the issue in beta 110.0b6 as well, but with the same result as above. However, Credit Card sync works as expected.

Duplicate of this bug: 1817468
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: