[ http://issues.apache.org/jira/browse/COCOON-1681?page=comments#action_12364075 ]
Antonio Fiol commented on COCOON-1681: -------------------------------------- I just attached three stack traces. However, only two of them are relevant for this bug, but I am not knowledgeable enough to know which one is not. Why do I say that? We have a non-trivial sitemap, with 5 match sections implied in this situation. Called URL is: /corresponsales/propuestas/deportes/inicio.html "External" sitemap part gets called: <!-- Step 1 --> <map:match pattern="**.html"> <map:act type="session"> <map:parameter name="action" value="create"/> <map:act type="session-propagator"> <map:parameter name="java:comp/env/skin" value="{&skin;}" /> <map:generate src="cocoon:/interno/{../../1}"/><!-- This calls Step 2 --> <map:call resource="xpage2html"> <map:parameter name="hoja" value="pantalla"/> <map:parameter name="pagina" value="{../../1}"/> </map:call> <map:serialize status-code="200" /> </map:act> </map:act> </map:match> Here is the relevant part of the "internal" sitemap, which is mounted on "/interno" and so its "Step 2" at the bottom is called from Step 1: <!-- Step 5 --> <map:match pattern="inclusion/**/lista-descendiente-*(*)"> <map:generate type="directory" src="{&paginas;}/{1}"> <map:parameter name="include" value=".*\.html|^[^.]*$" /><!-- Directories that have no period and HTML files --> <map:parameter name="exclude" value="historico" /> <map:parameter name="reverse" value="true" /> <map:parameter name="sort" value="{2}" /> <map:parameter name="depth" value="3" /> </map:generate> <map:transform type="paginate" src="pagesheets/file6.xml"><!-- Gets the dir:file paged by groups of 6 --> <map:parameter name="page" value="{3}" /> </map:transform> <map:transform src="xsl/xdoc/directory.xsl"> <map:parameter name="path" value="{1}" /> <map:parameter name="orden" value="{2}" /> </map:transform> <map:serialize/> </map:match> <!-- Step 4 --> <map:match pattern="inclusion/**/lista-descendiente-*"> <map:redirect-to uri="cocoon:/inclusion/{1}/lista-descendiente-{2}(1)" /><!-- Calls Step 5 --> </map:match> <!-- Step 3 --> <map:match pattern="paginas/**"> <map:select type="resource-exists"> <map:when test="{&paginas;}/{1}.xdoc"><!-- This file exists, so this is the one that gets called. See the file below --> <map:generate src="{&paginas;}/{1}.xdoc"/> </map:when> <map:otherwise> <map:generate type="html" src="{&paginas;}/{1}.html"/> <map:transform src="xsl/xdoc/html.xsl"/> </map:otherwise> </map:select> <map:transform type='xinclude' /><!-- This xincludes Step 4. See the file below for URL --> <map:serialize/> </map:match> <!-- Step 2 --> <map:match pattern="**"> <map:aggregate element="page" > <map:part label="contenido" src="cocoon:/paginas/{1}"/><!-- This will call Step 3, which will ultimately call directory generator, but calling isValid() twice --> <map:part src="cocoon:/datos/version-pdf/{1}" /><!-- This uses directory generator, and isValid() only gets called once, so sitemap not posted. One of the stack traces comes from here. --> <map:part src="cocoon:/navegacion/principal"/> <map:part src="cocoon:/navegacion/secundaria/{1}"/> <map:part src="cocoon:/datos/calendario/hoy/completo"/> <map:part src="{&dinamico;}/xml/buscadores.xml"/> </map:aggregate> <map:serialize/> </map:match> inicio.xdoc file contains (only relevant part shown): <xdoc xmlns:xi="http://www.w3.org/2001/XInclude"> <head> <title>[...]</title> </head> <body> [...] <xi:include href="cocoon://interno/inclusion/corresponsales/propuestas/deportes/lista-descendiente-lastModified"/><!-- Calls Step 4 --> </body> </xdoc> I hope it is not too difficult to follow. :-( > Generator "directory": Caching too much > --------------------------------------- > > Key: COCOON-1681 > URL: http://issues.apache.org/jira/browse/COCOON-1681 > Project: Cocoon > Type: Bug > Components: * Cocoon Core > Versions: 2.1.8, 2.1.7 > Reporter: Antonio Fiol > Assignee: Jean-Baptiste Quenot > Attachments: DirectoryGenerator.java.patch, stack1, stack2, stack3 > > In some cases, an update to the directory is not detected by the > DirectoryGenerator. > Debugging the issue, I discovered that isValid() is called twice on the same > DirValidity, but it returns different values (-1 the first time, 1 the second > time). > Apparently, the reason for the inconsistency would be solved by removing the > first of the two lines that update the expiry time in the isValid() method in > DirValidity, but I am not sure whether this could cause problems in other > places. > A possibility would be that a DirValidity stores the fact that it already > detected it is invalid, and is changed so that it always return -1. But... > Are DirValidity objects reused? Could this change cause problems? I have not > tested, so I don't know. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira