[Looking for Charlie's main web site?]

Why you should think twice about leaving on the "public JRE" option of the Java JDK installer

This is a follow-up to a post I did in late 2014, CF911: 'Help! I've updated the JVM which ColdFusion uses, and now it won't start!'. In that post, I listed about a dozen common problems that befall people who try to update the JVM that CF is using (and it and this post apply as well to Lucee or BlueDragon, or indeed any Java application server).

In this post, I want to elaborate on one more common mistake. Well, mistake may be too strong word. It's about a default option when you run a Java JDK installer (see the other post for more on JDK vs JRE options).

In short, I make the case here for why you should NOT let the JDK installer implement its "public jre" option.

As I concluded in that earlier blog post, do beware that when you run the Java JDK installer, it will have a few options, one of which is the "public jre". You should generally choose NOT to install that, both for security reasons, AND to prevent Java from later prompting you or someone else to let it update itself, which then could break CF. One other reason is in case there may already be another JRE already installed and being used (by default) by other applications. Let me explain all these.

Testing for whether this is already another public JRE

First, let's just do a quick check.

If you go to the command prompt on your machine, and run the command "java" (no arguments, just the word java by itself), what do you get? If it's an error that the command can't be found, then I'd argue that's a good thing. It means that there is no "public JRE" on your machine...no version of Java that's been installed in such a way that it can be used by any program on the machine. That's what "public" means here (not that it's public to anyone OFF your server).

Why is it better not to have a public JRE?

So why is it better to NOT allow java to be run on the machine this way? For security reasons, primarily. Because then if somehow some bad guy DOES get onto your machine, or more likely just leverages some vulnerability and gets some sort of code ONTO the machine, they would be able to leverage Java without needing to know where it may be. It's "public".

What if you DO have a public JRE?

So what if you DO find that java does respond at the command prompt (in a directory where this is no java.exe, to be clear), showing the options for launching java programs? Well, that means you or someone DID let the Java installer enable that.

Or perhaps someone installed ANOTHER JVM on the machine, which enabled that public JRE.

And here's something to consider: maybe you should NOT be changing THAT public JRE, or you may break that other software relying on it. Perhaps there is some older software that relies on an older JVM version (like Java 7) of the public JRE you do have.

Note that you can do a java -version command to see the version that java command is running.

You can also find out in what location the OS is finding that Java command, using the "where java" command in Windows, or "whereis java" in Linux. If it's not the location that CF is pointing to (as can be viewed in the "settings summary" or "system information" pages of the CF Admin), then it's one that maybe exists for some other reason.

How does a public JRE get installed?

If it's that you or someone did use a java JRE installer (as opposed to a JDK installer, as discussed the second "problem" of the other blog post), then just note that this is what a "JRE installer" does: implement a public JRE, and you can't control that.

But if you download and run a JDK installer instead (as recommended in my other blog post), then while it DOES implement a public JRE by default, you can choose to NOT let it do it, and I'd argue you should.

It's the 3rd option on the 2nd screen of the installer (along with options for implementing the JDK developer tools and getting java source code). Pick the "public jre" option and choose the drop-down value, "this feature will not be available" (you can do that for the source code, too.)

Now the JDK will be installed, but NOT as a public JRE. Instead, you could proceed to point CF to this JDK as discussed in more detail in the other blog post. (Technically, as I discuss there, you point CF to the JDK's JRE folder. Yep, the JDK DOES have a JRE...it's now just not going to be "public". It will only be known to apps that you POINT TO it.)

Another reason to avoid the "Public JRE": auto-updating of Java

This is one of those two-edged sword problems. Let me explain.

1) If you install the JDK (and have CF pointing to it), but you leave ON the "public JRE" option, then this will also cause Java by default to track a fixed "expiration date" for that specific JRE. And when that date passes, you or someone on the box will get a prompt to update it.

And if you proceed to run the update, guess what? It will put in the new version (yay), but it will also attempt to uninstall the old version (boo). OK, let me clarify: if this was a JRE installer, implemented intentionally (for some other purpose), this auto-updating of Java would be fine, even desirable.

2) But when you have installed a JDK for CF to use, and left its "public jre" option enabled, then when this auto-update mechanism tries to run, it likely won't be able to do its job--because CF is running and pointing to it, and so has locks on some of the files in the JVM directory. So the uninstaller will dutifully delete what it can, leaving the few remaining ones in place.

