You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Paul Joseph Davis (JIRA)" <ji...@apache.org> on 2009/10/25 00:27:59 UTC

[jira] Commented: (COUCHDB-542) Fix for COUCHDB-288 makes JS_MaybeGC not called

    [ https://issues.apache.org/jira/browse/COUCHDB-542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12769726#action_12769726 ] 

Paul Joseph Davis commented on COUCHDB-542:
-------------------------------------------

Mike,

Good catch on that. When I wrote the patches that ended up with what we have now I was more worried about getting the thing to compile properly for all the different versions of Spidermonkey than anything else. I didn't even dig deep enough to see that I was supposed to be setting up a signal handler to call that periodically.

The more than I read about this the more I think the proper fix is to just ixnay the whole callback situation and forget that it ever existed. For reference, my knowledge of that callback is that it's used to prevent infinite loop scripts as well as trigger garbage collection periodically.

CouchDB solves the runaway script issue by requiring that all communication to external servers complete in a defined set of time (default of 5 seconds). When a script exceeds this threshold its forcibly terminated by the Erlang VM and eventually replaced when needed.

As to garbage collection, the current protocol runs the "reset" command each time an OS process is retrieved from the pool. At this point JS_GC() is called forcing collection. JS_MaybeGC is also called for every line of input which will save us with long checkouts during things like view building and _changes filtering.

So, yeah, I think I just convinced myself that we should probably just delete the whole thing. Unless of course I'm missing a case where having JS_MaybeGC calls are required and not being called. What do you think?

> Fix for COUCHDB-288 makes JS_MaybeGC not called
> -----------------------------------------------
>
>                 Key: COUCHDB-542
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-542
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>            Reporter: Mike Hommey
>
> The fix for COUCHDB-288 only basically replaces JS_SetBranchCallback with JS_SetOperationCallback, which is not enough for the callback to be triggered. The problem is that basically, the operation callback API has now nothing to do with the previous branch callback API, and is not called at each branch call at the JS level. Actually, it is not called at all, except if JS_TriggerOperationCallback is used. Typically, this needs to be done either from a signal handler or a watchdog thread, in which case the test inside the callback is pretty pointless.
> See http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/a4d1fe147761aacb/e61d2592faf4ef72?lnk=gst&q=js_setoperationcallback#e61d2592faf4ef72 for reference.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.