You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Denis Orekhov (Commented) (JIRA)" <xe...@xml.apache.org> on 2011/12/14 15:37:31 UTC

[jira] [Commented] (XERCESJ-1538) Multithread validation failed in Xerces2 with XML Schema 1.1 support when assert instruction in XSD

    [ 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-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org