3) And then guess what? the next time you try to restart CF (whether it's minutes, hours, days, or weeks later), suddenly "boom", CF won't start. Because most of the JVM files it needs won't be there anymore. (It had loaded classes and jars into memory when CF started previously, before the uninstall, but they're not there now.)

And you'll be pulling your hair out trying to figure out why.

4) Worse, it may be that the only reason you just restarted CF (perhaps in a long time) is because you just applied a CF update. And when CF doesn't start, what will you blame? the CF update. And perhaps you'll grumble about Adobe making such crap software, and so on.

But what really happened is that you or someone let the JVM update itself, and now CF can't find the JVM it's pointing to.

5) So if you choose to NOT enable the "public JRE" option of the JDK installer, you fix both problems discussed here: you don't enable (or change) any java command that can be run at the command line (which could be a security risk), and you don't cause Java to update itself (which could break CF when it next restarts).

6) Of course, this DOES mean that it's on YOU to then stay aware of when there are new JVM updates, and to implement them when you're ready, and to change CF to point to that new JVM location yourself. (If you forget that last point, then again CF will not start. See the 6th "problem" in the other blog post.)

So should you maybe just run a JRE installer rather than a JDK?

Given that last point about the auto-update mechanism and the changing of folder names "confusing" CF, one might make the point that instead of getting and running a JDK installer, they should just get and install a JRE installer (there is also a "server JRE" installer option offered by Oracle. See the other post for a link to the installer locations, etc.)

I think the motivation for that question may come from the fact that there was a time when JRE installers just implemented themselves in a Java directory which had no version number in their name (like C:\Java, on Windows). And so an argument might be made that then you could point CF to this one java folder, whose name should not change due to various updates within a major java version.

But I've noticed that with recent java versions (7 and 8), even the *JRE* installer (as I've used it for other reasons) has installed itself in a numbered foldername, such as C:\Program Files\Java\jre1.8.0_102 (in Windows). So no, that does not seem to "solve the problems" just discussed. (Whether one can use the JRE installer at all with CF is another question that I discuss a bit in the second issue of the other blog post.)

Conclusion

So in conclusion, the above reasons (primarily security and preventing auto-updates of Java) are why I would argue one should NOT implement the "public JRE" option of the java JDK installer.

Hope that's helpful, and I look forward to comments.

Comments
Charlie. Brilliant set of blog posts on this tricky subject. Thanks so much for taking the time to do this. Just one issue, that may or may not be related. On Windows 10, CF often returns a blank page. I have increased the size of the JVM settings in CF Admin, and it solves the problem. The default settings are quite low, but it concerns me that the application I have built, requires these higher settings. I load all of my component framework into the application scope. Is this a bad approach. I use a custom built DI Manager, using an XML file like Coldspring, but I am worried I may have implemented this incorrectly?
# Posted By Charles Robertson | 10/29/17 2:59 AM
New Java and JVM settings.
Changed minimum JVM heap to 1024
Changed maximum jvm heap to 5120
# Posted By Charles Robertson | 10/29/17 3:06 AM
My component framework is about 1.5MB in size, by the way, so that shouldn't be causing any memory issues, although, it contains around 24,000 lines of code?
# Posted By Charles Robertson | 10/29/17 3:59 AM
Charles, I'm afraid that no one could tell you if the new heap sizes you've set will suffice for the app you describe. There's just not enough info for anyone to say. It really is a trial and error thing.

