Hi Christian,

Thank you to answer so fast.

I would like to notify that the behavior of the Reviewboard, specially when 
extensions are used is very 'strange' when Apache server is in MPM worker 
mode instead of MPM Prefork.

When in MPM Worker, i noticed that the HTTP request are setup as:
wsgi.multithread : True and wsgi.multiprocess : True.
Ok. It's normal according to the mod_wsgi document ( read 
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading )

The issues i found (described in the topic 
https://groups.google.com/forum/#!topic/reviewboard/XL0E9Sb22w0 ) is we 
have sometimes a lot of errors ('[Review Board] ERROR (EXTERNAL IP)' 
emails) because some object does not exist for example. I tried to analyze 
the problem and perhaps i found the cause of these issues.

When the wsgi.multithread is set as True (so for example when Apache MPM 
Worker is used), the HTTP requests received by the Reviewboard middleware 
(as for example, the djblet middleware which checks the expiration of the 
extension manager) can be processed in parallel in each thread BUT also in 
the same process. So, when an expiration is detected (by comparing key with 
cache) the extension manager is reloaded (so means that ALL extensions have 
been reloaded). The problem is that if an other HTTP request is processed 
at the same time in other thread BUT in the same process (so normally 
memory is shared between threads), this HTTP request can have some issues 
because the loading of the extension is not finished. That's why, i think, 
i received a lot of '[Review Board] ERROR (EXTERNAL IP)' errors. The 
process_request() method of the ExtensionsMiddleware class (in djblet 
package) seems to not include synchronization mechanism.

I din't check yet, if you updated the Djblet library (we used the 0.7.11 
version, and Reviewboard 1.7.6), but i think it's very important to check 
the Apache configuration and use the Apache Prefork MPM to avoid the issues 
we encountered. Because in this case, the multithread mechanism is not used 
(wsgi.multithread= False) or synchronization mechanism shall be included in 
the process_request() of each middleware.

That's why i asked you the recommended Apache MPM to use with Reviewboard.

Don't worry about the other topic i created.
I can understand you have no time. A new released of Reviewboard has been 
out recently.

We planned to upgrade our Reviewboard application, but i saw you have 
changed some things, especially the extension functionality.
So i need to check if our extensions are always compatible.



Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
Happy user? Let us know at http://www.reviewboard.org/users/
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to