Closed Bug 982844 Opened 6 years ago Closed 6 years ago

[B2G][Contacts][Facebook]Facebook contacts cannot be re-imported after being manually deleted from device contacts list.

Categories

(Core :: DOM: Device Interfaces, defect)

30 Branch
ARM
Gonk (Firefox OS)
defect
Not set

Tracking

()

VERIFIED FIXED
mozilla31
blocking-b2g 1.4+
Tracking Status
firefox30 --- fixed
firefox31 --- fixed
b2g-v1.4 --- fixed
b2g-v2.0 --- fixed

People

(Reporter: rkuhlman, Assigned: baku)

References

Details

(Keywords: regression)

Attachments

(2 files)

Attached file ContactNotImported.txt
If the user imports all contact from facebook, then deletes a contact from it's contact details page, they will not be able to re-import that profile from facebook. The contact can be selected in the checklist of FB contacts, but will not be updated. User will see a message: "no friends updated."

Repro Steps:
1) Updated Buri to BuildID: 20140312004001
2) Launch Contacts app.
3) Tap on settings >  Facebook 'sync friends' button. Sign into a profile.
4) Tap 'Select All' then 'Import'.
5) Return to contacts list and locate imported contact.
6) Manually delete contact.
7) Return to list of facebook contacts and re-import the deleted contact.

Actual:
Facebook contact is not imported.

Expected:
Facebook contact can be re-imported after being manually deleted.

Environmental Variables:
Device: Buri v1.3 Moz RIL
BuildID: 20140312004001
Gaia: df157ce3a3f841850a1cce8f057f8e7f547fb9f8
Gecko: c629684b0eae
Version: 28.0
Firmware Version: v1.2-device.cfg

Notes:

Repro frequency: 100%
See attached: logcat
Does this reproduce on 1.1?
Keywords: qawanted
Assignee: nobody → gtorodelvalle
Hi rkuhlman, although I have had some issues with the builds today :-( , would you be so kind to retry it using today's 1.3 build? I have checked that it works as expected in 1.3 (Gecko-ccc26f7.Gaia-6194def) and in 1.2 (Gecko-04ef95a.Gaia-539a25e) :) Thanks!
Flags: needinfo?(rkuhlman)
with latest M-C I'm getting the following error while deleting a FB Contact


Content JS ERROR at app://communications.gaiamobile.org/contacts/js/fb/fb_data.js:292 in errorRemove: FB Data: Error while removing  100000466370089 :  ConstraintError
E/GeckoConsole(  477): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/views/form.js:545 in errorDelete: Error removing the contact
blocking-b2g: --- → 1.4?
I am no longer able to repro the issue in 1.3 or 1.1. Seems to be fixed.

Environmental Variables:
Device: Buri v1.1 Moz RIL
BuildID: 20140306041201
Gaia: 44a2ddf63373f8e95c784faf4ed4d60081699c61
Gecko: 1421a6b7fc51
Version: 18.0
Firmware Version: v1.2-device.cfg

Environmental Variables:
Device: Buri v1.3 Moz RIL
BuildID: 20140313004002
Gaia: 6194def5ceed3f4b9bc9de0ea2c11661cd439a27
Gecko: 9368fd13bfa6
Version: 28.0
Firmware Version: v1.2-device.cfg
Flags: needinfo?(rkuhlman)
In fact, I noticed that using some user I did not get the issue but using another one I do get it and from that point on (it seems that) no matter which Facebook user I delete and import again, the issue reported by rkuhlman takes place :-O

rkuhlman, would you be so kind to retry it again using today's v1.3 build but the same user you used when you noticed the issue, in case you recall it of course. Just to verify if it is a data related issue.

Anyhow, the logs are clear. There is a problem when trying to delete the Facebook contact:
E/GeckoConsole( 6856): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/fb/fb_data.js:274 in errorRemove: FB Data: Error while removing  657065680 :  ConstraintError
E/GeckoConsole( 6856): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/views/form.js:455 in errorDelete: Error removing the contact

Which provoke the error when re-importing the "deleted" Facebook contact:
E/GeckoConsole( 5399): [JavaScript Error: "Content Security Policy: Can't use 'self' if self data is not provided"]
E/GeckoConsole( 5399): [JavaScript Warning: "Content Security Policy: Failed to parse unrecognized source app://communications.gaiamobile.org"]
E/GeckoConsole( 5399): [JavaScript Error: "Content Security Policy: Can't use 'self' if self data is not provided"]
E/GeckoConsole( 5399): [JavaScript Warning: "Content Security Policy: Failed to parse unrecognized source app://communications.gaiamobile.org"]
E/GeckoConsole( 6856): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/fb/fb_contact.js:187 in persist_fb_do/fbReq.onerror: FB: Error while saving Fb data on the Datastore 
E/GeckoConsole( 6856): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/fb/fb_contact.js:151 in doSave/fbReq.onerror: FB: Error while saving on datastore 
E/GeckoConsole( 6856): Content JS ERROR at app://communications.gaiamobile.org/contacts/js/contacts_importer.js:42 in contactSaveError: Error while importing contact:  
E/GeckoConsole( 6856): Content JS WARN at app://communications.gaiamobile.org/contacts/js/fb/fb_data.js:343 in do_Flush: The datastore has not been initialized or is not dirty

I'll investigate the source of the deletion error.
Keywords: qawanted
I am still able to repro the issue on today's build. However, the steps have changed. It appears that the problem occurs when visiting the FB friends list for the third time or later. I am able to repro the issue in several different ways, and the only shared details are that the FB list must be visited three times, and the contact must be manually deleted.

Here are three sets of steps that allowed me to repro the issue:
1) Download all FB contacts.
2) Delete Contact A.
3) Download Contact A again.
4) Delete Contact A again.
5) Attempt to download Contact A. (Error occurs)