I will note that if you were having outofmemory errors, you would have found references to such in the coldfusion-out.log (in CF's logs folder). Sometimes errors are NOT due to running out of heap. There can be other outofmemory errors, or other non-memory errors, of course.

But if the changes you made solved it, great. As for how this is "now happening", you refer only to running on Windows 10. Were you actually moving to that an older version of CF, like CF9?

If so, there are reasons that CF10 (and above) need more heap than CF9, because some cached things that were previously shared among all apps are now unique to each app.
# Posted By Charlie Arehart | 10/29/17 8:20 PM
Thanks for your advice. I was actually using Windows 7, CF11, and I never had any out of memory errors. I am now using Windows 10, CF11, and this problem occurs quite frequently. Both computers have about the same spec, although I would say the Windows 10 machine is slightly more powerful. The weird thing is that there is NO visible error. Just a blank white page. I now know that I have to restart Coldfusion, to remedy the issue. Thankfully this issue never happens on my production VPS, which uses Lucee rather than ACF.
# Posted By Charles Robertson | 10/30/17 2:54 AM
I thought of installing FusionReactor, but it is quite pricey. Do you know of any cheaper alternative java monitors?
# Posted By Charles Robertson | 10/30/17 3:00 AM
Charles, for simple JVM memory monitoring JConsole and VisualVM are free. Not as full-featured or CF-specific as FusionReactor but it may meet your needs on a development machine. Note as well FusionReactor has a developer edition for I think $199 if you want to run it just for development.

Steven Neiland has some information about configuring here:

http://www.neiland.n...
# Posted By Ivan McAvinchey | 10/30/17 5:05 AM
Charlie. Thanks very much for your advice. I will check out the java monitors, suggested. I have just had the same out of memory issue on one of my MURA CMS websites, this morning, which is kind of a relief! I trust the Blue River crew's expertise in framework building, so it must be an ACF issue!
# Posted By Charles Robertson | 10/30/17 6:48 AM
Hi, Charles. First, your last comment was in reply to Ivan M, not me. So thanks to him. :-)

And I would expand on his comment to say that one can use the free 14-day trial as well, which may suffice for your problem.

That said, i had said (in my previous comment) that you should look at the CF out log. You said in reply to that, "The weird thing is that there is NO visible error. Just a blank white page." I get that you see no error on screen. Please check the CF out log (look just before the times you have restarted, to see if it had anything at that time).

As for your problem, I would not regard it as "an ACF issue". I understand that tendency, but I spend my days troubleshooting issues for folks (whether on CF, Lucee, or other Java app servers). The problems are RARELY due to the app server itself. They are nearly always about configuration.

Now, I get that you're saying that you came from Windows 7 and CF11 to Windows 10 and CF2016, and "never had any out of memory errors". So first, let's see if your CF2016 logs confirm you are having any now.

And if they do, are you saying you have your CF11 logs and can search them and see no outofmemory (literally, search for that string in the coldfusion-out logs, and all the previous ones that have a different number appended to the filename). Yo may have had had them and not realized it. :-)

Bottom line, whatever is ailing your CF2016 server can almost assuredly be fixed. And it may not be someone else's problem. :-) I guess we'll leave it at, if you DO see oom errors and can solve it, great.

If you don't or can't, and you want it solved, that's what I do on a consulting basis, and I can often solve problems in less than an hour (even if it may have plagued folks for hours, days, or even weeks). See the consulting page at carehart.org, if it comes to that.

Or share what you learn, either as a solution or as perhaps a new clue we can follow up on.
# Posted By Charlie Arehart | 10/30/17 4:33 PM
Charlie. I actually said that I was using CF11 on both Windows 7 & 10 machines. I have never used CF2016. But, I will look at the logs, as suggested & report back.
# Posted By Charles Robertson | 10/30/17 5:14 PM
Right. Sorry. Everything else does indeed still stand. Looking forward to hearing what you find.
# Posted By Charlie Arehart | 10/30/17 5:16 PM
Charlie. I don't mean to be cheeky, because I am sure you are busy with paid consultancy, but I thought I might peek your interest with an issue that may be related. Although, I haven't solved the original blank screen problem, which occurs about once a day with CF11 on Windows 10, I came across another weird problem, which is far more serious.

Environment:

Windows 10 64bit
CF11,0,3,292866 64bit
Java Version 1.8.0_25 64bit

I decided to update CF11 from CF11 update 3 to update 13, by doing a single cumulative fix. I was really pleased because everything initially seemed fine, and I thought it might have fixed the original blank screen issue. When I went to login to my bespoke CMS, after submitting my login, I got a blank screen. So, I restarted CF, thinking everything would work again. But, every time I try and login, I get a blank screen, instead of being taken to my CMS dashboard. Now, I did a bit of investigation and I narrowed down the crash point to where my login routine uses jBCrypt-0.4.

I use jBCrypt-0.4 by instantiating it:

<cfset local.jbClassBCrypt = "#request.filepathasset#\lib\jBCrypt-0.4" />
<cfset local.javaloader = createObject('component','com.javaloader.JavaLoader') />
<cfset local.javaloader.init([local.jbClassBCrypt]) />
<cfset application.bcryptlib = local.javaloader.create("BCrypt") />

However, I did a bit of research and found the following link:

http://ports.su/java...

Which seems to state that jBCrypt-0.4 uses JDK1.8 as its dependency. So, I am using the correct JDK for this version of jBCrypt.

