incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guby <guby.m...@gmail.com>
Subject Re: Updating views on save
Date Wed, 30 Apr 2008 13:09:35 GMT
Now this morning there are 42 of them... crazy...

I don't think they receive any updates from the server.

They are not zoombie processes either, and clearly still belong to  
couchdb, because when I quit couchDB the processes ended too!
But it seems it somehow starts a lot of new processes for some reason!
I actually remember that was sometimes the case on my local  
development machine as well using the shell script you sent me!

Best regards
Sebastian



On Apr 30, 2008, at 8:08 AM, Jan Lehnardt wrote:

>
> On Apr 29, 2008, at 23:13, Guby wrote:
>> Hm...
>> On my server I just noticed CouchDB had started 14 instances of the  
>> DbUpdateNotificationProcess!
>> Is this normal, and in case, why so many? And why do they all keep  
>> running when the CouchDB is somewhat idle and doesn't need them at  
>> all?
>
> CouchDB should only start one instance. It will kill and spawn a new
> one in case of a problem. Maybe you have old instances of the
> daemon that decided not to die and CouchDB happily spawned
> fresh copies. What's the state of all the processes? Do they all
> receive updates?
>
> Cheers
> Jan
> --
>
>>
>>
>> Best regards
>> Sebastian
>>
>>
>>
>> On Apr 28, 2008, at 1:55 PM, Guby wrote:
>>
>>> Added to wiki: http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate
>>> Edit as you see fit.
>>>
>>> S
>>>
>>>
>>> On Apr 28, 2008, at 1:14 PM, Guby wrote:
>>>
>>>> Sure!
>>>> That makes more sense than having it here in the mailinglist :)
>>>>
>>>> S
>>>>
>>>> On Apr 28, 2008, at 12:58 PM, Jan Lehnardt wrote:
>>>>
>>>>>
>>>>> On Apr 28, 2008, at 17:18, Guby wrote:
>>>>>> I am very happy with the way this discussion turned out!
>>>>>> Now I have written a tiny ruby script that updates the views  
>>>>>> for every tenth document update and at most once every second  
>>>>>> under heavy updates.
>>>>>> Here on my development machine it uses about 1.2 mb of ram, and 

>>>>>> I can live with that.
>>>>>>
>>>>>> I'll include it here in case somebody reads this discussion in  
>>>>>> the future and needs a similar script.
>>>>>
>>>>> Would you mind putting it on the Wiki? For the obvious benefits :)
>>>>>
>>>>> Good work there,
>>>>>
>>>>> Cheers
>>>>> Jan
>>>>> --
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks again for all the help and for a great database!
>>>>>>
>>>>>> Best regards
>>>>>> Sebastian
>>>>>>
>>>>>>
>>>>>> **********************************
>>>>>>
>>>>>> CONFIG: couch.ini:
>>>>>> add line:
>>>>>> DbUpdateNotificationProcess=/PATH/TO/view_updater.rb
>>>>>>
>>>>>> **********************************
>>>>>>
>>>>>> SCRIPT: view_updater.rb
>>>>>>
>>>>>> #!/usr/bin/ruby
>>>>>>
>>>>>> ###
>>>>>> # CONF
>>>>>> ###
>>>>>>
>>>>>> # The smallest amount of changed documents before the views are 

>>>>>> updated
>>>>>> MIN_NUM_OF_CHANGED_DOCS = 10
>>>>>>
>>>>>> # URL to the DB on the CouchDB server
>>>>>> # Only supports one database at the moment as that is what I need
>>>>>> # Should be easy to improve for several databases if needed
>>>>>> URL = "http://localhost:5984/kleio"
>>>>>>
>>>>>> # Set the minimum pause between calls to the database
>>>>>> PAUSE = 1 # seconds
>>>>>>
>>>>>> # One for each design document
>>>>>> VIEWS = ["feed/to_check",
>>>>>>    "feed_entries/list_for_user_by_feed",
>>>>>>    "subscription/number_of_subscriptions",
>>>>>>    "subscription_requests/request",
>>>>>>    "user/by_email",
>>>>>>    "couch_object_has_many_relations/related_documents"]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ###
>>>>>> # "MAIN LOOP"
>>>>>> ###
>>>>>>
>>>>>> run = true
>>>>>> number_of_changed_docs = 0
>>>>>>
>>>>>> threads = []
>>>>>>
>>>>>> # Updates the views
>>>>>> threads << Thread.new do
>>>>>>
>>>>>> while run do
>>>>>>
>>>>>> if number_of_changed_docs >= MIN_NUM_OF_CHANGED_DOCS
>>>>>>
>>>>>> number_of_changed_docs = 0
>>>>>>
>>>>>> VIEWS.each do |view|
>>>>>>   `curl #{URL}/_view/#{view}?count=0`
>>>>>> end
>>>>>>
>>>>>> end
>>>>>>
>>>>>> sleep PAUSE
>>>>>>
>>>>>> end
>>>>>>
>>>>>> end
>>>>>>
>>>>>> # Receives the update notification from CouchDB
>>>>>> threads << Thread.new do
>>>>>>
>>>>>> while run do
>>>>>>
>>>>>> update_call = gets
>>>>>>
>>>>>> # When CouchDB exits the script gets called with
>>>>>> # a never ending series of nil
>>>>>> if update_call == ni


Mime
View raw message