ProcessPool.callRemote Deferred sometimes fires with None instead of result

Bug #571334 reported by Jean-Paul Calderone
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ampoule
Fix Released
Undecided
Unassigned

Bug Description

This is a weird behavior I ran into when issuing a new job from an errback on an earlier job. The attached illustrates better than I can do in English. The expected result is to see a result of {}, though, since that is what the "Fast" command in the worker returns. Instead, the result is None.

Related branches

Revision history for this message
Jean-Paul Calderone (exarkun) wrote :
Revision history for this message
Jean-Paul Calderone (exarkun) wrote :

Another clue here is that the example program also logs an unhandled error. However, it seems to me that it is properly handling the error.

Revision history for this message
Itamar Turner-Trauring (itamarst) wrote :

I am unable to reproduce this problem; has the underlying bug been fixed?

Revision history for this message
dialtone (dialtone) wrote : Re: [Bug 571334] ProcessPool.callRemote Deferred sometimes fires with None instead of result

Not by me. I guess the bug was invalid then.

On 7 Sep 2012, at 09:16, Itamar Turner-Trauring <email address hidden> wrote:

> I am unable to reproduce this problem; has the underlying bug been
> fixed?
>
> --
> You received this bug notification because you are subscribed to
> Ampoule.
> https://bugs.launchpad.net/bugs/571334
>
> Title:
> ProcessPool.callRemote Deferred sometimes fires with None instead of
> result
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/ampoule/+bug/571334/+subscriptions

--
Valentino Volonghi
http://www.adroll.com

Revision history for this message
Colin Watson (cjwatson) wrote :

I can still reproduce this or a similar issue quite easily with exarkun's attached program after "pip install ampoule", although it only happens around one time in three or four for me. If I pass min=1, max=1 when creating the process pool, it happens every time.

The problem is that when a process reaches its timeout, then _returned ignores the fact that it was called as an errback and adds the child back to the ready set; if a new call happens to be dispatched to that particular process then it fails immediately.

Revision history for this message
Colin Watson (cjwatson) wrote :

This was fixed in ampoule 19.12.0: https://github.com/twisted/ampoule/pull/30

Changed in ampoule:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.