You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Tom Fennelly <to...@gmail.com> on 2007/02/26 20:29:53 UTC

Templates/Transformers + thread safety???

Hi.

While running some tests I noticed something strange - applying 
transformations concurrently + unsynchronized using the same template 
instance *appears* to be yielding unexpected results i.e. if I 
synchronize transformations across the threads (synchronize on the 
template instance) I have no issues.  I'm quite sure I'm doing something 
wrong here but haven't found the answer.

I packaged up the test in a maven2 project 
(http://milyn.codehaus.org/xalan/xalan-test.zip).  If you run the junit 
test from the download you'll not see any errors because the transform 
step is synchronized on the template instance (XsltConcurrentTest.java, 
line 168).  If you remove the synchronization, you start getting errors.

My understanding was that I should be able to load a stylesheet into a 
single instance of javax.xml.transform.Templates and then, on each 
Thread, create and use new Transformer instance through a call to 
Templates.newTransformer().transform(...).  Is this wrong??

Environment:

    * Windows XP
    * jdk1.5.0_10
    * Xalan 2.7.0
    * Xerces 2.7.1
    * xml-apis 1.3.02

I have taken a look around for an answer to this, but I fear that it may 
be something silly I'm doing, so I apologize in advance :-[

Regards,

Tom.

Re: Templates/Transformers + thread safety???

Posted by Tom Fennelly <to...@gmail.com>.
Done:
https://issues.apache.org/jira/browse/XALANJ-2371

Erin Harris wrote:
>
> Hi Tom,
>
> I can't see anything wrong with your code so it looks like a bug. 
>  Please open a JIRA issue here: 
> https://issues.apache.org/jira/browse/XALANJ
>
> Thanks.
>
> Erin Harris
>
>
>
>
> *Tom Fennelly <to...@gmail.com>*
>
> 28/02/2007 10:22 AM
>
> 	
> To
> 	Erin Harris/Toronto/IBM@IBMCA
> cc
> 	xalan-j-users@xml.apache.org
> Subject
> 	Re: Templates/Transformers + thread safety???
>
>
>
> 	
>
>
>
>
>
> Hi Erin.
>
> I spotted it initially on a dual core (Dell D820), but I've also run and
> reproduced it on a single processor machine (I just verified this again
> before replying).
>
> What are you think?  Some sort of shared memory issue or something?  Is
> it something I'm doing do you think?
>
> T.
>
>
> Erin Harris wrote:
> >
> > Hi Tom,
> >
> > I couldn't reproduce the problem using Stream and Xalan 2.7.0 but I
> > could reproduce it using DOM. Are you on a multiprocessor machine or a
> > single processor machine?  
> >
> > Thanks.
> >
> > Erin Harris
> >
> >
> >
> >
> > *Tom Fennelly <to...@gmail.com>*
> >
> > 27/02/2007 10:23 AM
> >
> >                  
> > To
> >                  Erin Harris/Toronto/IBM@IBMCA
> > cc
> >                  xalan-j-users@xml.apache.org
> > Subject
> >                  Re: Templates/Transformers + thread safety???
> >
> >
> >
> >                  
> >
> >
> >
> >
> >
> > Thanks Erin.
> >
> > I've updated that test download to include testing against stream
> > source/result instances.  Still getting unexpected results on these
> > (stream source/result) when not synschronizing on the template
> > instance.  Zip available at
> > http://milyn.codehaus.org/xalan/xalan-test-v2.zip (zip also includes the
> > milyn jar).
> >
> > Thanks again Erin.
> >
> > Regards,
> >
> > Tom.
> >
> >
> > Erin Harris wrote:
> > >
> > > Hi Tom,
> > >
> > > I couldn't run your test case as I don't have the milyn classes.  Have
> > > you tried using StreamSource and StreamResult to see if you get the
> > > same problem?
> > >
> > > Thanks.
> > >
> > >
> > > Erin Harris
> > >
> > >
> > >
> > >
> > > *Tom Fennelly <to...@gmail.com>*
> > >
> > > 26/02/2007 02:29 PM
> > >
> > >                  
> > > To
> > >                  xalan-j-users@xml.apache.org
> > > cc
> > >                  
> > > Subject
> > >                  Templates/Transformers + thread safety???
> > >
> > >
> > >
> > >                  
> > >
> > >
> > >
> > >
> > >
> > > Hi.
> > >
> > > While running some tests I noticed something strange - applying
> > > transformations concurrently + unsynchronized using the same template
> > > instance *appears* to be yielding unexpected results i.e. if I
> > > synchronize transformations across the threads (synchronize on the
> > > template instance) I have no issues.  I'm quite sure I'm doing
> > > something wrong here but haven't found the answer.
> > >
> > > I packaged up the test in a maven2 project
> > > (_http://milyn.codehaus.org/xalan/xalan-test.zip_).  If you run the
> > > junit test from the download you'll not see any errors because the
> > > transform step is synchronized on the template instance
> > > (XsltConcurrentTest.java, line 168).  If you remove the
> > > synchronization, you start getting errors.
> > >
> > > My understanding was that I should be able to load a stylesheet into a
> > > single instance of javax.xml.transform.Templates and then, on each
> > > Thread, create and use new Transformer instance through a call to
> > > Templates.newTransformer().transform(...).  Is this wrong??
> > >
> > > Environment:
> > >
> > >     * Windows XP
> > >     * jdk1.5.0_10
> > >     * Xalan 2.7.0
> > >     * Xerces 2.7.1
> > >     * xml-apis 1.3.02
> > >
> > > I have taken a look around for an answer to this, but I fear that it
> > > may be something silly I'm doing, so I apologize in advance :-[
> > >
> > > Regards,
> > >
> > > Tom.
> >
>

Re: Templates/Transformers + thread safety???

Posted by Erin Harris <eh...@ca.ibm.com>.
Hi Tom,

I can't see anything wrong with your code so it looks like a bug.  Please 
open a JIRA issue here: https://issues.apache.org/jira/browse/XALANJ

Thanks.

Erin Harris





Tom Fennelly <to...@gmail.com> 
28/02/2007 10:22 AM

To
Erin Harris/Toronto/IBM@IBMCA
cc
xalan-j-users@xml.apache.org
Subject
Re: Templates/Transformers + thread safety???






Hi Erin.

I spotted it initially on a dual core (Dell D820), but I've also run and 
reproduced it on a single processor machine (I just verified this again 
before replying).

What are you think?  Some sort of shared memory issue or something?  Is 
it something I'm doing do you think?

T.


Erin Harris wrote:
>
> Hi Tom,
>
> I couldn't reproduce the problem using Stream and Xalan 2.7.0 but I 
> could reproduce it using DOM. Are you on a multiprocessor machine or a 
> single processor machine? 
>
> Thanks.
>
> Erin Harris
>
>
>
>
> *Tom Fennelly <to...@gmail.com>*
>
> 27/02/2007 10:23 AM
>
> 
> To
>                Erin Harris/Toronto/IBM@IBMCA
> cc
>                xalan-j-users@xml.apache.org
> Subject
>                Re: Templates/Transformers + thread safety???
>
>
>
> 
>
>
>
>
>
> Thanks Erin.
>
> I've updated that test download to include testing against stream
> source/result instances.  Still getting unexpected results on these
> (stream source/result) when not synschronizing on the template
> instance.  Zip available at
> http://milyn.codehaus.org/xalan/xalan-test-v2.zip (zip also includes the
> milyn jar).
>
> Thanks again Erin.
>
> Regards,
>
> Tom.
>
>
> Erin Harris wrote:
> >
> > Hi Tom,
> >
> > I couldn't run your test case as I don't have the milyn classes.  Have
> > you tried using StreamSource and StreamResult to see if you get the
> > same problem?
> >
> > Thanks.
> >
> >
> > Erin Harris
> >
> >
> >
> >
> > *Tom Fennelly <to...@gmail.com>*
> >
> > 26/02/2007 02:29 PM
> >
> > 
> > To
> >                  xalan-j-users@xml.apache.org
> > cc
> > 
> > Subject
> >                  Templates/Transformers + thread safety???
> >
> >
> >
> > 
> >
> >
> >
> >
> >
> > Hi.
> >
> > While running some tests I noticed something strange - applying
> > transformations concurrently + unsynchronized using the same template
> > instance *appears* to be yielding unexpected results i.e. if I
> > synchronize transformations across the threads (synchronize on the
> > template instance) I have no issues.  I'm quite sure I'm doing
> > something wrong here but haven't found the answer.
> >
> > I packaged up the test in a maven2 project
> > (_http://milyn.codehaus.org/xalan/xalan-test.zip_).  If you run the
> > junit test from the download you'll not see any errors because the
> > transform step is synchronized on the template instance
> > (XsltConcurrentTest.java, line 168).  If you remove the
> > synchronization, you start getting errors.
> >
> > My understanding was that I should be able to load a stylesheet into a
> > single instance of javax.xml.transform.Templates and then, on each
> > Thread, create and use new Transformer instance through a call to
> > Templates.newTransformer().transform(...).  Is this wrong??
> >
> > Environment:
> >
> >     * Windows XP
> >     * jdk1.5.0_10
> >     * Xalan 2.7.0
> >     * Xerces 2.7.1
> >     * xml-apis 1.3.02
> >
> > I have taken a look around for an answer to this, but I fear that it
> > may be something silly I'm doing, so I apologize in advance :-[
> >
> > Regards,
> >
> > Tom.
>


Re: Templates/Transformers + thread safety???

Posted by Tom Fennelly <to...@gmail.com>.
Hi Erin.

I spotted it initially on a dual core (Dell D820), but I've also run and 
reproduced it on a single processor machine (I just verified this again 
before replying).

What are you think?  Some sort of shared memory issue or something?  Is 
it something I'm doing do you think?

T.


Erin Harris wrote:
>
> Hi Tom,
>
> I couldn't reproduce the problem using Stream and Xalan 2.7.0 but I 
> could reproduce it using DOM. Are you on a multiprocessor machine or a 
> single processor machine?  
>
> Thanks.
>
> Erin Harris
>
>
>
>
> *Tom Fennelly <to...@gmail.com>*
>
> 27/02/2007 10:23 AM
>
> 	
> To
> 	Erin Harris/Toronto/IBM@IBMCA
> cc
> 	xalan-j-users@xml.apache.org
> Subject
> 	Re: Templates/Transformers + thread safety???
>
>
>
> 	
>
>
>
>
>
> Thanks Erin.
>
> I've updated that test download to include testing against stream
> source/result instances.  Still getting unexpected results on these
> (stream source/result) when not synschronizing on the template
> instance.  Zip available at
> http://milyn.codehaus.org/xalan/xalan-test-v2.zip (zip also includes the
> milyn jar).
>
> Thanks again Erin.
>
> Regards,
>
> Tom.
>
>
> Erin Harris wrote:
> >
> > Hi Tom,
> >
> > I couldn't run your test case as I don't have the milyn classes.  Have
> > you tried using StreamSource and StreamResult to see if you get the
> > same problem?
> >
> > Thanks.
> >
> >
> > Erin Harris
> >
> >
> >
> >
> > *Tom Fennelly <to...@gmail.com>*
> >
> > 26/02/2007 02:29 PM
> >
> >                  
> > To
> >                  xalan-j-users@xml.apache.org
> > cc
> >                  
> > Subject
> >                  Templates/Transformers + thread safety???
> >
> >
> >
> >                  
> >
> >
> >
> >
> >
> > Hi.
> >
> > While running some tests I noticed something strange - applying
> > transformations concurrently + unsynchronized using the same template
> > instance *appears* to be yielding unexpected results i.e. if I
> > synchronize transformations across the threads (synchronize on the
> > template instance) I have no issues.  I'm quite sure I'm doing
> > something wrong here but haven't found the answer.
> >
> > I packaged up the test in a maven2 project
> > (_http://milyn.codehaus.org/xalan/xalan-test.zip_).  If you run the
> > junit test from the download you'll not see any errors because the
> > transform step is synchronized on the template instance
> > (XsltConcurrentTest.java, line 168).  If you remove the
> > synchronization, you start getting errors.
> >
> > My understanding was that I should be able to load a stylesheet into a
> > single instance of javax.xml.transform.Templates and then, on each
> > Thread, create and use new Transformer instance through a call to
> > Templates.newTransformer().transform(...).  Is this wrong??
> >
> > Environment:
> >
> >     * Windows XP
> >     * jdk1.5.0_10
> >     * Xalan 2.7.0
> >     * Xerces 2.7.1
> >     * xml-apis 1.3.02
> >
> > I have taken a look around for an answer to this, but I fear that it
> > may be something silly I'm doing, so I apologize in advance :-[
> >
> > Regards,
> >
> > Tom.
>

Re: Templates/Transformers + thread safety???

Posted by Erin Harris <eh...@ca.ibm.com>.
Hi Tom,

I couldn't reproduce the problem using Stream and Xalan 2.7.0 but I could 
reproduce it using DOM. Are you on a multiprocessor machine or a single 
processor machine? 

Thanks.

Erin Harris





Tom Fennelly <to...@gmail.com> 
27/02/2007 10:23 AM

To
Erin Harris/Toronto/IBM@IBMCA
cc
xalan-j-users@xml.apache.org
Subject
Re: Templates/Transformers + thread safety???






Thanks Erin.

I've updated that test download to include testing against stream 
source/result instances.  Still getting unexpected results on these 
(stream source/result) when not synschronizing on the template 
instance.  Zip available at 
http://milyn.codehaus.org/xalan/xalan-test-v2.zip (zip also includes the 
milyn jar).

