Closed Bug 437529 Opened 17 years ago Closed 17 years ago

Async.Generator errors: "missing a 'yield' call", "this.generator is null"

Categories

(Cloud Services :: General, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: myk, Assigned: myk)

References

Details

Attachments

(1 file)

I'm seeing a bunch of Async.Generator errors after syncing the same profile a few times: 2008-06-05 16:23:02 Async.Generator ERROR Async method 'Engine__sync' is missing a 'yield' call (or called done() after being finalized) 2008-06-05 16:23:02 Async.Generator ERROR Async method 'WeaveSvc__syncEngine' is missing a 'yield' call (or called done() after being finalized) 2008-06-05 16:23:02 Async.Generator ERROR Async method 'WeaveNotifyWrapper' is missing a 'yield' call (or called done() after being finalized) 2008-06-05 16:23:02 Async.Generator ERROR Async method 'WeaveSync__sync' is missing a 'yield' call (or called done() after being finalized) 2008-06-05 16:23:02 Async.Generator ERROR Async method 'WeaveNotifyWrapper' is missing a 'yield' call (or called done() after being finalized) 2008-06-05 16:23:02 Async.Generator ERROR Exception: TypeError: this.generator is null 2008-06-05 16:23:02 Async.Generator ERROR Exception: this.generator is null 2008-06-05 16:23:02 Async.Generator ERROR Async method 'WeaveLockWrapper' is missing a 'yield' call (or called done() after being finalized)
Removing TabStore_ApplyCommands, which overrides Store_ApplyCommands, got rid of "Exception: TypeError: this.generator is null", but the others are still there.
This turns out to be a regression from changeset 397c72376858 (2008-05-28 20:11 -0700), "Dan Mills - Add and start using an object to represent a remote resource (file), and a server object to hold them. Resources will attempt to retry network operations if they fail." In the previous revision of engines.js, Engine::_sync yields after it puts the status file to the server. In the later revision, however, which changes the API for putting files, the function doesn't yield there, so it calls self.done() before the PUT request completes. Then, when the PUT request completes, it attempts to call back the function, but the function has already been finalized, so the exception gets thrown. Here's the fix that resolves the problem. I'll check this in shortly.
Assignee: nobody → myk
Status: NEW → ASSIGNED
changeset: 519:23744bd48479 date: Wed Jun 11 17:44:08 2008 -0700 summary: bug 437529: yield after starting to put the status file to the server so we don't finalize the sync until the PUT request completes
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Oops. Sorry for the regression!
Component: Weave → General
Product: Mozilla Labs → Weave
QA Contact: weave → general
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: