You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by Massimo Manghi <mx...@apache.org> on 2014/08/21 01:37:07 UTC
experimental module development status
Hi guys
I did more commits to the experimental module and I think it's time to
report about it.
First of all if you want to participate in the process of development
and testing you're welcome.
To build this module just add to your ./configure arguments also the switch
--with-rivet-core=experimental
then run the build process in the usual way
the build process will result in the creation of a mod_rivet.so module
along with 3 different bridges:
-- rivet_prefork_mpm.so: for the prefork MPM
-- rivet_worker_mpm.so and rivet_aprthreads_mpm.so for the threaded
'worker' MPM
The 2 threaded bridges implement 2 alternate approaches to thread
handling, the first creating its own pool of threads controlling Tcl
interpreters and the latter simply exploiting the ability of APR threads
to create private storage and to have it cleaned up by a callback when a
thread exits. This feature was exploited to create Tcl interpreters in a
lazy way within Apache controlled threads, thus getting around the
problem of the lack of a thread exit callback in Apache
The good news is that the module works well with the prefork MPM (thus
reproducing the behavior of the current stable module).
The downside is that threaded bridges are not fully functional yet.
Even though the threaded bridges don't fail in an obvious way they
miserably fail within Tcl_EvalObjEx when the workload soars and the
concurrency level grows.
I will work on this (George Petasis is giving me some help). In the
meanwhile threaded bridges can be made working anyway, at the cost of
performance loss, passing to configure also the switch
--enable-requests-serialization
which is meant to improve single thread debugging by serializing threads
execution, but it also prevents process crashes or other Tcl internal
errors.
To try a certain bridge you have to select the shared library by
defining the environmental variable RIVET_BRIDGE_MPM before starting
Apache. The env variable must have the full path to the bridge module
you want to use
e.g.
RIVET_MPM_BRIDGE="<path-to-rivet-bridge>/rivet_worker_mpm.so";export
RIVET_MPM_BRIDGE
-- Massimo
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-dev-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-dev-help@tcl.apache.org