Status/Resolution/Reason: Closed/Fixed/
Reporter/Name(from Bugbase): Tim Parker / Tim Parker (Tim Parker)
Created: 12/09/2013
Components: Scheduler
Versions: 10.0
Failure Type: Usability Issue
Found In Build/Fixed In Build: Final /
Priority/Frequency: Minor / Few users will encounter
Locale/System: English / Platforms All
Vote Count: 8
Problem Description: if neo-cron.xml does not contain valid XML, 'scheduled tasks' tab of CF administrator crashes. Most (all?) attempts to use CFSchedule also fail with un-helpful message. Users without intimate knowledge of CF internals will probably be forced to reinstall CF after hours (days?) of frustration.
Example:
"The system has attempted to use an undefined value, which usually indicates a programming error,either in your code or some system code.Null Pointers are another name for undefined values."
stack trace:
0: ........coldfusion.scheduling.CronServiceImpl.updateTask[cronserviceimpl.java:1128]
1: ........coldfusion.tagext.lang.ScheduleTag.doActionUpdate[scheduletag.java:1036]
2: ........coldfusion.tagext.lang.ScheduleTag.doStartTag[scheduletag.java:707]
3: ........coldfusion.runtime.CfJspPage._emptyTcfTag[cfjsppage.java:2799]
4.... <CFSchedule action="update"...>
Steps to Reproduce:
1) manually modify neo-cron.xml so it is no longer valid XML (delete the closing </wddxPacket> tag, for example)
2) (optional??) restart CF
3) open CF administrator, browse to Scheduled Tasks tab <crash>
- or -
4) attempt to add/update a new job using CFSchedule
Actual Result:
null pointer exception, useless error message
Expected Result:
error message pointing to the cause of the problem - something like 'scheduling data has been corrupted, please use ColdFusion administrator to repair'. In CF administrator, neo-cron.xml should be replaced with empty (and valid) file.
- or - at least... we should see something like 'XML (WDDX) parse error in neo-cron.xml'...
in the context of the CF administrator (where access is nominally limited to appropriate/knowledgeable people)... the corrupted file should be replaced by an empty one and appropriate messages displayed... doing the replacement in the context of a CFSchedule call would be a bad thing, since evidence of the corruption would be lost. Replaced file(s) should be renamed so diagnostic information is not lost.
Any Workarounds:
replace corrupted neo-cron.xml with a valid one
Exception Stack trace for Dev/QE Reference:
================================
"Error","DefaultQuartzScheduler_Worker-8","06/02/15","15:00:12",,"java.lang.OutOfMemoryError: GC overhead limit exceeded "
coldfusion.server.ServiceRuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at coldfusion.server.ServiceBase.doSerialize(ServiceBase.java:258)
at coldfusion.server.ServiceBase.access$100(ServiceBase.java:37)
at coldfusion.server.ServiceBase$2.run(ServiceBase.java:204)
at java.security.AccessController.doPrivileged(Native Method)
at coldfusion.server.ServiceBase.serialize(ServiceBase.java:200)
at coldfusion.scheduling.CronServiceImpl.store(CronServiceImpl.java:491)
at coldfusion.scheduling.CronServiceImpl.updateAndStore(CronServiceImpl.java:1233)
at coldfusion.scheduling.CronTask.execute(CronTask.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:207)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:560)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
"Error","DefaultQuartzScheduler_Worker-8","06/02/15","15:00:45",,"GC overhead limit exceeded"
java.lang.OutOfMemoryError: GC overhead limit exceeded
"Error","DefaultQuartzScheduler_Worker-5","06/02/15","15:01:22",,"GC overhead limit exceeded"
java.lang.OutOfMemoryError: GC overhead limit exceeded
"Error","DefaultQuartzScheduler_Worker-2","06/02/15","15:01:11",,"java.lang.OutOfMemoryError: GC overhead limit exceeded "
coldfusion.server.ServiceRuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at coldfusion.server.ServiceBase.doSerialize(ServiceBase.java:258)
at coldfusion.server.ServiceBase.access$100(ServiceBase.java:37)
at coldfusion.server.ServiceBase$2.run(ServiceBase.java:204)
at java.security.AccessController.doPrivileged(Native Method)
at coldfusion.server.ServiceBase.serialize(ServiceBase.java:200)
at coldfusion.scheduling.CronServiceImpl.store(CronServiceImpl.java:491)
at coldfusion.scheduling.CronServiceImpl.updateAndStore(CronServiceImpl.java:1233)
at coldfusion.scheduling.CronTask.execute(CronTask.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:207)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:560)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
"Error","DefaultQuartzScheduler_Worker-1","06/02/15","15:01:22",,"java.lang.OutOfMemoryError: GC overhead limit exceeded "
coldfusion.server.ServiceRuntimeException: java.lang.OutOfMemoryError: GC overhead limit exceeded
at coldfusion.server.ServiceBase.doSerialize(ServiceBase.java:258)
at coldfusion.server.ServiceBase.access$100(ServiceBase.java:37)
at coldfusion.server.ServiceBase$2.run(ServiceBase.java:204)
at java.security.AccessController.doPrivileged(Native Method)
at coldfusion.server.ServiceBase.serialize(ServiceBase.java:200)
at coldfusion.scheduling.CronServiceImpl.store(CronServiceImpl.java:491)
at coldfusion.scheduling.CronServiceImpl.updateAndStore(CronServiceImpl.java:1233)
at coldfusion.scheduling.CronTask.execute(CronTask.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:207)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:560)
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3681626
Deployment Phase: Release Candidate
External Customer Info:
External Company:
External Customer Name: TParker
External Customer Email:
External Test Config: My Hardware and Environment details:
Attachments:
Comments: