tracker issue : CF-4200009

select a category, or use search below
(searches all categories and all time range)

CF should track the state of last execution of tasks in a file separate from neo-cron.xml, to prevent loss of all tasks on its corruption

| View in Tracker

Status/Resolution/Reason: Closed/Withdrawn/NotABug

Reporter/Name(from Bugbase): Charlie Arehart / Charlie Arehart ()

Created: 10/12/2017

Components: Scheduler

Versions: 2016

Failure Type: Others

Found In Build/Fixed In Build: /

Priority/Frequency: Normal /

Locale/System: /

Vote Count: 2

As many reading this will know, there can be cases where CF crashes and users lose their scheduled tasks, because the neo-cron.xml file becomes corrupted. And it seems that this happens because the file is being written to at the time of the crash. 

And the odds of such a write during a crash raise because right now, the file holds both the DEFINITION of each task, and the the STATE OF LAST EXECUTION of each task.

It would seem that Adobe could very easily alleviate this problem by having a separate file to track each kind of data,  It's like good normalization of a database. :-)



We have made some core changes which prevents any NEO file from getting corrupted. Basically it checks for available resources before reading/writing these files. Hence , this feature is not required.
Comment by Suchika S.
27538 | April 16, 2018 12:07:12 PM GMT
I am running CF2016 (2016.0.03.300466) and have had this happen to me twice in the last two days. We had to force our server to reboot twice and each time, we were left with a blank neo-cron.xml file and had to restore it from backup. So, it's still happening in that scenario.
Comment by James S.
29826 | October 23, 2018 04:46:33 PM GMT
James, you show running only CF2016 update 3 there. The latest is update 7. Your point would be stronger if you could get that update in place and then report if it still happens. Even so, Suchika, I'm bummed to hear your reply. Regardless of what "checks" you may do, there's no logical reason (to an outsider) that the neo-cron.xml should hold BOTH the definition AND the tracking of EXECUTION of each task, other than that "that's how it's always been done". This seems a classic case of a need to "normalize" what is essentially a database, where you have two different kinds of things tracked in one "table" (the neo-cron.xml). Why not create a new second one for tracking EXECUTIONS? That would further diminish the risk of corruption, since then the one holding the definitions would be FAR less likely to be written to. Sure, there would still be risk of corruption to the new file that would track executions, but I'm sure most would far prefer to risk that (if your fix proved not to be as reliable as you hope), since that info on executions could at least be discovered if scheduled task logging is enabled. Would you please remove the withdrawn state until you can answer this response? (Somehow I never got any notification of your comment when you posted it in April. I did see the notification of James new comment today, which brought me back here.)
Comment by Charlie A.
29827 | October 23, 2018 05:01:54 PM GMT
I completely agree with Charlie on this. We are running CF2016 with update 7 and just had this happen so I'm not sure what Suchika's comments are based upon. Makes no sense to keep updating this file for every execution. There's bound to be either contention or, worse yet, a fatal error (like a server crash) in the middle of a file write. Putting this in the database would be much more logical.
Comment by Mike P.
30093 | January 07, 2019 05:55:09 PM GMT