Upgrade from lucee 5.3.6. to 5.3.9

Appreciate any guidance around upgrading lucee from 5.3.6.61 to 5.3.9 version. I went through the page How to update Lucee :: Lucee Documentation, however don’t get same options on our dev admin page.

It is a windows installation, do I need to start with fresh windows installation for upgraded version or is there a better way to do it.

the admin should look like this?

anyone up for updating / improving the docs page, I’m swamped at the moment

I get below screen and not the expected one, not sure if there is some way that it was disabled.

there might have been a bug in that release relating to that, was a while ago and I can’t remember

anyway, you can achieve the same by downloading the core file from https://download.lucee.org/

i.e. https://cdn.lucee.org/5.3.9.141.lco

and dropping it into your deploy folder as per Deploying Lucee :: Lucee Documentation

thanks, I will give this a try and will update how I get on with it, any things to consider in relation to configuration etc?

you doing this in dev or prod?

should be a seamless upgrade, but you’ve got proper backups in place right :slight_smile:

this is local at first :slight_smile: and then I will move to higher environments. For Prod obviously will have all the backup including server back up :wink:

Not looking good, got below while trying to get to admin page

HTTP Status 500 – Internal Server Error


Type Exception Report

Message Servlet execution threw an exception

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.NoClassDefFoundError: lucee/runtime/listener/ClassicApplicationContext lucee.runtime.CFMLFactoryImpl.getPageContextImpl(CFMLFactoryImpl.java:154) lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1095) lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1073) lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Root Cause

java.lang.ClassNotFoundException: Unable to load class ‘lucee.runtime.listener.ClassicApplicationContext’ because the bundle wiring for lucee.core is no longer valid. org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1562) org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) lucee.runtime.CFMLFactoryImpl.getPageContextImpl(CFMLFactoryImpl.java:154) lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1095) lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1073) lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.

Also the /deploy folder has another folder created /failed-to-deploy and the core file is pushed to that

In case you have all your settings set in your Application.cfc and scheduler tasks added programatically, so that you won’t have any problems wiping out your server-context and web-contexts, an alternative would be:

  1. Stop Lucee/Tomcat
  2. Download the latest lucee.jar and overwrite the existing lucee.jar at path-to-lucee/tomcat/lib/ext/lucee.jar
  3. Restart Lucee and wait the contexts to be deployed.

If you need to save your admin settings before upgrading, you could also use commandbox cfconfig to backup the settings of your contexts to restore them back later after the upgrade. I’ve read somewhere that commandbox cfconfig now also saves scheduled tasks (thanks to a sponser who paid for that functionality).

1 Like

Thanks I will give this a go and update you

cfconfig really is the beez-kneez!
Export / import configs / making changes…

You don’t need to use “coldBox” either to use all the utilities that come along with it.

I use it in a script - so that can be sure that I always get the same settings.
I used to copy out the XML files and copy them back in to a new install…
But being able to visually see what I am setting (in the script) is much more informative.

1 Like

Hi @Zackster
I can help with this.

Hi guys,

I got the error below after I tried a Lucee update from 5.3.8.206 to 5.3.9.133 (or 141).

I tried to find something useful in the log files but unfortunately without success.

The lucee service will run again once the patch has been removed.

Help is very welcome.

Cheers
Marc

#####################

OS: Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-121-generic x86_64)

Type: Exception Report

Message: Not a directory

Desc: The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception:

javax.servlet.ServletException: Not a directory
java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
java.base/java.io.File.createNewFile(File.java:1026)
lucee.commons.io.res.type.file.FileResource.getOutputStream(FileResource.java:261)
lucee.commons.io.retirement.RetireOutputStream.getOutputStream(RetireOutputStream.java:54)
lucee.commons.io.retirement.RetireOutputStream.write(RetireOutputStream.java:131)
java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233)
java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312)
java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:316)
java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153)
java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:254)
lucee.commons.io.log.log4j2.appender.ResourceAppender.setFile(ResourceAppender.java:120)
lucee.commons.io.log.log4j2.appender.ResourceAppender.(ResourceAppender.java:52)
lucee.commons.io.log.log4j2.Log4j2Engine.toResourceAppender(Log4j2Engine.java:524)
lucee.commons.io.log.log4j2.Log4j2Engine.getAppender(Log4j2Engine.java:371)
lucee.commons.io.log.LoggerAndSourceData.getLog(LoggerAndSourceData.java:135)
lucee.runtime.config.ConfigImpl.getLog(ConfigImpl.java:3705)
lucee.runtime.config.ConfigImpl.getLog(ConfigImpl.java:3694)
lucee.runtime.config.XMLConfigWebFactory.load(XMLConfigWebFactory.java:438)
lucee.runtime.config.XMLConfigWebFactory.newInstance(XMLConfigWebFactory.java:282)
lucee.runtime.engine.CFMLEngineImpl.loadJSPFactory(CFMLEngineImpl.java:927)
lucee.runtime.engine.CFMLEngineImpl.addServletConfig(CFMLEngineImpl.java:796)
lucee.loader.engine.CFMLEngineWrapper.addServletConfig(CFMLEngineWrapper.java:87)
lucee.loader.engine.CFMLEngineFactory.getInstance(CFMLEngineFactory.java:216)
lucee.loader.servlet.CFMLServlet.init(CFMLServlet.java:42)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:834)

Hi @andreas, Sorry I was caught up in another task, there is no existing folder ext under lucee/tomcat/lib, does a new folder needs to be created?

Current lucee jar is placed at below path, kindly suggest

image

Yes, that’s the one. What I usually do as a quick update, is (after stopping Lucee/Tomcat) rename that old files extension lucee-5.3.6.61.jar to lucee-5.3.6.61.old-jar. Doing that you’ll keep a copy of that Lucee version as a bsckup, and it won’t be deployed with that extension. Then simply download the new lucee.jar to that exact folder. Then restart lucee/tomcat.

1 Like

@andreas thanks this has helped, the version has bene upgraded, I am doing initial test to ensure no configuration is lost !!

Thanks again, will drop a note here for any issues faced during testing.

1 Like

Hi Zac,
Finally getting my around to this;

In the page;

lucee-docs\docs\04.guides\03.updating-lucee\01.update\page.md

is;
![update.png](https://bitbucket.org/repo/rX87Rq/images/1091096189-update.png)

but how do I replace this image with a new one?
Or even add a new one?

DO I add it locally (somewhere) and the build process moves it?
Or do I need access to the AWS resource?
Thanks!

Gavin,

I’m not sure, but I think a place for Images would be at lucee-docs/docs/_images at master · lucee/lucee-docs · GitHub

yep,

or (if it works), I’d rather keep images next to the source page.md file, _images is ok for generic images, but otherwise it becomes a bit of disconnected dumping ground

1 Like

I have created LD-155
And a PR for the changes.

1 Like