I then uninstalled CF11 update 13 and reinstalled CF11,0,3 and my login worked correctly again. This is annoying, because I think the update might have fixed the blank screen memory issue.

The plot thickens...

I will look at my logs tomorrow, and let you know what I find...
# Posted By Charles Robertson | 10/30/17 5:50 PM
Ok, so now it seems that you are really saying that it's some specific page that gets the problem (or pages that rely on calling this bcrypt library), is that right?

That's certainly a horse of a different color. I thought you were implying that it was any and all pages.

So as for your issue, well, it could be that CF embeds a bcrypt library of its own, and somehow there is a conflict (even though you are using javaloader). And perhaps there is a change in that library (or some other one embedded in CF that your library is dependent on) which is changing with one of those updates you are implementing or skipping.

You could of course try one update at a time, to find out which it is (only a little painful).

I will also point out that you no longer need to rely on that 3rd party java loader. CF10 added dynamic classloading of its own:

https://helpx.adobe....

I don't know if there's any reason to expect that the one approach would succeed where the other did not, but given your situation I thought I'd mention it.
# Posted By Charlie Arehart | 10/30/17 6:03 PM
Charlie. I am saying that there are 2 different problems.

The first is a non page specific 'out of memory' error that occurs in CF11,0,3

The second is jBCrypt page specific that only occurs after I update from CF11,0,3 to update 13.

Both problems present a blank white page.

But, I will check my logs tomorrow, so I may get a better idea of what is going on...
# Posted By Charles Robertson | 10/30/17 6:25 PM
OK, sorry I merged them. And to be clear, you've not really confirmed you had an OOM problem (from the logs) but rather you've inferred this is so from the fact that raising the heap made the problem go away, and fair enough.

So on that point, let me propose (while you wait to see the logs) that perhaps the issue is that there is a config difference between the two CF11 setups (though I realize you may think they are identical). You could output the Settings Summary page for both the old and new CF11 CF admins (there's even a button there to create a PDF), and in comparing the settings you may find something unexpected.
# Posted By Charlie Arehart | 10/30/17 6:32 PM
Yes. That is an excellent idea. I will try and copy the settings into 2 different text files & use my 'DiffMerge' software to pinpoint any config changes. The reason I thought the first issue might be an OOM, is that when this non page specific error occurs in my MURA CMS website, I do occasionally get a basic error displayed rather than a blank white screen. I will try & screen shot this, but it is hard to get the error to occur, on demand. However, I can encourage it to do so, by reducing the memory heap settings in CF Admin. So, I will start recording some hard evidence from now on.
# Posted By Charles Robertson | 10/31/17 4:00 AM
Charlie. Here are the coldfusion-out.log for the latest OOM error:

Oct 31, 2017 17:06:35 PM Information [http-bio-8500-exec-19] - Starting HTTP request {URL='https://ipapi.co/0:0:0:0:0:0:0:1/json', method='get'}
Oct 31, 2017 17:06:36 PM Information [http-bio-8500-exec-19] - HTTP request completed {Status Code=200 ,Time taken=1884 ms}
Oct 31, 2017 17:06:43 PM Information [http-bio-8500-exec-16] - Starting HTTP request {URL='http://localhost:850... method='get'}
Oct 31, 2017 17:06:46 PM Error [http-bio-8500-exec-21] - Metaspace The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\advert.establishmindfulness\index.cfm, line: 88
Oct 31, 2017 17:06:46 PM Information [http-bio-8500-exec-16] - HTTP request completed {Status Code=500 ,Time taken=2733 ms}
Oct 31, 2017 17:06:46 PM Information [http-bio-8500-exec-16] - Starting HTTP request {URL='http://localhost:850... method='get'}
Oct 31, 2017 17:06:47 PM Error [http-bio-8500-exec-5] - Metaspace The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\modules\ajax-change-scope-value-module.cfm''
Oct 31, 2017 17:06:47 PM Error [http-bio-8500-exec-13] - Metaspace The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\default\catalog\category\index.cfm''
Oct 31, 2017 17:06:48 PM Error [http-bio-8500-exec-20] - Metaspace The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\advert.establishmindfulness\index.cfm''
Oct 31, 2017 17:06:48 PM Information [http-bio-8500-exec-16] - HTTP request completed {Status Code=500 ,Time taken=2279 ms}
Oct 31, 2017 17:06:48 PM Information [http-bio-8500-exec-16] - Starting HTTP request {URL='http://localhost:850... method='get'}
Oct 31, 2017 17:06:49 PM Error [http-bio-8500-exec-7] - Metaspace The specific sequence of files included or processed is: C:\ColdFusion11\cfusion\wwwroot\advert.establishmindfulness\index.cfm''
Oct 31, 2017 17:06:49 PM Information [http-bio-8500-exec-16] - HTTP request completed {Status Code=500 ,Time taken=1154 ms}
# Posted By Charles Robertson | 10/31/17 12:12 PM
And here is the coldfusion-error.log:

Oct 31, 2017 5:06:46 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
   at coldfusion.compiler.ExprClassLoader.defineStatement(ExprClassLoader.java:70)
   at coldfusion.compiler.ExprClassLoader$StatementCache.fetch(ExprClassLoader.java:83)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.compiler.ExprClassLoader$ExprCache.fetchSerial(ExprClassLoader.java:384)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.compiler.ExprClassLoader.compileStatement(ExprClassLoader.java:244)
   at coldfusion.compiler.ExprClassLoader.evaluate(ExprClassLoader.java:149)
   at coldfusion.runtime.CFPage.Evaluate(CFPage.java:2321)
   at coldfusion.runtime.CFPage.IIf(CFPage.java:2311)
   at cfdump2ecfm2106091068$funcINITATTRIBS._factor27(/WEB-INF/cftags/dump.cfm:2319)
   at cfdump2ecfm2106091068$funcINITATTRIBS.runFunction(/WEB-INF/cftags/dump.cfm:2297)
   at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
   at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
   at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
   at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
   at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
   at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2840)
   at cfdump2ecfm2106091068._factor54(/WEB-INF/cftags/dump.cfm:460)
   at cfdump2ecfm2106091068.runPage(/WEB-INF/cftags/dump.cfm:1)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.filter.CFVariablesScopeFilter.invoke(CFVariablesScopeFilter.java:56)
   at coldfusion.tagext.lang.ModuleTag.doStartTag(ModuleTag.java:332)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
   at cfonError_include2ecfm5551770.runPage(C:\ColdFusion11\cfusion\wwwroot\advert.establishmindfulness\config\appcfc\onError_include.cfm:88)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
] with root cause
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
   at coldfusion.compiler.ExprClassLoader.defineStatement(ExprClassLoader.java:70)
   at coldfusion.compiler.ExprClassLoader$StatementCache.fetch(ExprClassLoader.java:83)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.compiler.ExprClassLoader$ExprCache.fetchSerial(ExprClassLoader.java:384)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.compiler.ExprClassLoader.compileStatement(ExprClassLoader.java:244)
   at coldfusion.compiler.ExprClassLoader.evaluate(ExprClassLoader.java:149)
   at coldfusion.runtime.CFPage.Evaluate(CFPage.java:2321)
   at coldfusion.runtime.CFPage.IIf(CFPage.java:2311)
   at cfdump2ecfm2106091068$funcINITATTRIBS._factor27(/WEB-INF/cftags/dump.cfm:2319)
   at cfdump2ecfm2106091068$funcINITATTRIBS.runFunction(/WEB-INF/cftags/dump.cfm:2297)
   at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
   at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
   at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
   at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
   at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
   at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2840)
   at cfdump2ecfm2106091068._factor54(/WEB-INF/cftags/dump.cfm:460)
   at cfdump2ecfm2106091068.runPage(/WEB-INF/cftags/dump.cfm:1)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.filter.CFVariablesScopeFilter.invoke(CFVariablesScopeFilter.java:56)
   at coldfusion.tagext.lang.ModuleTag.doStartTag(ModuleTag.java:332)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
   at cfonError_include2ecfm5551770.runPage(C:\ColdFusion11\cfusion\wwwroot\advert.establishmindfulness\config\appcfc\onError_include.cfm:88)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)

Oct 31, 2017 5:06:47 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:261)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache$1.fetch(TemplateClassLoader.java:509)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(TemplateClassLoader.java:387)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:642)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:127)
   at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
   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:58)
   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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   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:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
] with root cause
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:261)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache$1.fetch(TemplateClassLoader.java:509)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(TemplateClassLoader.java:387)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:642)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:127)
   at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
   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:58)
   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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   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:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)

