[ 
https://issues.apache.org/jira/browse/SLING-8427?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Munteanu resolved SLING-8427.
------------------------------------
    Resolution: Fixed

> Sling Dynamic Include - TTL not being set on synthetic resources
> ----------------------------------------------------------------
>
>                 Key: SLING-8427
>                 URL: https://issues.apache.org/jira/browse/SLING-8427
>             Project: Sling
>          Issue Type: Bug
>    Affects Versions: Dynamic Include 3.1.2
>         Environment: AEM 6.3 - AEM 6.5
>            Reporter: Eric Van Geem
>            Assignee: Robert Munteanu
>            Priority: Major
>             Fix For: Dynamic Include 3.1.8
>
>
> When a TTL value is configured, the Cache-Control header does not get set in 
> the response headers of the resource when the resource is synthetic. 
> *Expected behavior:*
> The existing SyntheticResourceFilter is responsible for identifying if the 
> requested resource is synthetic, and if so, force the resourceType into the 
> request by taking the resourceType from the request URL suffix. Then, the 
> CacheControlFilter is to be invoked after this which reads the resource from 
> the request (now the forced resourceType from the prior step) and sets the 
> appropriate Cache-Control header if this resourceType is configured for SDI.
> *Actual behavior:*
> The CacheControlFilter is never executed after the SyntheticResourceFilter 
> sets the forced resourceType in the request for the synthetic resource, thus 
> the Cache-Control response header never gets set. 
>  
> More details:
> I believe the cause of this issue is due to the way the CacheControlFilter's 
> filter scope is defined; it is missing the *forward* filter scope. The 
> SyntheticResourceFilter forces the resourceType by passing a new object of 
> options to the request dispatcher 
> {code:java}
> dispatcher = slingRequest.getRequestDispatcher(resource, options);{code}
> This is then followed by a call to 
> {code:java}
> dispatcher.forward(request, response);{code}
> to forward the request in the filter chain.
> This is where the CacheControlFilter should receive the request, but does not 
> happen because the CacheControlFilter's filter scope has not been declared to 
> receive forwarded requests. Simply adding the *forward* scope to the 
> CacheControlFilter's list of scopes seems to resolve the issue.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to