Sylvain Wallez wrote:
Klaus Bertram wrote:
Hi Joerg
yes I found it by debugging an action where the breakpoint was stoped twice.
So I wrote a small test sidemap with an xsp side and database actions
By request the map:aggregation match, an action in map:part add a row to the databse and then the xsp read the table entrys.
The browser show the insertred row, but the database had 2 new rows
The sitemap.log shows the complete match handling twice
After that I test the match form the part direkt with a request and it works. (1 row added)
When needed I can send you my test sides.
Some questions to help us track the problem :
- do you use a caching pipeline - if yes, does it still happen if you use a non-caching pipeline ?
Yes I had the same idea and checked both, same result
Oh, the called map:part match is in different pipeline than the map:aggregation
and I checked
<map:pipeline internal-only="true">
and
<map:pipeline>
but I tryed not the match in the same pipeline
I check it in the afternoon
checked with same result
- can you provide us the two stack trace when you hit the breakpoint ?
here are the diff from the stack (the attached file includes the complete stack) the first are invoked by: TreeProcessor.process(Environment) line: 307 the second by: TreeProcessor.process(Environment) line: 309
<first break>
>SitemapSource.<init>(ComponentManager, String, Map, Logger) line: 224
>SitemapSourceFactory.getSource(String, Map) line: 99
>SourceResolverImpl.resolveURI(String, String, Map) line: 247
>CocoonComponentManager.resolveURI(String, String, Map) line: 450
>HttpEnvironment(AbstractEnvironment).resolveURI(String, String, Map) line: 513
>HttpEnvironment(AbstractEnvironment).resolveURI(String) line: 500
>ContentAggregator.setup(SourceResolver, Map, String, Parameters) line: 322
>NonCachingProcessingPipeline(AbstractProcessingPipeline).setupPipeline(Environment) line: 378
>NonCachingProcessingPipeline(AbstractProcessingPipeline).preparePipeline(Environment) line: 505
>NonCachingProcessingPipeline(AbstractProcessingPipeline).process(Environment) line: 467
>SerializeNode.invoke(Environment, InvokeContext) line: 150
>PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], >Environment, InvokeContext, String, Map) line: 84
>PreparableMatchNode.invoke(Environment, InvokeContext) line: 164
>PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], >Environment, InvokeContext) line: 108
>PipelineNode.invoke(Environment, InvokeContext) line: 162
>PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], >Environment, InvokeContext) line: 108
>PipelinesNode.invoke(Environment, InvokeContext) line: 162
>TreeProcessor.process(Environment, InvokeContext) line: 325
>TreeProcessor.process(Environment) line: 307
</first break>
<second break>
>SitemapSource.refresh() line: 345
>SitemapSource.getURI() line: 298
>SitemapSourceFactory.release(Source) line: 111
>SourceResolverImpl.release(Source) line: 308
>CocoonComponentManager.release(Source) line: 457
>HttpEnvironment(AbstractEnvironment).release(Source) line: 521
>ContentAggregator.recycle() line: 303
>ResourceLimitingPool.put(Poolable) line: 438
>PoolableComponentHandler.doPut(Component) line: 245
>PoolableComponentHandler(ComponentHandler).put(Component) line: 452
>ComponentsSelector(ExcaliburComponentSelector).release(Component) line: 336
>ComponentsSelector(ExtendedComponentSelector).release(Component) line: 316
>NonCachingProcessingPipeline(AbstractProcessingPipeline).recycle() line: 637
>ResourceLimitingPool.put(Poolable) line: 438
>PoolableComponentHandler.doPut(Component) line: 245
>PoolableComponentHandler(ComponentHandler).put(Component) line: 452
>ComponentsSelector(ExcaliburComponentSelector).release(Component) line: 336
>ComponentsSelector(ExtendedComponentSelector).release(Component) line: 316
>InvokeContext.dispose() line: 310
>TreeProcessor.process(Environment) line: 309
</second break>
<first breakpoint> Thread [PoolThread-4] (Suspended (breakpoint at line 92 in DatabaseAddAction)) DatabaseAddAction.act(Redirector, SourceResolver, Map, String, Parameters) line: 92 ActTypeNode.invoke(Environment, InvokeContext) line: 133 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 PreparableMatchNode.invoke(Environment, InvokeContext) line: 164 PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelineNode.invoke(Environment, InvokeContext) line: 162 PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelinesNode.invoke(Environment, InvokeContext) line: 162 TreeProcessor.process(Environment, InvokeContext) line: 325 TreeProcessor.processInternal(Environment) line: 344 SitemapSource.init() line: 356 SitemapSource.<init>(ComponentManager, String, Map, Logger) line: 224 SitemapSourceFactory.getSource(String, Map) line: 99 SourceResolverImpl.resolveURI(String, String, Map) line: 247 CocoonComponentManager.resolveURI(String, String, Map) line: 450 HttpEnvironment(AbstractEnvironment).resolveURI(String, String, Map) line: 513 HttpEnvironment(AbstractEnvironment).resolveURI(String) line: 500 ContentAggregator.setup(SourceResolver, Map, String, Parameters) line: 322 NonCachingProcessingPipeline(AbstractProcessingPipeline).setupPipeline(Environment) line: 378 NonCachingProcessingPipeline(AbstractProcessingPipeline).preparePipeline(Environment) line: 505 NonCachingProcessingPipeline(AbstractProcessingPipeline).process(Environment) line: 467 SerializeNode.invoke(Environment, InvokeContext) line: 150 PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 PreparableMatchNode.invoke(Environment, InvokeContext) line: 164 PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelineNode.invoke(Environment, InvokeContext) line: 162 PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelinesNode.invoke(Environment, InvokeContext) line: 162 TreeProcessor.process(Environment, InvokeContext) line: 325 TreeProcessor.process(Environment) line: 307 MountNode.invoke(Environment, InvokeContext) line: 133 PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 PreparableMatchNode.invoke(Environment, InvokeContext) line: 164 PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelineNode.invoke(Environment, InvokeContext) line: 162 PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelinesNode.invoke(Environment, InvokeContext) line: 162 TreeProcessor.process(Environment, InvokeContext) line: 325 TreeProcessor.process(Environment) line: 307 Cocoon.process(Environment) line: 626 CocoonServlet.service(HttpServletRequest, HttpServletResponse) line: 1083 CocoonServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 ServletHolder.handle(ServletRequest, ServletResponse) line: 360 WebApplicationHandler.dispatch(String, HttpServletRequest, HttpServletResponse, ServletHolder) line: 294 WebApplicationHandler(ServletHandler).handle(String, String, HttpRequest, HttpResponse) line: 558 WebApplicationContext(HttpContext).handle(String, String, HttpRequest, HttpResponse) line: 1714 WebApplicationContext.handle(String, String, HttpRequest, HttpResponse) line: 507 WebApplicationContext(HttpContext).handle(HttpRequest, HttpResponse) line: 1664 Server(HttpServer).service(HttpRequest, HttpResponse) line: 863 HttpConnection.service(HttpRequest, HttpResponse) line: 775 HttpConnection.handleNext() line: 939 HttpConnection.handle() line: 792 SocketListener.handleConnection(Socket) line: 201 SocketListener(ThreadedServer).handle(Object) line: 289 ThreadPool$PoolThread.run() line: 455 </first breakpoint> <second breakpoint> Thread [PoolThread-4] (Suspended (breakpoint at line 92 in DatabaseAddAction)) DatabaseAddAction.act(Redirector, SourceResolver, Map, String, Parameters) line: 92 ActTypeNode.invoke(Environment, InvokeContext) line: 133 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 ActTypeNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 ActTypeNode.invoke(Environment, InvokeContext) line: 158 PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 PreparableMatchNode.invoke(Environment, InvokeContext) line: 164 PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelineNode.invoke(Environment, InvokeContext) line: 162 PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelinesNode.invoke(Environment, InvokeContext) line: 162 TreeProcessor.process(Environment, InvokeContext) line: 325 TreeProcessor.processInternal(Environment) line: 344 SitemapSource.init() line: 356 SitemapSource.refresh() line: 345 SitemapSource.getURI() line: 298 SitemapSourceFactory.release(Source) line: 111 SourceResolverImpl.release(Source) line: 308 CocoonComponentManager.release(Source) line: 457 HttpEnvironment(AbstractEnvironment).release(Source) line: 521 ContentAggregator.recycle() line: 303 ResourceLimitingPool.put(Poolable) line: 438 PoolableComponentHandler.doPut(Component) line: 245 PoolableComponentHandler(ComponentHandler).put(Component) line: 452 ComponentsSelector(ExcaliburComponentSelector).release(Component) line: 336 ComponentsSelector(ExtendedComponentSelector).release(Component) line: 316 NonCachingProcessingPipeline(AbstractProcessingPipeline).recycle() line: 637 ResourceLimitingPool.put(Poolable) line: 438 PoolableComponentHandler.doPut(Component) line: 245 PoolableComponentHandler(ComponentHandler).put(Component) line: 452 ComponentsSelector(ExcaliburComponentSelector).release(Component) line: 336 ComponentsSelector(ExtendedComponentSelector).release(Component) line: 316 InvokeContext.dispose() line: 310 TreeProcessor.process(Environment) line: 309 MountNode.invoke(Environment, InvokeContext) line: 133 PreparableMatchNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext, String, Map) line: 84 PreparableMatchNode.invoke(Environment, InvokeContext) line: 164 PipelineNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelineNode.invoke(Environment, InvokeContext) line: 162 PipelinesNode(AbstractParentProcessingNode).invokeNodes(ProcessingNode[], Environment, InvokeContext) line: 108 PipelinesNode.invoke(Environment, InvokeContext) line: 162 TreeProcessor.process(Environment, InvokeContext) line: 325 TreeProcessor.process(Environment) line: 307 Cocoon.process(Environment) line: 626 CocoonServlet.service(HttpServletRequest, HttpServletResponse) line: 1083 CocoonServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 853 ServletHolder.handle(ServletRequest, ServletResponse) line: 360 WebApplicationHandler.dispatch(String, HttpServletRequest, HttpServletResponse, ServletHolder) line: 294 WebApplicationHandler(ServletHandler).handle(String, String, HttpRequest, HttpResponse) line: 558 WebApplicationContext(HttpContext).handle(String, String, HttpRequest, HttpResponse) line: 1714 WebApplicationContext.handle(String, String, HttpRequest, HttpResponse) line: 507 WebApplicationContext(HttpContext).handle(HttpRequest, HttpResponse) line: 1664 Server(HttpServer).service(HttpRequest, HttpResponse) line: 863 HttpConnection.service(HttpRequest, HttpResponse) line: 775 HttpConnection.handleNext() line: 939 HttpConnection.handle() line: 792 SocketListener.handleConnection(Socket) line: 201 SocketListener(ThreadedServer).handle(Object) line: 289 ThreadPool$PoolThread.run() line: 455 </second breakpoint>