The Runtime service is not available – ColdFusion 2018

FusionReactor delivers Fantastic insight
The Top Application Performance Monitoring (APM) Software for Small-Business

The Runtime service is not available – ColdFusion 2018

A few days ago I got an error with my ColdFusion 2018 server which I had not seen in many years:

coldfusion.server.ServiceFactory$ServiceNotAvailableException: The Runtime service is not available. at coldfusion.server.ServiceFactory.getRuntimeService(ServiceFactory.java:121) at coldfusion.graph.InteractiveGraphingServiceImpl.load(InteractiveGraphingServiceImpl.java:445) at coldfusion.graph.InteractiveGraphingServiceImpl.start(InteractiveGraphingServiceImpl.java:425) at coldfusion.server.CFService.setupGraphing(CFService.java:402) at coldfusion.server.CFService.start(CFService.java:688) at coldfusion.server.j2ee.CFStartUpServlet.startCFService(CFStartUpServlet.java:567) at coldfusion.server.j2ee.CFStartUpServlet.init(CFStartUpServlet.java:510) at javax.servlet.GenericServlet.init(GenericServlet.java:158) at coldfusion.bootstrap.ClassloaderHelper.initServletClass(ClassloaderHelper.java:121) at coldfusion.bootstrap.BootstrapServlet.init(BootstrapServlet.java:111) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:971) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4886) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at com.adobe.coldfusion.launcher.Launcher.run(Launcher.java:957) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at com.adobe.coldfusion.bootstrap.Bootstrap.init(Bootstrap.java:100) at com.adobe.coldfusion.bootstrap.Bootstrap.main(Bootstrap.java:185)

I had seen this error when running ColdFusion 9 many years ago but not for some time. I could not figure out what I had broken.

After some Googling, it seemed to be that I could have done something when I had installed ColdFusion 2018 Update 4. I could only find old articles on the web like: Why is ColdFusion throwing a 500 Internal Server error after APSB14-23 hotfix installation? but nothing specific, so I tried the following:

cd /opt/coldfusion2018/cfusion/hf-updates/
../../jre/bin/java -jar hotfix-004-314546.jar

After following the updater I checked the update.log which lives in the logs directory. There didn’t seem to be any issues with the update so I tried to start the CF servers again. It did not work. I was presented with lots of exceptions like above and the server didn’t function. I was unable to access the CF admin UI but the logs didn’t tell me what could be wrong. I was very close to reinstalling CF 2018. After some investigation and lots of frustration, I remembered what I had been investigating when I last ran my CF 2018 server. It was the Redis session storage with CF 2018. Specifically related to Performance issue with Redis session management on Adobe ColdFusion servers with FusionReactor or Adobe Performance Monitoring Toolset (PMT). I had configured the session manager as shown below:

The Runtime service is not available – ColdFusion 2018, FusionReactor

I no longer had the local Redis server running (and had uninstalled it), but this was not just affecting sessions, it was completely breaking the CF admin UI preventing me from disabling the Redis session storage.

After some help, I found that I could remove the Redis session manager by editing the lib/neo-runtime.xml file.

I changed the var from:

<var name='sessionStorage'><string>redis</string></var>

to:

<var name='sessionStorage'><string>memory</string></var>

Now the ColdFusion 2018 server starts 🙂