Copy link to clipboard
Copied
System Information:
MACOS: Catalina 10.15.7
Docker DEV Envirment – MSSQL + Coldfusion:
Context:
Recently updated docker software and now dev envirment won't complete build. Worth noting this used to work prior to the update but there was a few unrelated changes that needed to be made - i.e. the MSSQL image needed to be pulled from a new repository. Once I changed the DockerFile FROM microsoft/mssql-server-linux:2017-latest to the newer repository... FROM mcr.microsoft.com/mssql/server:2017-latest the "docker-compose up" build process worked up until initiating the database.
The build is now stuck on this Terminal message and never completes:
cfml_1 | WARNING: org.xerial's sqlite-jdbc is not loaded.
cfml_1 | Please provide the jar on your classpath to parse sqlite files. cfml_1 | See tika-parsers/pom.xml for the correct version.
database_1 | 2021-07-19 21:34:50.58 spid51 Using 'dbghelp.dll' version '4.0.5' 2021-07-19 21:36:32.70 spid51 Attempting to load library 'xplog70.dll' into memory. This is an informational message only. No user action is required. 2021-07-19 21:36:32.79 spid51 Using 'xplog70.dll' version '2017.140.3401' to execute extended stored procedure 'xp_msver'. This is an informational message only; no user action is required.
cfml_1 | [INFO ] runwar.context: Jul 19, 2021 22:38:43 PM Information [scheduler-0] - Run Client Storage Purge
cfml_1 | [INFO ] runwar.context: Jul 19, 2021 23:45:43 PM Information [scheduler-0] - Run Client Storage Purge
cfml_1 | [INFO ] runwar.context: Jul 20, 2021 00:52:43 AM Information [scheduler-0] - Run Client Storage Purge
cfml_1 | [INFO ] runwar.context: Jul 20, 2021 02:26:11 AM Information [scheduler-2] - Run Client Storage Purge
cfml_1 | [INFO ] runwar.context: Jul 20, 2021 05:47:17 AM Information [scheduler-1] - Run Client Storage Purge
cfml_1 | [INFO ] runwar.context: Jul 20, 2021 10:59:59 AM Information [scheduler-0] - Run Client Storage Purge
This "Client Storage Purge" seems to be a coldfusion process that is stuck in a loop - the docker build never completes. Initial thought it was due to this 'org.xerial's sqlite-jdbc' loading issue... cfml_1 | WARNING: org.xerial's sqlite-jdbc is not loaded. but I'm pretty lost at this point.
I've tried:
• Tried rolling back docker version – still sticks on terminal message "Run Client Storage Purge"
• Tried differernt MSSQL images – All sticks on terminal message "Run Client Storage Purge"
• Tried differernt Coldfusion engines "adobe@2016, adobe@2018, adobe@2021"– All stick on terminal message "Run Client Storage Purge"
This issue doesn't seem to be an isolated issue either. I just don't now if this is a Docker thing / MSSQL or Coldfusion issue ~ or the compination?
Any feedback or insight welcome on the subject or if anyone has had similare issue please share.
jinch, your reply reads as if you still feel stuck. If so, I have good news and a solution for you.
First, I will say that there's a hint (though not direct answer) in the error message, where it says:
Unable to getComponentMetadata(xxxx.model.services.blog) because: The feed package is not installed. (You can install package through CLI package manager (/usr/local/lib/serverHome/WEB-INF/cfusion/bin/cfpm.sh) by running the command : install feed.)
This is telling us that your app is using a fe
...Charlie, thanks for your help and insight on this!
Happy to report I managed to get my DEV environment working again. 🙂 And the fix turned out to be relatively straight forward. I just ended up downloading a fresh copy of my repository / updated the MSSQL to point to 'FROM mcr.microsoft.com/mssql/server:2019-latest' and also changed the CFENGINE: adobe@2018 ~ and BINGO!
This may be an issue related to CFENGINE: adobe@2021 as even with the fresh repo I wasn't able to preview.
Ironically the term
...Well, it's good you're back to work by switching to cf2018,.
But if you do want things to work with cf2021, what I shared should do it.
Or I should say that the env vars in shared would work with the Adobe CF image. But by your mention of the cfengine env var, that tells us you're using the Irtus commandbox cf image. That doesn't use the same env vars as the CF image from Adobe. They're quite different from each other in various ways.
So it could be important to clarify that you're using
...Copy link to clipboard
Copied
Jinch, the container is not "stuck". Those messages about the client storage purge are confirming that in fact the container and specifically the cf instance within it are indeed running. To clarify, the purge happens every 67 mins by default, which we see is indeed the timing of these messages.
So when you say you feel your build is not working, the question is what your build is waiting for, since the container AND the cf instance are indeed running.
Have you tried accessing the port for the cf instance? What happens?
Copy link to clipboard
Copied
Hi Charlie - thank you for your reply. This has been plaguing me for weeks!
Ah - you are correct... the container isn't stuck / just the terminal log. I just ran "docker-compose up" again jand checked the port. The website does not render but I am getting these error messages ~ see below:
___________________
Exception in onError
The action main.default failed.
(java.lang.NullPointerException)
click to expand - struct...
Original exception in onApplicationStart
The action main.default failed.
Problem with metadata for blog (xxxx.model.services.blog) because: Unable to getComponentMetadata(xxxx.model.services.blog) because: The feed package is not installed. (You can install package through CLI package manager (/usr/local/lib/serverHome/WEB-INF/cfusion/bin/cfpm.sh) by running the command : install feed.), near line 456 in /app/framework/ioc.cfc
(Application)
click to expand - struct...
Copy link to clipboard
Copied
jinch, your reply reads as if you still feel stuck. If so, I have good news and a solution for you.
First, I will say that there's a hint (though not direct answer) in the error message, where it says:
Unable to getComponentMetadata(xxxx.model.services.blog) because: The feed package is not installed. (You can install package through CLI package manager (/usr/local/lib/serverHome/WEB-INF/cfusion/bin/cfpm.sh) by running the command : install feed.)
This is telling us that your app is using a feature in CFML that needs the "feed" package (so perhaps the cffeed tag or its script equivalent).
And as you may know, in CF2021 there is a new OPTION to install CF in such a way that it has only a core set of capabilities, which can be expanded by adding modules or packages--either at installation time or afterward, using the CF Admin or an available cfpm command-line tool.
But in your case, using the Docker image, it presumes also to implement only the core modules by default (administrator, and such), and while one COULD exec into the container and run that command, the better way is to add them at container startup or creation.
And if you check out the CF2021 docs for the CF Docker image, it explains how you can do that using an environment variable, installModules, which lets you list what modules to include, so for example:
docker run --rm -e acceptEULA=YES -e password=test -e installModules=feed -p 8500:8500 public.ecr.aws/adobe/coldfusion:latest
Of course, you would replace your image name for the one I show (which works, and is an option from Adobe for getting their CF images, though I will note that unfortunately--as of today at least--this is still the original 2021 image, not the currently available update 1.)
There is also another env var called importModules, which you instead name a file that lists the modules to import, for whatever that's worth.
You can find more about the whole packaging/modules feature in the CF docs about it, though sadly there's no single list of the current packages. You can find it in the UI of the Admin (where there's now a package manager page in CF2021), or again using that cfpm tool mentioned above (and see the docs for more on that.)
There's actually one more place you can find the list, and it may help you with your challenge, if the above does not suffice. As you may know, you can look at the coldfusion-out.log while the container is running using the docker's "exec" command. You just need your container id is (found via docker ps). In this example, 42 is the first 2 chars of the container for CF in my docker ps:
docker exec 42 cat coldfusion/cfusion/logs/coldfusion-out.log
That cat command will display the log on your docker host. And FWIW, you may want to cat also the the coldfusion-error.log, to see perhaps some other issues .
Let us know how things go.
Copy link to clipboard
Copied
Charlie, thanks for your help and insight on this!
Happy to report I managed to get my DEV environment working again. 🙂 And the fix turned out to be relatively straight forward. I just ended up downloading a fresh copy of my repository / updated the MSSQL to point to 'FROM mcr.microsoft.com/mssql/server:2019-latest' and also changed the CFENGINE: adobe@2018 ~ and BINGO!
This may be an issue related to CFENGINE: adobe@2021 as even with the fresh repo I wasn't able to preview.
Ironically the terminal message log still hangs on:
database_1 | 2021-08-13 20:58:33.44 spid59 Attempting to load library 'xplog70.dll' into memory. This is an informational message only. No user action is required.
2021-08-13 20:58:33.49 spid59 Using 'xplog70.dll' version '2019.150.4153' to execute extended stored procedure 'xp_msver'. This is an informational message only; no user action is required.
Regardless, I'm happy I got my test environment back 🙂 ~ kicking myself for not trying a fresh repository sooner.
Copy link to clipboard
Copied
Well, it's good you're back to work by switching to cf2018,.
But if you do want things to work with cf2021, what I shared should do it.
Or I should say that the env vars in shared would work with the Adobe CF image. But by your mention of the cfengine env var, that tells us you're using the Irtus commandbox cf image. That doesn't use the same env vars as the CF image from Adobe. They're quite different from each other in various ways.
So it could be important to clarify that you're using the Ortus image if you may raise any other issues. For some things it may not matter whose image you're using, but for others it would.
Copy link to clipboard
Copied
Thanks Charlie... I'll keep this in mind and good info to know. Much of this is over my head as I'm more of a front end developer and primarily use this just for testing new design. We are actually in the process of updating to cf2021 so I will pass along this info for back-end consideration if issues arrive with there transition.