On Wed, Jun 25, 2008 at 7:35 PM, hemant <gethemant at gmail.com> wrote:
> On Thu, Jun 26, 2008 at 3:03 AM, Dan Herrera <dan at revelationglobal.com> wrote:
>> Greetings,
>>>> We are currently working on offloading some long running tasks to
>> backgroundrb, and we are using the thread_pool.defer method. Our
>> intent originally was to have one worker running, and have it process
>> requests as they came in in threads, so that we don't have a lot of
>> these workers running concurrently.
>>>> It seems in our testing that backgroundrb is not closing these worker
>> threads as they finish, and will eventually stop queueing new requests
>> with the message: FATAL: sorry, too many clients already.
>>>> Since we intend to open just one worker, and have it queue and process
>> requests as they come in inside the thread pool, how do we close these
>> threads once we are finished? Or am I misunderstanding how this model
>> should work, and we should be instantiating a new worker per request?
>>>> Here is the code we are using:
>>>>http://pastie.org/private/jnyues8lwlhvoqbmqd8w>>>> Those worker threads are always active in thread pool ( or rather
> waiting for new tasks in queue object, enqueued via #defer method) and
> hence there is no point in stopping them, once they are done, since if
> no work is there in queue, they will anyways sleep.
>> On which line you are getting the error? Can you paste full exception?
> Could be some issue with Queue class.
Here is the full trace:
http://pastie.org/222713
We get this error when running the test several times in a row. It
could be that our test is not properly closing the connection to
backgroundrb. The test reports that the error occurs in the
before(:all) block in an RSpec.
Thanks for your help!
dan