Here are some additional behavior changes that I am noticing between the 2 versions .. In the newer version, I notice lots of null strings being sent continuously from the couchdb server to the view server. My view server loop looks like the following :- while (true) { s = inputstreamreader.readLine toJson(s) match { //.. process reset, add_fun etc. } } With the new version, I find lots of null strings coming in to "s", which makes me include something like the following .. while (true) { s = inputstreamreader.readLine if (s == null) // ignore else toJson(s) match { //.. process reset, add_fun etc. } } And this null business is really huge. Has there been any change in the protocol between the couchdb server and the view server ? I suspect that these null exchanges are taking up lots of cycles which result in process time out in the new version. I do not get this null stuff with the older version. Is there any chance of such happening with the changes that have been done in couch_query_servers.erl ? Thanks. - Debasish On Sat, Sep 19, 2009 at 11:34 PM, Debasish Ghosh wrote: > actually my ["reset"] is not expensive at all .. it just has a array.clear > kind of call. > Just another observation when I run in debug mode I find that there are > quite a few cases of OS Process Error {os_process_error, "OS process timed > out."} being recorded in couch.log. I do not get this when I am running the > earlier version. However no unnatural things appear in couchdb.stderr. My > current setting of os_process_timeout is 20000 .. I guess that's 20 secs .. > > Thanks. > - Debasish > > > On Sat, Sep 19, 2009 at 10:27 PM, Chris Anderson wrote: > >> On Sat, Sep 19, 2009 at 5:13 AM, Debasish Ghosh >> wrote: >> > Hi - >> > As I have mentioned previously I have been working on a Scala driver for >> > CouchDB, which also includes a Query Server. I was working with an April >> > snapshot of 2009/04/23. This worked fine for all the views and >> validations >> > that I have written.Things were running fine and I could write >> map/reduce >> > and validation functions in Scala. >> > Recently I tried to upgrade to trunk. Suddenly the views and validations >> > became very very slow. After some fact finding, I tried to poke into * >> > couch_query_servers.erl*, since that seemed to be the obvious area to >> look >> > into. I may be worng though, but it was a blind guess. >> > I noticed that previously I was working with *revision 749852* of the >> file, >> > which delivered the goods for me. Then when I faced problems with the >> trunk, >> > I started doing a git reset to earlier versions of this file. Now I find >> > that it looks like the performance problem starts from *revision 780165* >> of >> > this file. Have a look at >> > >> http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_query_servers.erl?r1=780165&r2=749852&diff_format=hfor >> > the difference. Looks like there have been some major changes. I am >> > just >> > wondering if this change has anything to do with the performance issue. >> > >> >> A quick scan of that diff suggests that the only real behavior change >> that should effect you is the ["reset"] call for recycled processes. >> Maybe reset is expensive in your implementation? >> >> BTW, have you tried running: >> >> spec test/query_server_spec.rb -f specdoc --color >> >> It should be simple to extend that test suite to test your scala >> server. If there are patches we can make to make it easier to >> integrate outside projects with the query server test suite, I'm happy >> to help there as well. >> >> > Any help, pointer will be appreciated. >> > >> > Thanks. >> > - Debasish >> > >> >> >> >> -- >> Chris Anderson >> http://jchrisa.net >> http://couch.io >> > >