org.quartz.SchedulerException:调度程序已在 Magnolia 中关闭

Posted

技术标签:

【中文标题】org.quartz.SchedulerException:调度程序已在 Magnolia 中关闭【英文标题】:org.quartz.SchedulerException: The Scheduler has been shutdown in Magnolia 【发布时间】:2018-11-01 13:26:49 【问题描述】:

由于下面提到的错误,magnolia 中的计划发布失败。调度程序自动关闭并导致发布失败。如果我重新启动作者实例,则调度程序启动并安排发布工作正常。

导致关闭调度程序的关键操作是什么?

调度器是否设置了任何时间范围?

ERROR  info.magnolia.task.schedule.DefaultTaskSchedulerService 30.10.2018 10:28:40 -- Could not schedule job [publish_9e827f8d-89f2-4c61-a0c5-bfe84d5c3a7e].
    org.quartz.SchedulerException: The Scheduler has been shutdown.
        at org.quartz.core.QuartzScheduler.validateState(QuartzScheduler.java:795)
        at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:846)
        at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:249)
        at info.magnolia.task.schedule.DefaultTaskSchedulerService.schedule(DefaultTaskSchedulerService.java:90)
        at info.magnolia.task.DefaultTasksManager.scheduleTask(DefaultTasksManager.java:126)
        at info.magnolia.module.workflow.jbpm.workitem.handler.ScheduleTaskWorkItemHandler.executeWorkItem(ScheduleTaskWorkItemHandler.java:49)
        at info.magnolia.module.workflow.jbpm.persistence.WorkItemHandlerSystemContextWrapper$1.exec(WorkItemHandlerSystemContextWrapper.java:37)
        at info.magnolia.module.workflow.jbpm.persistence.WorkItemHandlerSystemContextWrapper$1.exec(WorkItemHandlerSystemContextWrapper.java:33)
        at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:400)
        at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378)
        at info.magnolia.module.workflow.jbpm.persistence.WorkItemHandlerSystemContextWrapper.executeWorkItem(WorkItemHandlerSystemContextWrapper.java:33)
        at org.drools.persistence.jcr.processinstance.JcrWorkItemManager.internalExecuteWorkItem(JcrWorkItemManager.java:76)
        at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:138)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:381)
        at org.jbpm.workflow.instance.node.SplitInstance.executeStrategy(SplitInstance.java:117)
        at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:63)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:173)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:366)
        at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:325)
        at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:73)
        at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:44

> Blockquote

【问题讨论】:

【参考方案1】:

导致关闭调度程序的关键操作是什么?

唯一可以让它关闭的操作是用户启动的关机。

是否为调度程序设置了任何时间范围?

没有。

唯一合理的解释似乎是程序触发关机。 由于这不是广泛报道的问题(我个人以前从未听说过它,我敢说我在过去几年中看到了 Magnolia 的大部分问题),我会搜索您的自定义代码或任何社区或第 3 方模块你已经安装了。也许您还可以创建小型计划任务,例如超过常规并让它每分钟执行一次。如果任务只是打印日志语句,它不应该给您的实例增加太多开销,但可以让您更好地确定关闭发生的时间(在最后一个日志语句后的几分钟内),也许它也可以帮助您找到找出关机的原因。

在执行此操作之前,您可能还想检查日志文件是否在检测到关闭之前发生的任何异常,但我认为您已经完成了此操作。

【讨论】:

以上是关于org.quartz.SchedulerException:调度程序已在 Magnolia 中关闭的主要内容,如果未能解决你的问题,请参考以下文章