Oct 31, 2017 5:06:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:261)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache$1.fetch(TemplateClassLoader.java:509)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(TemplateClassLoader.java:387)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:642)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:127)
   at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
   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:58)
   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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   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:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
] with root cause
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:261)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache$1.fetch(TemplateClassLoader.java:509)
   at coldfusion.util.LruCache.get(LruCache.java:180)
   at coldfusion.runtime.TemplateClassLoader$TemplateCache.fetchSerial(TemplateClassLoader.java:387)
   at coldfusion.util.AbstractCache.fetch(AbstractCache.java:58)
   at coldfusion.util.SoftCache.get_statsOff(SoftCache.java:133)
   at coldfusion.util.SoftCache.get(SoftCache.java:81)
   at coldfusion.runtime.TemplateClassLoader.findClass(TemplateClassLoader.java:642)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:127)
   at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
   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:58)
   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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   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:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)

Oct 31, 2017 5:06:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
] with root cause
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)

Oct 31, 2017 5:06:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace
] with root cause
javax.servlet.ServletException: ROOT CAUSE:
java.lang.OutOfMemoryError: Metaspace

   at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)
# Posted By Charles Robertson | 10/31/17 12:14 PM
Well there's the error, Charles, as I suspected. Do you see it:

OutOfMemoryError: Metaspace

So you're running out of metaspace, not heap. That's addressed by your maxmetaspacesize argument in the CF JVM arguments. You probably will see it set to 192, or if you imported settings from when you ran CF on Java 7, Adobe would have looked at your maxpermsize setting and used that to set the maxmetaspacesize. The two are not the same, but they're close enough that Adobe felt that was appropriate.

I would argue that you could either increase it (double it, and try again), or you could just remove it (because it has no default max. It would use as much memory as it needs, up to available memory on the box, so you really only need the max arg to tell it not to use too much.)

A still better approach would be to see what's causing you to reach the limit, but that''s too much to get into in this post, and really a simple increase (or removal) of that value should solve your problem.
# Posted By Charlie Arehart | 10/31/17 12:22 PM
Charlie. Thanks so much for your help. I have no idea how you know all this stuff? Java is not one of my hot topics! I have doubled the max metaspace, and if this does not work I will remove this setting, completely, as suggested.

I will also install JConsole to monitor my application and find out what the root cause might be. Because my MURA CMS websites have been causing this error as well, I am less anxious that it might be a fundamental flaw in my custom CMS architecture. Unless, of course, MURA CMS has a fundamental flaw in it's architecture. I realise that this might be dirty logic, but I have a feeling that this issue might be a result of just stretching the default memory capabilities of ACF, too far. Generally, I usually have a couple of MURA CMS websites and a couple of my custom CMS instances open in my web browser at any one time, so this is quite a big load for ACF to deal with.

Lastly, can I ask you what the difference between heap space & metaspace is?
# Posted By Charles Robertson | 10/31/17 12:53 PM
Charlie. I just thought I would report back. Your solution has worked like a charm. Thanks again...
# Posted By Charles Robertson | 11/7/17 4:40 AM
Very good to hear, Charles. ;-) Glad I could help.
# Posted By Charlie Arehart | 11/11/17 10:31 AM
You are a legend, sir. I am amazed about how sweetly my CMS is running now. Very fast & responsive and no crashes. In fact, I have all 3 of my custom CMS open at the same time, with 2 MURA CMS opened, and no problems. Just one small change has made an enormous difference. Thank heavens, there are Coldfusion gurus, like yourself, around. In the U.K, the Coldfusion scene is almost non existent, which is why I decided to set up my own company a few years ago. I love Coldfusion so much, and I wasn't prepared to throw 20 years of CF experience 'down the drain'!
# Posted By Charles Robertson | 11/11/17 1:42 PM
Thanks, Charles. Even better news to hear, of course. :-) And that performance is indeed as it should be. I was very surprised when your earlier comments gave a sense that somehow you thought CF wasn't up to that.

In my experience solving problems, they are nearly always configuration-oriented, not about CF having some inability to handle the setup or load at all.

BTW, as for your perception of CF being "non-existent in the UK", well trust me, everyone the world over (and yes, even all over the US) feels the same way. :-)

For some reason, some folks think that they should see an Adobe office and/or CF user group in every major city, along with hundreds of CF job postings in each city, and so on.

The truth is that we don't see that sort of presence anywhere in the US for ANY Adobe product, and I've never seen it for any IT product at all, to be honest.

