axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (AXIS2-4819) Race condition in WSDLDataLocator
Date Sun, 05 Dec 2010 21:03:11 GMT

     [ https://issues.apache.org/jira/browse/AXIS2-4819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Andreas Veithen resolved AXIS2-4819.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.6
         Assignee: Andreas Veithen

I believe that the issue is fixed by r1042442 on the trunk and r1042443 on the 1.5 branch.
Since I don't know how to reliably reproduce the issue, could you please test with a nightly
1.5.4-SNAPSHOT build:

https://hudson.apache.org/hudson/job/axis2-1.5/lastBuild/org.apache.axis2$distribution/

The fix will be included in build #108.

> Race condition in WSDLDataLocator
> ---------------------------------
>
>                 Key: AXIS2-4819
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4819
>             Project: Axis2
>          Issue Type: Bug
>          Components: wsdl
>    Affects Versions: 1.4.1
>            Reporter: Ivan Dubrov
>            Assignee: Andreas Veithen
>             Fix For: 1.6, 1.5.4
>
>
> Observable behaviour:
> Sometimes WSDL request returns wrong WSDL. This occurs when multiple WSDL requests are
made at the same time.
> The cause:
> org.apache.axis2.dataretrieval.WSDLDataLocator is created only once and reused in a multiple
requests (see DataLocatorFactory, static method createDataLocator. The problem is that DataLocator
contains a state that is changed during the request, most importantly the field "theService".
It is possible that two concurrent WSDL request are processed at the same time and one request
overrides theService field set by other request. Consider the following scenario:
> 1. Both requests arrive (at the same time) at the line 129 (I assume version 1.4.1),
which read:
> <pre>
> axisService2WOM = new AxisService2WSDL11(theService);
> </pre>
> 2. Both requests start executing the line (reading theService field).
> 3. Since WSDLDataLocator is shared between those two requests and theService is field
of that class, both requests will use same AxisService to generate WSDL. As a result, both
requests will output the same WSDL, which is obviously wrong.
> I don't understand, why theService is made field after all? I think, it should be a local
variable instead.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message