Thanks again Erin.

Regards,

Tom.


Erin Harris wrote:
>
> Hi Tom,
>
> I couldn't run your test case as I don't have the milyn classes.  Have 
> you tried using StreamSource and StreamResult to see if you get the 
> same problem?
>
> Thanks.
>
>
> Erin Harris
>
>
>
>
> *Tom Fennelly <to...@gmail.com>*
>
> 26/02/2007 02:29 PM
>
> 
> To
>                xalan-j-users@xml.apache.org
> cc
> 
> Subject
>                Templates/Transformers + thread safety???
>
>
>
> 
>
>
>
>
>
> Hi.
>
> While running some tests I noticed something strange - applying 
> transformations concurrently + unsynchronized using the same template 
> instance *appears* to be yielding unexpected results i.e. if I 
> synchronize transformations across the threads (synchronize on the 
> template instance) I have no issues.  I'm quite sure I'm doing 
> something wrong here but haven't found the answer.
>
> I packaged up the test in a maven2 project 
> (_http://milyn.codehaus.org/xalan/xalan-test.zip_).  If you run the 
> junit test from the download you'll not see any errors because the 
> transform step is synchronized on the template instance 
> (XsltConcurrentTest.java, line 168).  If you remove the 
> synchronization, you start getting errors.
>
> My understanding was that I should be able to load a stylesheet into a 
> single instance of javax.xml.transform.Templates and then, on each 
> Thread, create and use new Transformer instance through a call to 
> Templates.newTransformer().transform(...).  Is this wrong??
>
> Environment:
>
>     * Windows XP
>     * jdk1.5.0_10
>     * Xalan 2.7.0
>     * Xerces 2.7.1
>     * xml-apis 1.3.02
>
> I have taken a look around for an answer to this, but I fear that it 
> may be something silly I'm doing, so I apologize in advance :-[
>
> Regards,
>
> Tom.


Re: Templates/Transformers + thread safety???

Posted by Tom Fennelly <to...@gmail.com>.
Thanks Erin.

I've updated that test download to include testing against stream 
source/result instances.  Still getting unexpected results on these 
(stream source/result) when not synschronizing on the template 
instance.  Zip available at 
http://milyn.codehaus.org/xalan/xalan-test-v2.zip (zip also includes the 
milyn jar).

