Closed Bug 1273343 Opened 8 years ago Closed 8 years ago

POST failures uploading outgoing items don't log a failure reason

Categories

(Firefox :: Sync, defect, P1)

defect

Tracking

()

RESOLVED FIXED
Firefox 51
Tracking Status
firefox51 --- fixed

People

(Reporter: markh, Assigned: markh)

Details

(Whiteboard: [sync-quality])

Attachments

(1 file)

via TPS we are seeing logs like:

> 1463445396414	Sync.Collection	DEBUG	POST Length: 9471
> 1463445396608	Sync.Status	DEBUG	Status for engine prefs: error.engine.reason.unknown_fail
> 1463445396609	Sync.Status	DEBUG	Status.service: success.status_ok => error.sync.failed_partial
> 1463445396609	Sync.ErrorHandler	DEBUG	prefs failed: Error (resource://services-sync/resource.js:405:19) JS Stack trace: waitForSyncCallback@async.js:98:7 < Res__request@resource.js:398:14 < Res_post@resource.js:439:12 < newPostQueue/poster@record.js:635:14 < flush@record.js:703:23 < SyncEngine.prototype._uploadOutgoing@engines.js:1506:7 < SyncEngine.prototype._sync@engines.js:1557:7 < WrappedNotify@util.js:146:21 < Engine.prototype.sync@engines.js:670:5 < _syncEngine@enginesync.js:213:7 < sync@enginesync.js:163:15 < onNotify@service.js:1262:7 < WrappedNotify@util.js:146:21 < WrappedLock@util.js:101:16 < _lockedSync@service.js:1252:12 < sync/<@service.js:1244:14 < WrappedCatch@util.js:75:16 < sync@service.js:1232:5 < TPS__Sync@tps.jsm:926:5 < TPS.RunNextTestAction@tps.jsm:607:7 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < Res_post@resource.js:439:12 < newPostQueue/poster@record.js:635:14 < flush@record.js:703:23 < SyncEngine.prototype._uploadOutgoing@engines.js:1506:7 < SyncEngine.prototype._sync@engines.js:1557:7 < WrappedNotify@util.js:146:21 < Engine.prototype.sync@engines.js:670:5 < _syncEngine@enginesync.js:213:7 < sync@enginesync.js:163:15 < onNotify@service.js:1262:7 < WrappedNotify@util.js:146:21 < WrappedLock@util.js:101:16 < _lockedSync@service.js:1252:12 < sync/<@service.js:1244:14 < WrappedCatch@util.js:75:16 < sync@service.js:1232:5 < TPS__Sync@tps.jsm:926:5 < TPS.RunNextTestAction@tps.jsm:607:7 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5
> 1463445396610	Sync.Engine.Passwords	DEBUG	First sync, uploading all items
> 1463445396610	Sync.Engine.Passwords	INFO	0 outgoing items pre-reconciliation
> 1463445396612	Sync.BrowserIDManager	DEBUG	_ensureValidToken already has one
> 1463445396791	Sync.Status	DEBUG	Status for engine passwords: error.engine.reason.unknown_fail
> 1463445396791	Sync.Status	DEBUG	Status.service: error.sync.failed_partial => error.sync.failed_partial
> 1463445396791	Sync.ErrorHandler	DEBUG	passwords failed: Error (resource://services-sync/resource.js:405:19) JS Stack trace: waitForSyncCallback@async.js:98:7 < Res__request@resource.js:398:14 < Res_get@resource.js:425:12 < SyncEngine.prototype._processIncoming@engines.js:1135:18 < SyncEngine.prototype._sync@engines.js:1555:7 < WrappedNotify@util.js:146:21 < Engine.prototype.sync@engines.js:670:5 < _syncEngine@enginesync.js:213:7 < sync@enginesync.js:163:15 < onNotify@service.js:1262:7 < WrappedNotify@util.js:146:21 < WrappedLock@util.js:101:16 < _lockedSync@service.js:1252:12 < sync/<@service.js:1244:14 < WrappedCatch@util.js:75:16 < sync@service.js:1232:5 < TPS__Sync@tps.jsm:926:5 < TPS.RunNextTestAction@tps.jsm:607:7 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < Res_get@resource.js:425:12 < SyncEngine.prototype._processIncoming@engines.js:1135:18 < SyncEngine.prototype._sync@engines.js:1555:7 < WrappedNotify@util.js:146:21 < Engine.prototype.sync@engines.js:670:5 < _syncEngine@enginesync.js:213:7 < sync@enginesync.js:163:15 < onNotify@service.js:1262:7 < WrappedNotify@util.js:146:21 < WrappedLock@util.js:101:16 < _lockedSync@service.js:1252:12 < sync/<@service.js:1244:14 < WrappedCatch@util.js:75:16 < sync@service.js:1232:5 < TPS__Sync@tps.jsm:926:5 < TPS.RunNextTestAction@tps.jsm:607:7 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5 < TPS.RunNextTestAction@tps.jsm:633:5

From which we can deduce that a POST failed, but can't deduce why. We need to ensure the logs capture the reasons - at least for the obvious 2 of "can't connect" and "http request failed". I'm fairly sure this isn't limited to POSTs
Flags: firefox-backlog+
Priority: P2 → P1
Whiteboard: [sync-quality]
Assignee: nobody → markh
Comment on attachment 8784728 [details]
Bug 1273343 - make more log noise on resource exceptions and errors.

https://reviewboard.mozilla.org/r/74062/#review71954

::: services/sync/modules/resource.js:391
(Diff revision 1)
>        return Async.waitForSyncCallback(cb);
>      } catch (ex) {
>        if (Async.isShutdownException(ex)) {
>          throw ex;
>        }
> +      this._log.warn("request to ${url} failed: ${ex}", {url: this.uri.spec, ex});

This will typically cause 2 stacks to be written twice - once here, and once at the call site - but the one written here is before it is mangled a few lines below - and this one here does include details of the network error.

Indeed, I think that mangling is the main reason we don't see a sane error already, and the stack here looks fine to me - so I'm really not sure what the code below exists for, but I'm really not up for shaving that yak currently.
Comment on attachment 8784728 [details]
Bug 1273343 - make more log noise on resource exceptions and errors.

https://reviewboard.mozilla.org/r/74062/#review72050

Looks good to me. Eventually getting rid of the mangling might be worthwhile, but it doesn't bother me much either way.

nit: we try and have spaces inside the `{` and `}` of object literals right? r=me if I'm misremembering this or if I'm not and it's fixed.
Attachment #8784728 - Flags: review?(tchiovoloni) → review+
(In reply to Thom Chiovoloni [:tcsc] from comment #3)
> nit: we try and have spaces inside the `{` and `}` of object literals right?

Given how many times I've nitted you on exactly that, that's some sweet justice for you :) Fixed! I also added "action" to the log messages.

Thanks!
Pushed by mhammond@skippinet.com.au:
https://hg.mozilla.org/integration/autoland/rev/ed6a8987ada4
make more log noise on resource exceptions and errors. r=tcsc
Pushed by mhammond@skippinet.com.au:
https://hg.mozilla.org/integration/autoland/rev/717ef7ea17e8
make more log noise on resource exceptions and errors. r=tcsc
https://hg.mozilla.org/mozilla-central/rev/717ef7ea17e8
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 51
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: