You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by "Bram de Kruijff (JIRA)" <ji...@apache.org> on 2013/07/12 12:31:48 UTC

[jira] [Commented] (ACE-371) DeploymentRepository corrupt after bulk update through REST client

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

Bram de Kruijff commented on ACE-371:
-------------------------------------

Seems to be a race condition. It does not happen every time, but when it happens there is an exception throws while parsing the repository in RepositoryBasedProvider#getVersions()
{code}
java.net.MalformedURLException: no protocol: itembank.urlhandler.rest-0.0.0.CDS000.jar
{code}

Wrt to the "high" dp version; It seems a new deployment version is create for every change. It is easy to replay this in the webui. Remove an a2f association, recreate it and store. The version will have been incremented by 2 while, effectively there is no change. In the context of bulk operations this leads to very large increments and big repositories. 

{code}
DeploymentVersionRepositoryImpl.createDeploymentArtifact(String, Map<String,String>) line: 117	
StatefulTargetRepositoryImpl.getNecessaryDeploymentArtifacts(String, String) line: 558	
StatefulTargetRepositoryImpl.generateDeploymentVersion(String) line: 662	
StatefulTargetRepositoryImpl.approve(String) line: 469	
StatefulTargetObjectImpl.approve() line: 79	
StatefulTargetObjectImpl.handleStatechangeAutomation() line: 386	
StatefulTargetObjectImpl.setStatus(String, String) line: 377	
StatefulTargetObjectImpl.setStoreState(StatefulTargetObject$StoreState) line: 367	
StatefulTargetObjectImpl.determineStoreState(DeploymentVersionObject) line: 282	
StatefulTargetObjectImpl.determineStatus() line: 223	
StatefulTargetRepositoryImpl.handleEvent(Event) line: 745	
{code}

Wrt to changed events in general I am unclear on how these are synchronized with a commit, or if they are at all? It seems all changed events are delivered asynchronous and a commit can happen at any minute. Again, in the context of bulk changes, I think this may be an issue.
                
> DeploymentRepository corrupt after bulk update through REST client
> ------------------------------------------------------------------
>
>                 Key: ACE-371
>                 URL: https://issues.apache.org/jira/browse/ACE-371
>             Project: ACE
>          Issue Type: Bug
>          Components: Repository
>    Affects Versions: 1.0.0
>            Reporter: Bram de Kruijff
>            Priority: Critical
>
> After doing a bulk update on a REST client workspace. The deployment repository seems to be corrupted. There are a few strange things;
> 1) The initial run succeeds and my target gets a dp with version 1.0.0
> 2) After a second run, that deletes and recreated the artifacts, I get;
>  -> the target reports remote version "undefined", caused by the deployment api reporting no versions. The server logs reports the stacks below;  
>  -> the webui does report an available that is very high. In my case it increases by about 150 per run
> It seems that the underlying cause to getVersions being null is in 
> {code}
> 2013.07.11 21:15:57 WARNING - Bundle: org.apache.ace.deployment.servlet - 500:Error getting available versions. - org.apache.felix.log.LogException: org.apache.ace.deployment.servlet.AceRestException: 500:Error getting available versions.
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.getVersions(DeploymentServlet.java:234)
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.doGet(DeploymentServlet.java:92)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.service(DeploymentServlet.java:132)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
> 	at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
> 	at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
> 	at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
> 	at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
> 	at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
> 	at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
> 	at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> 	at org.mortbay.jetty.Server.handle(Server.java:326)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> 	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
> 	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> 2013.07.11 21:15:57 WARNING - Bundle: org.apache.ace.deployment.servlet - Error getting available versions. - java.io.EOFException
> 	at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:264)
> 	at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:254)
> 	at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:163)
> 	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
> 	at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
> 	at org.apache.ace.deployment.provider.repositorybased.RepositoryBasedProvider.getRepositoryStream(RepositoryBasedProvider.java:419)
> 	at org.apache.ace.deployment.provider.repositorybased.RepositoryBasedProvider.getVersions(RepositoryBasedProvider.java:211)
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.getVersions(DeploymentServlet.java:227)
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.doGet(DeploymentServlet.java:92)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> 	at org.apache.ace.deployment.servlet.DeploymentServlet.service(DeploymentServlet.java:132)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
> 	at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
> 	at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
> 	at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
> 	at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
> 	at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
> 	at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
> 	at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> 	at org.mortbay.jetty.Server.handle(Server.java:326)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> 	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
> 	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> {code}

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