commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Neidhart (Issue Comment Edited) (JIRA)" <j...@apache.org>
Subject [jira] [Issue Comment Edited] (DIGESTER-163) ConcurrentModificationException creating a new Digester via loaderInstance.newDigester()
Date Fri, 16 Mar 2012 19:35:39 GMT

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

Thomas Neidhart edited comment on DIGESTER-163 at 3/16/12 7:34 PM:
-------------------------------------------------------------------

I have no idea about the digester, but I looked at this issue out of curiosity (and I like
to debug concurrency problems ;-).

The problems is in the DigesterLoader#addRules method:

 * createRuleSet clears the underlying rule binder
 * addRuleInstance iterates over the same rule binder

If you make this method synchronized, you will not get an exception anymore.

What I do not know, if the createRuleSet is implemented correctly. I would expect that the
initialization of the rules binder happens when the DigesterLoader is created, not when a
new digester is requested, but this is may be due to lazy loading?
                
      was (Author: tn):
    I have no idea about the digester, but I looked at this issue out of curiosity (and I
like to debug concurrency problems ;-).

The problems is in the DigesterLoader#addRules method:

 * createRuleSet clears the underlying rule binder
 * addRuleInstance iterates of the same rule binder

If you make this method synchronized, you will not get an exception anymore.

What I do not know, if the createRuleSet is implemented correctly. I would expect that the
initialization of the rules binder happens when the DigesterLoader is created, not when a
new digester is requested, but this is may be due to lazy loading?
                  
> ConcurrentModificationException creating a new Digester via loaderInstance.newDigester()
> ----------------------------------------------------------------------------------------
>
>                 Key: DIGESTER-163
>                 URL: https://issues.apache.org/jira/browse/DIGESTER-163
>             Project: Commons Digester
>          Issue Type: Bug
>    Affects Versions: 3.2
>         Environment: Linux, JDK 6
>            Reporter: Torsten Krah
>         Attachments: 163-2.patch, 163.patch, Digester163TestCase.java, cli-mvn-test-withfix.txt,
stack-afterfix.txt, stack-mvn.txt, stack-next.txt, stack-next2.txt
>
>
> I am gettig a ConcurrentModificationException when trying to create new Digester instance
from a configured loader:
> Trace is:
> {code}
> java.util.ConcurrentModificationException: null
> 	at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761) ~[na:1.6.0_27]
> 	at java.util.LinkedList$ListItr.next(LinkedList.java:696) ~[na:1.6.0_27]
> 	at org.apache.commons.digester3.binder.FromBinderRuleSet.addRuleInstances(FromBinderRuleSet.java:130)
~[commons-digester3-3.2.jar:3.2]
> 	at org.apache.commons.digester3.binder.DigesterLoader.addRules(DigesterLoader.java:581)
~[commons-digester3-3.2.jar:3.2]
> 	at org.apache.commons.digester3.binder.DigesterLoader.newDigester(DigesterLoader.java:568)
~[commons-digester3-3.2.jar:3.2]
> 	at org.apache.commons.digester3.binder.DigesterLoader.newDigester(DigesterLoader.java:516)
~[commons-digester3-3.2.jar:3.2]
> 	at org.apache.commons.digester3.binder.DigesterLoader.newDigester(DigesterLoader.java:475)
~[commons-digester3-3.2.jar:3.2]
> 	at org.apache.commons.digester3.binder.DigesterLoader.newDigester(DigesterLoader.java:462)
~[commons-digester3-3.2.jar:3.2]
> {code}
> The binder documentation (employee servlet) and the mailing list did confirm to me, that
the loader should be safe to be shared, so this should not happen.

--
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

        

Mime
View raw message