[ 
https://issues.apache.org/jira/browse/XERCESJ-1538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13169401#comment-13169401
 ] 

Denis Orekhov commented on XERCESJ-1538:
----------------------------------------

I sent all data that Mukul asked me. 
Last mail that I recieved was:

"Mukul,

A javax.xml.validation.Schema [1] is required to be thread-safe. Xerces has a 
bug if it doesn't satisfy that.

Den mentioned that this problem occurs even when SchemaFactory and Schema 
objects are not shared between threads. That sounds very much like there's a 
statically mutable field somewhere within Xerces or Psychopath that is causing 
this issue. If multiple threads can't validate assertions simultaneously we 
need to fix that.

Thanks.

[1] 
http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/validation/Schema.html

...

> Therefore I can run fine, with your use case in single thread
> scenario. Your java application example, is pretty involved and would
> require detailed investigation, to conclude if your observation is a
> bug with Xerces.
> 
> I think, compliance of a XSD processor to the XSD language, doesn't
> require threading issues to be considered, and achieving specific
> validation objectives (like validation in multhithreading context)
> must have an external design from the application and/or schema
> authors. With this thought, I think Xerces may not have a bug, for the
> use case that you've shared with us."

I use synchronized method for xsd validation in my code now.
And is the bug or no - you decide...
                
> Multithread validation failed in Xerces2 with XML Schema 1.1 support when 
> assert instruction in XSD
> ---------------------------------------------------------------------------------------------------
>
>                 Key: XERCESJ-1538
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1538
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: JAXP (javax.xml.validation)
>    Affects Versions: 2.11.0
>         Environment: Windows 7 x64, Java 6 Update 26 x64 
>            Reporter: Denis Orekhov
>
> I'm using Xerces2 Java 2.11.0 (XML Schema 1.1) (Beta) in my app. Schema 
> validation in my app can occurs simultaneously in separate threads.
> This is part of my xsd:
>       <xs:element name="action">
>               <xs:complexType>
>                       <xs:all>
>                               <xs:element name="main_context" minOccurs="0" />
>                               <xs:element name="navigator" minOccurs="0">
>                                       <xs:complexType>
>                                               <xs:attribute name="element" 
> type="xs:string" />
>                                               <xs:attribute name="refresh" 
> type="xs:boolean" />
>                                       </xs:complexType>
>                               </xs:element>
>                               <xs:element name="datapanel" minOccurs="0">
>                                       <xs:complexType>
>                                               <xs:sequence>
>                                                       <xs:element 
> name="element" maxOccurs="unbounded"
>                                                               minOccurs="0">
>                                                               <xs:complexType>
>                                                                       
> <xs:sequence>
>                                                                               
> <xs:element name="add_context" minOccurs="0" />
>                                                                       
> </xs:sequence>
>                                                                       
> <xs:attribute name="id" type="xs:string" use="required" />
>                                                                       
> <xs:attribute name="refresh_context_only" type="xs:boolean" />
>                                                                       
> <xs:attribute name="skip_refresh_context_only"
>                                                                               
> type="xs:boolean" />
>                                                                       
> <xs:attribute name="keep_user_settings" type="xs:boolean" />
>                                                               
> </xs:complexType>
>                                                       </xs:element>
>                                               </xs:sequence>
>                                               <xs:attribute name="type" 
> type="xs:string" use="required" />
>                                               <xs:attribute name="tab" 
> type="xs:string" />
>                                       </xs:complexType>
>                               </xs:element>
>                               <xs:element name="server" minOccurs="0">
>                                       <xs:complexType>
>                                               <xs:sequence>
>                                                       <xs:element 
> name="activity" minOccurs="0" maxOccurs="unbounded">
>                                                               <xs:complexType>
>                                                                       
> <xs:sequence>
>                                                                               
> <xs:element name="add_context" minOccurs="0" />
>                                                                       
> </xs:sequence>
>                                                                       
> <xs:attribute name="type" type="xs:string"
>                                                                               
> use="required" />                                                             
>           
>                                                               
> </xs:complexType>
>                                                       </xs:element>
>                                               </xs:sequence>
>                                       </xs:complexType>                       
>                 
>                               </xs:element>
>                       </xs:all>
>                       <xs:assert
>                               test="(count(datapanel) + count(server) =0) or 
> (count(*[position()=1 and name()='main_context']) = 1)" />
>               </xs:complexType>
>       </xs:element>
> And sometimes I have SAXException with text "cvc-assertion.3.13.4.1: 
> Assertion evaluation ('(count(datapanel) + count(server) =0) or 
> (count(*[position()=1 and name()='main_context']) = 1)') for element 'action' 
> with type '#anonymous' did not succeed.".
> I checked my data and schema text before validation error - both is good.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-dev-h...@xerces.apache.org

Reply via email to