You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@archiva.apache.org by nicolas de loof <ni...@gmail.com> on 2007/04/02 16:21:15 UTC

ConcurrentModificationException

Hello,

I've setup archiva as proxy to maven central. I'm using a recent snapshot
build.
I get sometimes (?) 500 errors when downloading artifacts. According to
logs, this is a ConcurrentModificationException.

Is this a known bug ?

Here is the stacktrace :


2007-04-02 10:11:25,392 [http-8888-1] ERROR [RepositoryServlet]            -
"Servlet.service()" pour la servlet RepositoryServlet a généré une exception
java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at
org.apache.maven.wagon.events.TransferEventSupport.fireTransferProgress(
TransferEventSupport.java:117)
    at org.apache.maven.wagon.AbstractWagon.fireTransferProgress(
AbstractWagon.java:350)
    at org.apache.maven.wagon.AbstractWagon.transfer(AbstractWagon.java:336)
    at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java
:199)
    at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java
:182)
    at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:80)
    at
org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getFileFromRepository
(DefaultProxyRequestHandler.java:541)
    at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
DefaultProxyRequestHandler.java:393)
    at
org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getArtifactFromRepository
(DefaultProxyRequestHandler.java:260)
    at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
DefaultProxyRequestHandler.java:196)
    at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
DefaultProxyRequestHandler.java:116)
    at
org.apache.maven.archiva.web.repository.ProxiedDavServer.fetchContentFromProxies
(ProxiedDavServer.java:156)
    at org.apache.maven.archiva.web.repository.ProxiedDavServer.process(
ProxiedDavServer.java:144)
    at
org.codehaus.plexus.webdav.servlet.multiplexed.MultiplexedWebDavServlet.service
(MultiplexedWebDavServlet.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
    at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(
FilterDispatcher.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
    at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(
PageFilter.java:39)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
    at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(
ActionContextCleanUp.java:88)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11AprProcessor.process(
Http11AprProcessor.java:833)
    at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(
Http11AprProtocol.java:639)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java
:1285)
    at java.lang.Thread.run(Unknown Source)

Re: ConcurrentModificationException

Posted by nicolas de loof <ni...@gmail.com>.
I've attached a simple "synchronized" patch for this, but htis will require
to set wagon dependencies to 2.0-SNAPSHOT. This may have some incidence on
archiva stability.

2007/4/3, nicolas de loof <ni...@gmail.com>:
>
> This seems to be a thread-safety issue in Wagon TransferEventSupport<http://maven.apache.org/wagon/wagon-provider-api/xref/org/apache/maven/wagon/events/TransferEventSupport.html>
>
> The listeners list is an ArrayList and add/remove/fireEvent methods are
> not synchronized.
> This requires either synchronization or use of a CopyOnWriteArrayList.
>
> I've created http://jira.codehaus.org/browse/WAGON-79 for this.
>
>
> 2007/4/2, nicolas de loof <ni...@gmail.com>:
> >
> > Hello,
> >
> > I've setup archiva as proxy to maven central. I'm using a recent
> > snapshot build.
> > I get sometimes (?) 500 errors when downloading artifacts. According to
> > logs, this is a ConcurrentModificationException.
> >
> > Is this a known bug ?
> >
> > Here is the stacktrace :
> >
> >
> > 2007-04-02 10:11:25,392 [http-8888-1] ERROR
> > [RepositoryServlet]            - "Servlet.service()" pour la servlet
> > RepositoryServlet a généré une exception
> > java.util.ConcurrentModificationException
> >     at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
> >     at java.util.AbstractList$Itr.next(Unknown Source)
> >     at
> > org.apache.maven.wagon.events.TransferEventSupport.fireTransferProgress(
> > TransferEventSupport.java:117)
> >     at org.apache.maven.wagon.AbstractWagon.fireTransferProgress(
> > AbstractWagon.java:350)
> >     at org.apache.maven.wagon.AbstractWagon.transfer(AbstractWagon.java
> > :336)
> >     at org.apache.maven.wagon.AbstractWagon.getTransfer (
> > AbstractWagon.java:199)
> >     at org.apache.maven.wagon.AbstractWagon.getTransfer(
> > AbstractWagon.java:182)
> >     at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:80)
> >     at
> > org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getFileFromRepository(
> > DefaultProxyRequestHandler.java:541)
> >     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> > DefaultProxyRequestHandler.java:393)
> >     at
> > org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getArtifactFromRepository(
> > DefaultProxyRequestHandler.java:260)
> >     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> > DefaultProxyRequestHandler.java:196)
> >     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> > DefaultProxyRequestHandler.java :116)
> >     at
> > org.apache.maven.archiva.web.repository.ProxiedDavServer.fetchContentFromProxies
> > (ProxiedDavServer.java:156)
> >     at org.apache.maven.archiva.web.repository.ProxiedDavServer.process(
> > ProxiedDavServer.java :144)
> >     at
> > org.codehaus.plexus.webdav.servlet.multiplexed.MultiplexedWebDavServlet.service
> > (MultiplexedWebDavServlet.java:111)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java:252)
> >     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > ApplicationFilterChain.java:173)
> >     at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(
> > FilterDispatcher.java :189)
> >     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java:202)
> >     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > ApplicationFilterChain.java:173)
> >     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(
> > PageFilter.java:39)
> >     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java:202)
> >     at org.apache.catalina.core.ApplicationFilterChain.doFilter (
> > ApplicationFilterChain.java:173)
> >     at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter
> > (ActionContextCleanUp.java:88)
> >     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java :202)
> >     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > ApplicationFilterChain.java:173)
> >     at org.apache.catalina.core.StandardWrapperValve.invoke(
> > StandardWrapperValve.java:213)
> >     at org.apache.catalina.core.StandardContextValve.invoke (
> > StandardContextValve.java:178)
> >     at org.apache.catalina.core.StandardHostValve.invoke(
> > StandardHostValve.java:126)
> >     at org.apache.catalina.valves.ErrorReportValve.invoke(
> > ErrorReportValve.java:105)
> >     at org.apache.catalina.core.StandardEngineValve.invoke (
> > StandardEngineValve.java:107)
> >     at org.apache.catalina.connector.CoyoteAdapter.service(
> > CoyoteAdapter.java:148)
> >     at org.apache.coyote.http11.Http11AprProcessor.process(
> > Http11AprProcessor.java:833)
> >     at
> > org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(
> > Http11AprProtocol.java:639)
> >     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(
> > AprEndpoint.java:1285)
> >     at java.lang.Thread.run(Unknown Source)
> >
>
>

