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>
