Copy link to clipboard
Copied
I am getting an odd error and looking for help.
Every so often I get the error "could not find the included template"
eg.
"Could not find the included template /includes/CT_MCT_checklogin.cfm."
"Could not find the included template /tools/CheckSettings.cfm."
The scripts are running a lot but the error only occurs about 0.003% of the time. (ie. one script is run every 60 seconds but the error only occurs about 3-4 times every day.)
The randomness of the error has me baffled as to what to do to handle this. When the error occurs I can refresh the page in the browser and it works again.
Has anyone else ever encountered this problem?
Note: we upgraded from Coldfusion 7 to 10 a few weeks ago and this has been happening ever since.
Copy link to clipboard
Copied
Are the base paths physical directories within the CF root, or are they mappings? If the latter, where are the mappings set: CFAdmin or Application.cfc?
--
Adam
Copy link to clipboard
Copied
These are physical directories from the web root directory. The odd thing is that they work 99.997% of the time but cause an error on the other 0.003%.
Copy link to clipboard
Copied
The same thing is happening to me. I'm using physical directories as well but I'm seeing random "Could not find the included template" errors. It only seems to happen when robots visit the website like GoogleBot and BingBot. Not sure what to do about it but it's very annoying.
Copy link to clipboard
Copied
Hey Kurt,
I'm curious. Are you still seeing this issue? I am most certainly seeing it, 6 times today so far and all are GoogleBot.
Copy link to clipboard
Copied
If anyone is having the same issue please vote for the bug request:
Copy link to clipboard
Copied
This issue still exists in CF10 (3 years later) and is listed as an open bug with the status "CannotReproduce".
Copy link to clipboard
Copied
Hi James,
Could you please help us with the reproducible case, I will work with the team to get this addressed.
Thanks,
Priyank
Copy link to clipboard
Copied
I wish I could reproduce it. I wish I could generate a test case. It's been occurring on all ColdFusion 9 older-Fusebox-hybrid framework websites when we migrate to ColdFusion 10. They worked fine on ColdFusion 6, 7, 8 & 9. After moving to CF10, it occasionally throws the error. I have FusionReactor installed. I do not have template caching enabled.
Windows Server 2012 R2
CF 10,0,17,295085
Java 1.8.0_77
Copy link to clipboard
Copied
I too have this problem. Here are some notes, which may help others that have it, or may help Adobe track down the root cause.
Copy link to clipboard
Copied
Can you log the cfcatch or error object? I'm guessing it's something with SES directory traversal and the error object would confirm this.
I have experienced this or something very similar using the fusebox framework and it was related to the SES functionality that is built in to FB. I'm in the process of changing most everything to FW1 and I have not had the issue since.
Copy link to clipboard
Copied
Here is the stack trace for one of the errors.
coldfusion.tagext.lang.IncludeTag$NoSuchIncludeTemplateException: Could not find the included template /util/footer.cfm.
at coldfusion.tagext.lang.IncludeTag.setTemplate(IncludeTag.java:368)
at cflistinglist2ecfm1678004570.runPage(C:\home\xxxxxxx.com\wwwroot\listinglist.cfm:757)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2799)
at cfApplication2ecfc579331529$funcONREQUEST.runFunction(C:\home\xxxxxxx.com\wwwroot\Application.cfc:62)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414)
at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:108)
at coldfusion.runtime.AppEventInvoker.onRequest(AppEventInvoker.java:300)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:424)
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:112)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:79)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
at coldfusion.CfmServlet.service(CfmServlet.java:219)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:271)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:306)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:166)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:299)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:271)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:306)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:246)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.seefusion.Filter.doFilter(Filter.java:49)
at com.seefusion.SeeFusion.doFilter(SeeFusion.java:1500)
at sun.reflect.GeneratedMethodAccessor59.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:274)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:271)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:306)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:246)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:57)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Copy link to clipboard
Copied
We started experiencing the same issue when we upgraded to ColdFusion 2016 from ColdFusion 9. We did go from a single instance of ColdFusion to a cluster of 3 ColdFusion instances when we upgraded. I have wondered if it was related to that architecture changed. We have the same exact issue though. The cfinclude works the majority of the time and we have had zero user reports of an issue when it does happen.
Copy link to clipboard
Copied
Same issue I am facing when migrating from CF11 to CF2021. The Error coming only in a few pages rest are working fine. If you came out from this issue then guide me. I have already mapped the path in CF admin setting but still same error. If removing CF include from that particular page throwing an error related to their header footer.
Copy link to clipboard
Copied
To work around this inconsistent bug ColdFusion 10, I started adding the sub-directories to the root application.cfc as "mapped" directories. (I'm not sure if this works in CF11 or is needed in CF2016, but it can't hurt.) After doing this, we haven't seen any recurring errors in our log files.
this.rootDir = getDirectoryFromPath(getCurrentTemplatePath()); this.mappings = {}; this.mappings[ "/includes" ] = "#this.rootDir#includes/"; this.mappings[ "/tools" ] = "#this.rootDir#tools/";
Copy link to clipboard
Copied
We have been experiencing the NoSuchIncludeException on Coldfusion 2018 Update 15. We introduced a fix based on the this.mappings suggestion. The number of occurrences looks lower and smoother than before the code change, but it still flares up from time to time. This happens across several servers at intermittent times. Our solution has been to watch for a server that has several occurrences in a small timespan and pull it out for a reboot before an important area of the application gets affected.
We have been addressing some occurrences by changing the code from an absolute path to a relative file path like the error message itself suggests, but we have seen the error message on relative paths on a few occasions too.
The code in Application.cfc looks like this:
<!--- called first in onApplicationStart like <cfset setMappings() /> --->
<cffunction name="setMappings" returnType="void" output="false" access="private">
<cfif (NOT structKeyExists(this, "rootDir") OR this.rootDir EQ "")>
<cfset this.rootDir = ExpandPath(path="./") />
</cfif>
<cfif (NOT structKeyExists(this, "mappings") OR NOT isStruct(this.mappings))>
<cfset var tempMappings = {} />
<cfset var rootLevelFolders = DirectoryList(ExpandPath(path = "./"), false, "path", "*", "asc", "dir") />
<cfloop array="#rootLevelFolders#" index="local.folderPath">
<cfset var mappingKey = getMappingKey(local.folderPath) />
<cfif Left(mappingKey, 2) EQ "/.">
<cfcontinue />
</cfif>
<cfset tempMappings[mappingKey] = local.folderPath />
</cfloop>
<cfset this.mappings = tempMappings />
</cfif>
</cffunction>
Copy link to clipboard
Copied
I've had this issue countless times over the years, and it's causing me problems again.
It's easy to replicate:
try {
for (i = 0; i < 10000000; i++) {
include "/mappedfolder/subfolder/test.cfm";
}
}
catch (any e) {
writeDump(e);
}
Here's a stacktrace:
coldfusion.tagext.lang.IncludeTag$NoSuchIncludeTemplateException: Could not find the included template /mappedfolder/subfolder/test.cfm. at coldfusion.tagext.lang.IncludeTag.setTemplate(IncludeTag.java:433) at cftest2ecfm235886531.runPage(C:\sites\sandbox\test.cfm:4) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:254) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:743) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:484) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:153) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:223) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at jdk.internal.reflect.GeneratedMethodAccessor90.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134) at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:772) at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344) at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207) at com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:809) at com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36) at jdk.internal.reflect.GeneratedMethodAccessor91.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71) at jdk.internal.reflect.GeneratedMethodAccessor89.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54) at com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:42) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:552) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834)
Posted a new bug report, as I'm unable to comment on the existing one which has now been closed.
https://tracker.adobe.com/#/view/CF-3519649
Copy link to clipboard
Copied
Posted a link to the old bug report... here's the new one:
Copy link to clipboard
Copied
Simiane, I'll share a thought that no one has yet, at least about your specific matter of including a file many times. Did you know that CF10 added a new runonce="true" attribute for cfinclude (and the script equivalent)? Its purpose is to prevent CF from really re-running an included file once it's already been once in a given request.
Does your error stop if you change your code to use that?
include "/mappedfolder/subfolder/test.cfm" runonce="true";
Of course, doing that runonce isn't ALWAYS the right thing for some cfinclude processing, but in your case it certainly would seem to make sense (and should make the request run far faster, as it's not really executing the code in the included file. It literally prevents that.)
But I realize you're just trying to simulate how "multiple includes" in a request can lead to the error, and it may be that your exaggerated example is needed to "prove the point". Still, you may well be really doing "multiple includes" in your request for whatever reason (some looping, or some cfc call causing repeated calls to some include, etc.), and using this runonce might suffice as the solution in that case as well. Again, no one mentioned it so I wanted to at least propose it as a possible solution.
It's also not clear whether the original problem raised in this 2013 thread (or the comments since then) let alone that other tracker ticket also from 2013 are necessarily about this issue of multiple includes (and of a mapped path), though they may well be.
Let us know if it helps you, or for some reason "cannot" be used.
Copy link to clipboard
Copied
Hi Charlie,
Thanks for the input. Interestingly, adding `runonce="true"` results in the error occurring on the second iteration of the loop, every time. That's very odd to me... I'd expect runonce to mean the template is stored in and recalled from memory.
In any case, it's a bit of a red herring... The tight loop is merely to illustrate an intermittent error - the fact that on occasion the file returns as not found, even though it exists on the filesystem. In my production scenario I'm not including the same file multiple times in a single request, but requests will include multiple files and on occasion one of them can't be found. This manifests as occasional requests to websites resulting in an error.
It's a problem I've seen many times over the years on various systems and applications, though I've never been able to get to the bottom of it.
Interestingly, I cannot replicate the error on a freshly spawned CF instance via CommandBox, which would indicate that something else in my production setup is at play here. It feels like some kind of race condition, and perhaps something to do with Windows filesystem handling...
Copy link to clipboard
Copied
I hear you. But to be clear in my testing I got no such error on the second iteration.
So indeed this seems clearly a specific case for you, but I appreciate both that this is a synthetic case and also that this broader problem has plagued some for years. Again, my focus here was just to see if the runonce might help in your specific example (like it did for my testing), and then if that may help others--and it still may, though not for you.
Yep, you'll want to find what's up on your end that it failed so readily.
Finally, my take on the runonce is that it literally does not run it any time beyond the first. As such, WHATEVER it did (create vars, create output, etc) is merely "done once", not that "the template is stored in and recalled from memory", for what that's worth.
Copy link to clipboard
Copied
I think I've narrowed it down, and am now able to replicate in a fresh installation.
The issue is with mappings...
For various reasons, in my application I have to add a mapping from within the onRequestStart function. The value of the mapping is stored in the Application scope, and I don't have access to that in the constructor.
Doing this works fine most of the time, but occasionally and for no reason I can figure out, the mapping is not avaiable.
What's odd about this is that in my test script as posted above, the file is being included in a loop from within the same request. Since the mapping is set up in onRequestStart(), it is available when the loop begins... the mapping then becomes unavailable part way through the loop!
In order to replciate this using my script above, create a mapping to 'mappedfolder' in the onRequestStart() function. Then, run multiple requests to the script in different browser tabs at the same time. What I've found is that oftentimes, making a new request will crash the already running request, due to the mapping to 'mappedfolder' no longer being present.
Copy link to clipboard
Copied
So potentially, this must be a race condition - the second request recreates the mapping, and presumably there's a period of nanoseconds where the mapping doesn't exist for the first request.
I guess that makes sense, but I'm surprised the mapping isn't stored for the duration of the request - i.e. every iteration of the loop has an include, and I presume the include code is looking directly at the application-wide mapping.