1) Download some FB contacts.
2) Download all remaining FB contacts.
3) Delete Contact A.
4) Attempt to download Contact A. (Error occurs)

1) Download Contact A.
2) Delete Contact A.
3) Download Contact A again.
4) Delete Contact A again.
5) Attempt to download Contact A. (Error occurs)
Assignee: gtorodelvalle → jmcf
As per my investigations this is a datastore issue. The issue can be reproduced as follows

insert a record on a datastore with a custom id
delete such a record from the datastore
insert the same record another with the same custom id
delete one more time the record. Then you will get a 'ConstraintError' 

Note, that the cycle, insert, delete, insert, might need to be done several times in order to reproduce it.
Flags: needinfo?(amarchesini)
Attached patch loop.patchSplinter Review
I don't think the problem is in the datastore. This mochitest does this operation 100 times and no errors are shown.

are you sure that you wait for the promise callback before doing the next operation?
Flags: needinfo?(amarchesini)
QA Contact: rkunkel
On the build marked "Last Blocked", Facebook contacts can not be fully deleted, which blocks checking of this issue. Following the string of dupes about imported Facebook contacts not being able to be deleted, earlier testing of this issue seems to be blocked by Bug 931711.

Nightly Regression Window:

Last Blocked Environmental Variables:
Device: Buri
BuildID: 20140117004005
Gaia: a81ccdc53e45a6adeaae423e104e91bcc1e12b0e
Gecko: 2c033140eff4
Version: 28.0a2
Base Image: V1.2-device.cfg

First Verified Broken Environmental Variables:
Device: Buri
BuildID: 20140118004001
Gaia: 50d6487d4d15efda942c934570e6fdfb91f6fe2e
Gecko: 9561abd10c52
Version: 28.0a2
Base Image: V1.2-device.cfg

Blocked Gaia/First Broken Gecko: Issue is blocked.
Gaia: a81ccdc53e45a6adeaae423e104e91bcc1e12b0e
Gecko: 9561abd10c52

First Broken Gaia/Blocked Gecko: Issue DOES reproduce.
Gaia: 50d6487d4d15efda942c934570e6fdfb91f6fe2e
Gecko: 2c033140eff4

Gaia Pushlog: https://github.com/mozilla-b2g/gaia/compare/a81ccdc53e45a6adeaae423e104e91bcc1e12b0e...50d6487d4d15efda942c934570e6fdfb91f6fe2e

If there is nothing of use in the provided pushlog, I could also find the window between the last verified working build and the first blocked build if requested.
It's a gecko bug. The auto increment key for the revision object store doesn't work and an existing key is reused. This causes a ConstrainError. I am able to reproduce this issue 100% of the times just on a real device: mochitests, oop mochitests, b2g-desktop they work.

Still debugging.
Assignee: jmcf → amarchesini
triage: 1.4+ regression
blocking-b2g: 1.4? → 1.4+
Component: Gaia::Contacts → DOM: Device Interfaces
Product: Firefox OS → Core
Version: unspecified → 30 Branch
Duplicate of this bug: 986424
Andrea and I spoke about this earlier and he's still debugging here.
It seems that patch 1 for bug bug 970303 fixes this issue. If someone can confirm it, we can mark this bug as duplicate.
Depends on: 970303
Jason, can QA help confirm Andreas theory above?
Flags: needinfo?(jsmith)
Keywords: qawanted
QA Contact: rkunkel → rkuhlman
(In reply to Johnny Stenback (:jst, jst@mozilla.com) from comment #15)
> Jason, can QA help confirm Andreas theory above?

Sure - we can retest this post landing of bug 970303.
Flags: needinfo?(jsmith)
Going to hold off on the qawanted request for now until bug 970303 lands.
Keywords: qawanted
For the record, bug 970303 has a reviewed patch but can't land until its dependent bug 981938 is done. The current ETA for that (from chatting with Ted on irc) is later this week.
Still waiting on dependencies landing.  Ted has a re-worked patch and Ben is likely able to do the review early this week.
Should be fixed now. Marking qawanted to retest.
Keywords: qawanted
I cannot reproduce this issue using the steps from comment 6 on the latest Buri v1.4 mozRIL BuildID: 20140414000201.

Gaia: 8dff633372022723e2ebad17fe3c826436b3b258
Gecko: bc14179fc49c
Version: 30.0a2
Firmware Version: v1.2-device.cfg
Keywords: qawanted
Marking fixed per landing of the dependency.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
tested and working
1.5 
Gecko fa7c5ad
Gaia 7c73c66
Status: RESOLVED → VERIFIED
Target Milestone: --- → mozilla31
You need to log in before you can comment on or make changes to this bug.