Hi All,

Sorry for the slight delay about a patch (on holiday atm).  I've created a
patch and a test case that reproduces the threading issues on a single cpu
machine (based on Vinh's test).  It runs 30 resources each sending 100
messages on startup to a subscriber which simply counts.  The change to
Vinh's test is that there is no tcp connections taking place.  This seems to
be a cause of difficulty for reproducing on a single cpu box (easier for the
scheduler to take care of I assume).

Without the patch it will recieve between 1500 and 2000 messages on my
laptop (probably much less with a >= dual cpu box).  Simply unpack into an
eclipse project run the InlineIsolationLayer main and it will run the test.
The aim is to retrieve all 3000 messages.  I have included a single patched
jar for all of the muse modules, I have not included the 2.2.0 jars as I
expect everyone will already have them.  This should make it easier for
testing.  Needless to say this still requires a large amount of testing on
multi core / smp boxes.

Also included is a file (tsPatch.txt) which is a svn patch against the
branches/2.2.0/trunk.  This includes my proposed tls based solution and also
the getFirstChild()/getNextSibling() solution.  Using the tls
DocumentBuiders alone seems to make the 3000 possible but I suspect it will
not work on other cpus since the getChildren in xerces is non thread safe
(hence the introduction of the NodeChildrenIterator).

Cheers,
Chris

PS (The NodeChildrenIterator doesn't implement Iterator as this requires
casting, and as a one off it made no sense to suffer the impact.  If this is
preferred for stylistic or correctness reasons I'm fine to change it.)

Reply via email to