Re: ConcurrentModificationException

Posted by nicolas de loof <ni...@gmail.com>.
This seems to be a thread-safety issue in Wagon
TransferEventSupport<http://maven.apache.org/wagon/wagon-provider-api/xref/org/apache/maven/wagon/events/TransferEventSupport.html>

The listeners list is an ArrayList and add/remove/fireEvent methods are not
synchronized.
This requires either synchronization or use of a CopyOnWriteArrayList.

I've created http://jira.codehaus.org/browse/WAGON-79 for this.


2007/4/2, nicolas de loof <ni...@gmail.com>:
>
> Hello,
>
> I've setup archiva as proxy to maven central. I'm using a recent snapshot
> build.
> I get sometimes (?) 500 errors when downloading artifacts. According to
> logs, this is a ConcurrentModificationException.
>
> Is this a known bug ?
>
> Here is the stacktrace :
>
>
> 2007-04-02 10:11:25,392 [http-8888-1] ERROR [RepositoryServlet]
> - "Servlet.service()" pour la servlet RepositoryServlet a généré une
> exception
> java.util.ConcurrentModificationException
>     at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
>     at java.util.AbstractList$Itr.next(Unknown Source)
>     at
> org.apache.maven.wagon.events.TransferEventSupport.fireTransferProgress (
> TransferEventSupport.java:117)
>     at org.apache.maven.wagon.AbstractWagon.fireTransferProgress(
> AbstractWagon.java:350)
>     at org.apache.maven.wagon.AbstractWagon.transfer(AbstractWagon.java
> :336)
>     at org.apache.maven.wagon.AbstractWagon.getTransfer (
> AbstractWagon.java:199)
>     at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java
> :182)
>     at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:80)
>     at
> org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getFileFromRepository(
> DefaultProxyRequestHandler.java:541)
>     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> DefaultProxyRequestHandler.java:393)
>     at
> org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.getArtifactFromRepository(
> DefaultProxyRequestHandler.java:260)
>     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> DefaultProxyRequestHandler.java:196)
>     at org.apache.maven.archiva.proxy.DefaultProxyRequestHandler.get(
> DefaultProxyRequestHandler.java :116)
>     at
> org.apache.maven.archiva.web.repository.ProxiedDavServer.fetchContentFromProxies
> (ProxiedDavServer.java:156)
>     at org.apache.maven.archiva.web.repository.ProxiedDavServer.process(
> ProxiedDavServer.java:144)
>     at
> org.codehaus.plexus.webdav.servlet.multiplexed.MultiplexedWebDavServlet.service
> (MultiplexedWebDavServlet.java:111)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (
> ApplicationFilterChain.java:252)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>     at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(
> FilterDispatcher.java :189)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(
> PageFilter.java:39)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter (
> ApplicationFilterChain.java:173)
>     at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(
> ActionContextCleanUp.java:88)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java :202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:173)
>     at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:213)
>     at org.apache.catalina.core.StandardContextValve.invoke (
> StandardContextValve.java:178)
>     at org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java:126)
>     at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:105)
>     at org.apache.catalina.core.StandardEngineValve.invoke (
> StandardEngineValve.java:107)
>     at org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:148)
>     at org.apache.coyote.http11.Http11AprProcessor.process(
> Http11AprProcessor.java:833)
>     at
> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(
> Http11AprProtocol.java:639)
>     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java
> :1285)
>     at java.lang.Thread.run(Unknown Source)
>