Thanks again Erin.

Regards,

Tom.


Erin Harris wrote:
>
> Hi Tom,
>
> I couldn't run your test case as I don't have the milyn classes.  Have 
> you tried using StreamSource and StreamResult to see if you get the 
> same problem?
>
> Thanks.
>
>
> Erin Harris
>
>
>
>
> *Tom Fennelly <to...@gmail.com>*
>
> 26/02/2007 02:29 PM
>
> 	
> To
> 	xalan-j-users@xml.apache.org
> cc
> 	
> Subject
> 	Templates/Transformers + thread safety???
>
>
>
> 	
>
>
>
>
>
> Hi.
>
> While running some tests I noticed something strange - applying 
> transformations concurrently + unsynchronized using the same template 
> instance *appears* to be yielding unexpected results i.e. if I 
> synchronize transformations across the threads (synchronize on the 
> template instance) I have no issues.  I'm quite sure I'm doing 
> something wrong here but haven't found the answer.
>
> I packaged up the test in a maven2 project 
> (_http://milyn.codehaus.org/xalan/xalan-test.zip_).  If you run the 
> junit test from the download you'll not see any errors because the 
> transform step is synchronized on the template instance 
> (XsltConcurrentTest.java, line 168).  If you remove the 
> synchronization, you start getting errors.
>
> My understanding was that I should be able to load a stylesheet into a 
> single instance of javax.xml.transform.Templates and then, on each 
> Thread, create and use new Transformer instance through a call to 
> Templates.newTransformer().transform(...).  Is this wrong??
>
> Environment:
>
>     * Windows XP
>     * jdk1.5.0_10
>     * Xalan 2.7.0
>     * Xerces 2.7.1
>     * xml-apis 1.3.02
>
> I have taken a look around for an answer to this, but I fear that it 
> may be something silly I'm doing, so I apologize in advance :-[
>
> Regards,
>
> Tom.

Re: Templates/Transformers + thread safety???

Posted by Erin Harris <eh...@ca.ibm.com>.
Hi Tom,

I couldn't run your test case as I don't have the milyn classes.  Have you 
tried using StreamSource and StreamResult to see if you get the same 
problem?

Thanks.


Erin Harris





Tom Fennelly <to...@gmail.com> 
26/02/2007 02:29 PM

To
xalan-j-users@xml.apache.org
cc

Subject
Templates/Transformers + thread safety???






Hi.

While running some tests I noticed something strange - applying 
transformations concurrently + unsynchronized using the same template 
instance *appears* to be yielding unexpected results i.e. if I synchronize 
transformations across the threads (synchronize on the template instance) 
I have no issues.  I'm quite sure I'm doing something wrong here but 
haven't found the answer.

I packaged up the test in a maven2 project (
http://milyn.codehaus.org/xalan/xalan-test.zip).  If you run the junit 
test from the download you'll not see any errors because the transform 
step is synchronized on the template instance (XsltConcurrentTest.java, 
line 168).  If you remove the synchronization, you start getting errors.

My understanding was that I should be able to load a stylesheet into a 
single instance of javax.xml.transform.Templates and then, on each Thread, 
create and use new Transformer instance through a call to 
Templates.newTransformer().transform(...).  Is this wrong??

Environment:
Windows XP
jdk1.5.0_10
Xalan 2.7.0
Xerces 2.7.1
xml-apis 1.3.02
I have taken a look around for an answer to this, but I fear that it may 
be something silly I'm doing, so I apologize in advance :-[ 

Regards,

Tom.