axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "R J Scheuerle Jr" <sc...@us.ibm.com>
Subject Re: Concurrency problems (Attn: Rich)
Date Wed, 01 May 2002 20:34:17 GMT
Yes you are correct.

The SimpleDeserializers could be shared per thread.  Deserializers for
multi-ref'd things cannot be shared at all.

Rich Scheuerle
XML & Web Services Development
512-838-5115  (IBM TL 678-5115)


                                                                                         
                                  
                      Glen Daniels                                                       
                                  
                      <gdaniels@macrome        To:       "'Axis-Dev (E-mail)'" <axis-dev@xml.apache.org>
                   
                      dia.com>                 cc:                                    
                                     
                                               Subject:  Concurrency problems (Attn: Rich)
                                 
                      05/01/2002 03:22                                                   
                                  
                      PM                                                                 
                                  
                      Please respond to                                                  
                                  
                      axis-dev                                                           
                                  
                                                                                         
                                  
                                                                                         
                                  




I isolated the concurrency failures to two places.  First,
SAXParserFactories are not guaranteed to be thread-safe, so I synchronized
the saxFactory.newSAXParser() call.

Second, and much more major - we are apparently "sharing" instances of
SimpleDeserializers....?!?  I don't understand how this could work in a
multi-threaded environment, when each deserializer is maintaining a
StringBuffer collecting values from deserialized XML....

I propose we remove all of the code related to sharing deserializers.
Serializers may be shared, since they don't have state, but Deserializers
must be created on a per-instance basis, or must be redesigned to hold
state in TLS or some other thread-safe place.  I may be missing something
here, so please fill me in if you think this is an incorrect analysis.  I
will note that turning off sharing in all cases has fixed the concurrency
test problems.

Sorry for not noticing and commenting on this earlier.

--Glen




Mime
View raw message