[ 
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.

Reply via email to