Again - Lucee 5 & invalid definition of the attribute taglib

This didn’t really get answered on the last topic that another user had created. Has anyone come up with a solution to this problem? I’ve watched the heap for a bit and it’s not climbing up over 80% when these errors crop up. The machine has 16 gigs of memory and I’ve given Tomcat a minimum of 6 gigs of memory and a max of 8 gigs of memory. This is Apache Tomcat/8.5.28 and Lucee 5.3.2.77 and FarCry 7.0.1.

It seems to me like a Lucee bug, but the ticket has been “rejected” because nobody could work out how to reproduce the issue;

https://luceeserver.atlassian.net/browse/LDEV-1197

My guess is that it’s resource (memory) related, and that somehow the /farcry mapping is going missing which means the tag library path is invalid which results in an error.

I think you have two ways to work around the issue;

  1. Try to find any memory leaks in your app or a way to reduce the memory requirements. This is easier said than done, but at some point it would seem like there is memory pressure in the JVM and the mapping is somehow getting removed and never put back – a restart of the server “fixes” this. If those kinds of code changes aren’t possible then externalising cached objects and sessions into a caching server like memcached or redis might help as well.

  2. To remove the need for a /farcry mapping you can reorganise your directory structure so that the farcry folder sits inside your webroot. This might be your easiest option because if there’s no mapping then it can’t go missing, the files will always be in the correct place on disk :slight_smile:

Hope that helps. Please let us know if you have some success with either of these, in case anyone else runs into the issue.

cheers,
Justin

What’s odd is there is nothing outside of THIS.webtopURL and THIS.projectURL in the constructor call. The folder is already in the webroot starting at /farcry/ and I don’t have any mappings defined in the lucee admin at all.

Ok, if you don’t have a /farcry mapping at all then it’s a really wacky one :slight_smile: It should just find the files on the file system as normal…

Do you have any Application mappings in the farcryConstructor.cfm?

The only thing I see is <cfset THIS.mappings = structNew() />. Nothing is actually in THIS.mapings.<blah> though. It’s not used beyond that initial struct create.

Hmmm, can you try removing the cfset THIS.mappings = structNew() if it’s not used?

There’s actually a ticket here for Lucee 5.3.2.x which “adds support” for cfimport via Application mappings;
https://luceeserver.atlassian.net/browse/LDEV-2051

Maybe that’s somehow causing a regression if the THIS.mappings is defined as an empty struct? Seems odd, but worth a try.

And if that doesn’t help then you could try defining the /farcry mapping in THIS.mappings and it might take advantage of that new feature since you’re on that version of Lucee, could be another potential workaround.

Bummer, I’d hoped that 5.3 had a fix for this (thought I’d spotted on the lucee forum a while back) so I’m disappointed to hear it hasn’t.
My work around ended up being to change as many of my project & plugin cfimport taglib’s to relative eg: taglib="…/…/…/…/plugins/something
Otherwise I’d run the risk of the core webtop cfimports not working… which wasn’t a good look.
It certainly started happening in the move to 5.2. Startup load seems to have a lot to do with it. (I run multiple sites on the same server.) Also I suspect if the DB server starts cuing requests on startup it seems worse.

I’ll give putting in an actual mapping a try in the constructor and let you know if that improves things.

1 Like

@ophbalance I’ll be keen to know how you go :slight_smile:

1 Like

@ophbalance Did manually creating mappings in the farcryConstructor solve this issue?

@phillipjrasmuss Did you have this issue as well / does it still persist?

I’m not running Lucee 5.3.x in production yet as we had some other unrelated issues up to 5.3.3 (we had seen this issue only briefly in the past on older Lucee versions). As I mentioned at the top of this thread it seemed to be related to resource (memory) usage causing the mappings to go missing, but it’s difficult to reproduce/debug.

@justincarter I tried a few things suggested here with no success. It’'s almost like it’s not able to create new tab mapping at some point and defaulting to some existing ones. Ie the farcry core ones work because the first lot of mapping on the first context/application spun up had them. But if your application has some project specific tags, that’s when it runs into problems.
I’m also curious to see if fixing that javaloader memory issue has any effect on it.

1 Like

Complete farcry newbie - fallen over at install http://yourdomain.com/farcry/core/webtop/install

how to fix? Thankyou.

Message : invalid definition of the attribute taglib [/farcry/core/packages/fourq/tags/]

Stacktrace

The Error Occurred in
**C:\inetpub\xsite\webroot\farcry\skeletons\fandango\install\manifest.cfc: line 4**

> 2:
> 3: <!--- IMPORT TAG LIBRARIES --->
> **4: <cfimport taglib="/farcry/core/packages/fourq/tags/" prefix="q4">**
> 5:
> 6:

**called from**  C:\inetpub\xsite\webroot\farcry\core\webtop\install\index.cfm: line 592

> 590: <!--- get skeleton info from manifest --->
> 591:
> **592: <cfset oInstallManifest = createObject("component", "farcry.skeletons.#qSkeletons.name#.install.manifest")>**
> 593: <cfset stResult.skeletons[qSkeletons.name].name = oInstallManifest.name>
> 594: <cfset stResult.skeletons[qSkeletons.name].description = oInstallManifest.description>

**called from**  C:\inetpub\xsite\webroot\farcry\core\webtop\install\index.cfm: line 24

> 22:
> 23: <!--- get installer settings --->
> **24: <cfset stInstaller = getInstallerSettings()>**
> 25:
> 26: <!--- set the selected skeleton in the installer settings --->

This is a virgin FarCry 7.2.12 CMS Community Distro install on virgin lucee install on a virgin server
Lucee 5.3.6.61
Servlet Container Apache Tomcat/9.0.35
Java 11.0.7 (AdoptOpenJDK) 64bit
Host Name 127.0.0.1
OS Windows Server 2016 (10.0) 64bit

Can you confirm that you have a /farcry folder sitting inside your webroot? It seems like that’s the case from the paths “C:\inetpub\xsite\webroot\farcry\core”.

When the files are sitting inside the webroot and there are no mappings I can’t see any reason for this to fail. It should be looking up that file on disk in the path expanded from the webroot. Just to double check, can you make sure you have this folder and can see some files inside of it?

C:\inetpub\xsite\webroot\farcry\core\packages\fourq\tags

If that doesn’t exist then I guess it’s possible that your copy of FarCry Core has missing files. I’ve downloaded the community distro zip myself and I can see the files are there so yours should be too;

If the files do exist and you’re still getting the error, you could try adding a /farcry mapping in the Lucee Web context to point to your C:\inetpub\xsite\webroot\farcry directory, but this shouldn’t really be necessary.

Hope that helps :slight_smile:

Still having this issue. FarCry is in the root:

/home/domain.com/wwwroot/farcry

Tried making a Lucee mapping to no avail.
Virtual: /farcry
Resource: /home/domain.com/wwwroot/farcry

Lucee 5.3.5.92