Hi there,
We've been trying to do XSLT transformations in a multi-threaded (Zope
2) situation. On 1.3.6 this won't work, but 2.0.x is supposed to have
support for this. Unfortunately we're getting memory errors from within
XSLT.__call__, and we think this is the problem:
transform_ctxt = xslt.xsltNewTransformContext(self._c_style, c_doc)
if transform_ctxt is NULL:
_destroyFakeDoc(input_doc._c_doc, c_doc)
python.PyErr_NoMemory()
For some reason this sometimes works, sometimes fails; it doesn't always
do this, so we suspect perhaps we're already in a copied XSLT sheet (by
_copyXSLT) when this happens.
We're also wondering about the threading strategy of 2.1.x; the copyXSLT
code is removed. Is there a new strategy? I couldn't find anything about
it in CHANGES.txt. I mean, I wouldn't be unhappy with a new strategy as
actually re-parsing the stylesheet each time this gets called from a
different thread is rather expensive (the stylesheet isn't cached as far
as I can see). What's the new strategy, if any?
(Unfortunately 2.1.x also gives us an error, though a different one. I
don't have this error handy here.)
We're trying to reduce this to a simpler test case that demonstrates the
problem but we're having a hard time so far. Any hints would be welcome.
Regards,
Martijn