markewaite I have been troubleshooting this lately.. it is a very particular scenario. This only happened for instances on Ubuntu 20.04 that were started on 2024-10-02
. That is exactly 6 months before the endOfLife 2025-04-02.
Ubuntu 20.04 does not have a warning start date, therefore minus 6 months mark is the default startDate set:
On 2024-10-02, we are exactly 6 month before the EOL. The warningStartDate is set to 2024-10-02:
But today 2024-10-02 is not before LocalDate.now() and we never set the endOfLife:
if (startDate.isBefore(warningsStartDate)) {
warningsStartDate = startDate;
LOGGER.log(Level.FINE, "Warnings start date is now {0}", warningsStartDate);
}
LOGGER.log(Level.FINE, "Matched operating system {0}", name);
if (startDate.isBefore(LocalDate.now())) {
this.operatingSystemName = name;
this.documentationUrl = buildDocumentationUrl(this.operatingSystemName);
this.endOfLifeDate = endOfLife.toString();
if (endOfLife.isBefore(LocalDate.now())) {
LOGGER.log(Level.FINE, "Operating system {0} is after end of life {1}",
new Object[]{name, endOfLife});
afterEndOfLifeDate = true;
} else {
LOGGER.log(Level.FINE, "Operating system {0} started warnings {1} and reaches end of life {2}",
new Object[]{name, startDate, endOfLife});
}
}
That strict check if (startDate.isBefore(LocalDate.now())) should rather check "equals or before".
****
To reproduce a problem, you may change the WEB_ROOT/WEB-INF/classes/jenkins/monitor/OperatingSystemEndOfLifeAdminMonitor/end-of-life-data.json and change the Ubuntu 20.04 endOfLife to that exactly 6 months from now. For example today, java.time.LocalDate.now().plusMonths(6) return 2025-04-24 so you can do this:
[...]
{
"pattern": "Ubuntu.* 20.04.*",
"endOfLife": "2025-04-24"
},
[...]
And that put yourself in that scenario..
I'm unable to duplicate the issue as described. I suspect that your Jenkins installation is damaged, with some of the files being deleted or otherwise harmed.
Steps I took while trying to duplicate the problem (see the JENKINS-73845.tar.gz
tar archive for my files):