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

Stephen Haberman commented on IVY-1386:
---------------------------------------

Hi Maarten, thanks for taking the time to test my patch--I apologize for not 
finding this out before asking you take time to look at it.

I have been running a patched version of Ivy with my proposed fix in my local 
Eclipse, and thanks so far work, so I was lulled into thinking the semantics 
where the same. Obviously it does not, so I'll look some more in to this.

What do you think of adding another arg to XMLHelper.parse, called 
loadExternalDtds, which defaults=true, but can be set false?

The reason is that IvyDE's IvySettingsContentDescriptor, AFAICT, does not need 
external DTDs to work, because it uses a custom default handler to just look 
for the root element of "ivysettings" and then stops.

Given how often Eclipse asks IvyDE this question (once per XML file in the 
project, on a regular basis, AFAICT), it seems useful to allow 
IvySettingsContentDescriptor to opt out of DTD loading.

I can work up a patch that does this, if you approve. Of if you have other 
suggestions, let me know and I can try those out too.

Thanks!
                
> Disable DTD external fetching when not validation
> -------------------------------------------------
>
>                 Key: IVY-1386
>                 URL: https://issues.apache.org/jira/browse/IVY-1386
>             Project: Ivy
>          Issue Type: Bug
>    Affects Versions: trunk
>         Environment: Ivy 2.4.0.alpha/IvyDE 2.2.0.beta2
>            Reporter: Stephen Haberman
>         Attachments: disableExternalDtds.diff, ivyde-xml-dtd-hung.txt
>
>
> Our team uses Ivy/IvyDE, and noticed Eclipse hanging today/yesterday, to the 
> point of being unusable.
> I tracked it down to Eclipse asking IvyDE "is this your file?", which  
> IvyDE's IvySettingsContentDescriber used XMLHelper.parse to answer, but then 
> Xerces hung while trying to load the XML file's DTD.
> So, the problem was the DTD being unavailable, but it seems like XMLHelper 
> should turn this off, especially if the schema parameter is null, and it's in 
> non-validating mode.
> The attached patch turns off external DTD fetching when XMLHelper is already 
> in non-validating mode.
> This avoids the wire call, which speeds up the XMLHelper.parse by at least 
> 100%, ~250-300ms when fetching the DTD, to ~100-150ms when not. (And this is 
> the happy case, in the worst case, waiting for the timeout if the DTD is 
> unavailable, takes ~20s).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to