*Server* admin is showing a *context's* date/time - why?

Hi guys. Stack info first:

OS: Linux (5.4.59) 64bit
Java Version: 11.0.11 (AdoptOpenJDK) 64bit
Tomcat Version: Apache Tomcat/9.0.11
Lucee Version: 5.3.6.61

In the Lucee server admin, the timezone is set to US/Eastern.

In my (sole and only) Lucee context admin, the timezone is set to US/Pacific.

In the context admin’s Regional page, just as expected I see this:

Current time settings:
Server date/time: Dec 22, 2022 3:14 PM
Lucee date/time: Dec 22, 2022 12:14 PM

This is quite correct. However, I also see this same thing on the Lucee server admin’s Regional page where the second line of the pair being shown doesn’t make any sense: the server admin, because it covers all contexts, should not be showing the current time of a single arbitrary context, right?

I mean, I have only one context, but what if I had two or three contexts, each set to entirely different timezones? In that case, what would the server admin show on its Regional page for “Lucee date/time”? Which context’s time would be shown? I have no idea.

Shouldn’t the server admin’s Regional page only show “Server date/time” and NOT “Lucee date/time”, since that’s purely context-level information, and with > 1 context there can be
ambiguity about what gets displayed there?

Is “Lucee date/time” displayed on the server admin Regional page just as a courtesy when there’s only ONE context, and disappears when there’s more than one context?

Thanks guys! Just trying to understand this.

The java engine reads the os set date time in many instances.

run this to see what your server (OS) is set as:

timedatectl

More than likely its set to the PST zone it sits in
You can list all timezones available by using

timedatectl list-timezones

once you found the one you want

timedatectl set-timezone thetimezoneyouwant

Edit, after you do this, you may need to restart tomcat /lucee.

Hi Terry! Thanks for the reply.

I don’t have the timedatectl command on my Linux distro, probably because it doesn’t use systemd, but the Linux OS timezone is indeed set to Eastern (also known as EST), and the server and I are both physically sitting in the Eastern/EST zone.

The server (red) admin has the dropdown menu for timezone set to Eastern/EST. Here’s what the server (red) admin page shows:

Locale (dropdown) - "English (United States)"
Time zone (dropdown): "US/Eastern - Eastern Standard Time"
Current time settings:
Server date/time: "Dec 23, 2022 2:15 PM"
Lucee date/time: "Dec 23, 2022 11:15 AM"

The web/context (blue) admin has the dropdown menu for timezone (intentionally) set to Pacific/PST. Here’s what the web/context (blue) admin page shows:

Locale (dropdown) - "English (United States)"
Time zone (dropdown): "US/Pacific - Pacific Standard Time"
Current time settings:
Server date/time: "Dec 23, 2022 2:20 PM"
Lucee date/time: "Dec 23, 2022 11:20 AM"

My question is: why is the server (red) admin showing a Pacific time (11:15 AM)? That is a web/context-level (blue) thing, not a server-level (red) thing, the server (red) admin is web/context-agnostic and applies to ALL webs/contexts, so it should NOT be showing a detail of one particular web/context (in this case, a Pacific time).

Thanks!

you could try looking at the /etc/localtime and change the value at the endpoint file.

As for the reason

The “CONTEXT” is just a virtual slice of memory space dedicated to one application task, in lucees case running CFML, which all contexts in lucee would inherit the default context lucee runs on (LUCEE) and lucee grabs the default context of Java engine (Tomcat). Tomcat gets that info from JAVA runtime. Java grabs that from the OS.

I think there is a little confusion…

"Server date/time" here is about the “JVM” (servlet engine), no matter where and in which context (server admin-red or web admin-blue) you are looking at. See the source code here

"Lucee date/time" in the server admin (red) is the time value given by the defined time zone (also in your server admin (red). That means: every single web-context running within your Lucee instance will inherit it as a default. So: It doesn’t show any particular web-context setting as you meant.

However, you can change(override) that default global time zone set in your server admin (red) by logging into your web administrator and changing it there. That will override the global default “Lucee date/time” set in the server admin(red). Furthermore you can also override the web-context time setting by defining time zones in your Application.cfc with e.g. this.timezone = "US/Pacific";

What I can’t understand is the wrong time values for the different time zones in your example… I can’t see any difference inbetween the time zones… I wasn’t able to recreate that on my local instance.

1 Like

That file is a link to “/usr/share/zoneinfo/US/Eastern”, which sounds right.

Yeah, that’s the real mystery here. The context/web level (blue) admin’s “Regional” screen is completely correct. But, I would fully expect the server (red) version of the page to show THIS instead, with 2:15 instead of 11:15 on the last line:

Locale (dropdown) - "English (United States)"
Time zone (dropdown): "US/Eastern - Eastern Standard Time"
Current time settings:
Server date/time: "Dec 23, 2022 2:15 PM"
Lucee date/time: "Dec 23, 2022 2:15 PM"

The good news is, this issue doesn’t affect my app in the slightest, it happily runs in its context/“Web” in Pacific time, so all is well. I was just curious about the anomaly in the server (red) admin display.

Thanks for trying to recreate it! I guess for now it’s a mystery.

You guys are the best, really helpful and quick! Thanks.

2 Likes

Here is another view, so others might understand it also in a better way. I rember that I’ve struggled with that also in the past when I was new to Railo (forked by Lucee):

In other words:

JVM Time ("Server date/time")
           ||
           || inherits
           ||
      Server Admin-RED ("Lucee date/time")
                       ||
                       || inherits
                       ||
                       ||- Web Admin BLUE ("Lucee date/time") for my.domain1.com (can be 
                       ||                  ||
                       ||            Application.cfc can override the web admin setting
                       ||
                       ||- Web Admin BLUE ("Lucee date/time") for my.domain2.org
                       ||                  ||
                       ||            Application.cfc can override the web admin setting
                       ||
                       ||- Web Admin Blue ("Lucee date/time") for my.domain3.de
                                           ||
                                     Application.cfc can override web admin setting

And never forget: No matter from which Domain you access that red server admin. If you make changes to that, you are making changes to the one and only unique global defaults settings!

Great chart, andreas! That was exactly the picture I had in my head, but your chart makes it super clear for everyone!

1 Like

also, one of the problems with running older java versions many not have the latest timezone files (they come from the jvm)