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