As for CF jobs, since that's a topic of interest to some, they're out there of course (and in the hundreds. See cf411.com/cfjobs for more, as well as a couple of recent blog posts I've done.)

But no doubt it will never be enough for some people, who will either opt to move on to other work, or leave those with CF work looking to non-CF people to train up--and they can often be better developers with more modern skills anyway, which can be a win.

Anyway, I realize that this is its own topic that has been hashed to death elsewhere. I only commented on it in reply to yours. Let's leave it at that, especially given the focus of this blog post. :-)

One last thing, Charles: mind if I add a subset of your comment as a quote on my http://carehart.org/... page, listing client quotes? I realize you're not technically a client. I could just list you anonymously as "a commenter on my blog" or I could show also your name, company, and/or site if you prefer. I would use this part:

"You are a legend, sir. I am amazed about how sweetly my CMS is running now. Very fast & responsive and no crashes. Just one small change has made an enormous difference. Thank heavens, there are ColdFusion gurus, like yourself, around."

That is just as representative of how I help "real" clients, as reflected in comments from the dozens of others listed there over the years. Still, I wanted to ask you , just like I have always asked them before posting their quote.
# Posted By Charlie Arehart | 11/13/17 2:18 PM
Of course, you can use my testimonial. No problem. As far as CF jobs go, there used to be a decent amount of vacancies available, in the U.K., a few years ago, but in the last 12 months, the job market has shrunk, noticeably. I had hoped with the advent of Railo/Lucee, which I use for production, that CF development might have gained some popularity, but sadly this doesn't seem to be the case. Never-the-less, my enthusiasm for CF, remains undiminished! Along with the web service I am building, I generally get my paid work through private clients, who don't seem to mind what language is driving a system, as long as it works.
# Posted By Charles Robertson | 11/13/17 3:20 PM
Charlie. I know this is very cheeky of me, and please tell me to do one, if you feel so inclined, but I am tearing my hair out over this one. I promise this will be the last time I bother you, but I reckon if anyone can shed some light on this one, you can.

It is a very simple scenario, and believe me it was working absolutely fine on CF11 Windows 7, but for some strange reason on CF11 Windows 10, deleting a file does not work, because I think the file is being locked by Coldfusion:

I have double checked the path and it is correct:

<cflock name="delete_globalsettingsimage" type="exclusive" timeout="40">
   <cffile action="delete" file="#request.filepath#\#uploadfolder4#\#filenameassociation#" />
</cflock>

The <cffile...> part of the code is line 1360

And the error:

ColdFusion could not delete the file C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/cache/file/brand-logo-email/5E797506-84A6-C828-BCCF23F51DB922B1.png for an unknown reason.

The error occurred in C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1360
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1358
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1349
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1145
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1144
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 949
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 4
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm: line 1
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm: line 215
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm: line 137
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm: line 4
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm: line 1
Called from C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/default/cms/settings/global-settings/index.cfm: line 7

1358 : <cfif FileExists("#request.filepath#\#uploadfolder4#\#filenameassociation#")>
1359 : <cflock name="delete_globalsettingsimage" type="exclusive" timeout="40">
1360 : <cffile action="delete" file="#request.filepath#\#uploadfolder4#\#filenameassociation#" />
1361 : </cflock>
1362 : <cfset destinationfilename = ListFirst(filenameassociation,".") & imagesuffixes4['top'] & "." & ListLast(filenameassociation,".")>

Resources:

Check the ColdFusion documentation to verify that you are using the correct syntax.
Search the Knowledge Base to find a solution to your problem.

Browser    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Remote Address    0:0:0:0:0:0:0:1
Referrer    http://localhost:850...
Date/Time    17-Nov-17 05:25 PM
Stack Trace
at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor35(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1360) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor36(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1358) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor46(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1349) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor109(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1145) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor119(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1144) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor141(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:949) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor151(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:4) at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409.runPage(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/content/cms-settings-global-settings-content.cfm:1) at cfcms2dpage2dtemplate2ecfm671025178._factor3(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm:215) at cfcms2dpage2dtemplate2ecfm671025178._factor7(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm:137) at cfcms2dpage2dtemplate2ecfm671025178._factor8(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm:4) at cfcms2dpage2dtemplate2ecfm671025178.runPage(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/includes/cms-page-template.cfm:1) at cfindex2ecfm757710257.runPage(C:/ColdFusion11/cfusion/wwwroot/establishmindfulness/default/cms/settings/global-settings/index.cfm:7)

coldfusion.tagext.io.FileUtils$CouldNotDeleteFileException: ColdFusion could not delete the file C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\cache\file\brand-logo-email\5E797506-84A6-C828-BCCF23F51DB922B1.png for an unknown reason.
   at coldfusion.tagext.io.FileUtils.delete(FileUtils.java:1037)
   at coldfusion.tagext.io.FileTag.delete(FileTag.java:550)
   at coldfusion.tagext.io.FileTag.doStartTag(FileTag.java:355)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor35(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1360)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor36(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1358)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor46(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1349)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor109(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1145)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor119(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1144)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor141(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:949)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409._factor151(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:4)
   at cfcms2dsettings2dglobal2dsettings2dcontent2ecfm212604409.runPage(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\content\cms-settings-global-settings-content.cfm:1)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
   at cfcms2dpage2dtemplate2ecfm671025178._factor3(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\cms-page-template.cfm:215)
   at cfcms2dpage2dtemplate2ecfm671025178._factor7(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\cms-page-template.cfm:137)
   at cfcms2dpage2dtemplate2ecfm671025178._factor8(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\cms-page-template.cfm:4)
   at cfcms2dpage2dtemplate2ecfm671025178.runPage(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\includes\cms-page-template.cfm:1)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
   at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2986)
   at cfindex2ecfm757710257.runPage(C:\ColdFusion11\cfusion\wwwroot\establishmindfulness\default\cms\settings\global-settings\index.cfm:7)
   at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)
   at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)
   at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572)
   at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
   at coldfusion.filter.IpFilter.invoke(IpFilter.java:45)
   at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:466)
   at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:42)
   at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
   at coldfusion.filter.PathFilter.invoke(PathFilter.java:142)
   at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
   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:58)
   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.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151)
   at coldfusion.CfmServlet.service(CfmServlet.java:219)
   at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   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:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:121)
   at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:745)


Let me provide some context to this operation. Before I attempt to delete this file, I have uploaded a different file, but I cannot see how the error would be related, because the 2 files are unique.

If I then try and delete the file, manually, that is causing the error, Windows will not allow me to do so, stating that:

"The action cannot be completed because the file is open in ColdFusion.exe"

If I then restart ColdFusion, I am then able to manually delete the file.

If I try and delete the file, using a test page without the upload operation before hand, it successfully deletes the file, but only directly after I have restarted ColdFusion.

If I try and delete the file, using a test page without the upload operation before hand, but after having tried to delete it using the non test page [with the upload operation], it will not delete the file and throws the same exception.

I am totally baffled.

As I said, I have hundreds of file delete operations in my custom CMS, and all of these operations worked successfully, in CF11 Windows 7.

Environment:

Windows 10 64bit
CF11,0,3,292866 64bit
Java Version 1.8.0_25 64bit
# Posted By Charles Robertson | 11/17/17 11:36 AM
Charles, I'm sorry but I have to stop you. This is a blog post about the JDK, and you're using it as a means to ask generic CF troubleshooting problems. I do love to help, but it's not fair to readers of (and subscribers to) this post to have such unrelated discussions here.

Did you know that there is an Adobe CF forum? That would be the place to ask these questions, and there would be many more people than me alone who would see them (and I do see them. For a very long time, the mechanism in the CF forums that allowed me to be notified of all forum posts was broken. It was fixed recently.)

So please grab all your content in this question and post it instead as a question on the forums: https://forums.adobe... and we can take this up there. (That said, I am at the Adobe CF Summit, which ends today, so I may not see it for a couple of days. And I really can't at the moment take in all you have said here, to offer a quick answer. Sorry.)

And if anyone may be tempted to offer an answer to his question, please hold off and wait for him to post there, again for the sake of others subscribed to or reading this post and only interested in that topic. (Charles, if you want to add the URL to the question here, once you create it, that would be fine.)
# Posted By Charlie Arehart | 11/17/17 11:45 AM
I understand. Sorry.
# Posted By Charles Robertson | 11/17/17 1:03 PM
I guess it was a knee jerk reaction after having almost having thrown my computer out of the window!

I will post this on the forum as suggested...
# Posted By Charles Robertson | 11/17/17 1:32 PM
Here is the link to the topic in the Coldfusion section of Adobe Forums:

https://forums.adobe...
# Posted By Charles Robertson | 11/18/17 4:34 AM
Copyright ©2017 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting