generate_daemon_event(jcr, "JobEnd");
generate_plugin_event(jcr, bDirEventJobEnd);
Dmsg1(50, "======== End Job stat=%c ==========\n", jcr->JobStatus);
+ dequeue_daemon_messages(jcr);
Dsm_check(100);
return NULL;
}
bail_out:
dequeue_messages(jcr); /* send any queued messages, will no longer impact
* the job status... */
+ dequeue_daemon_messages(jcr);
/* Inform Director that we are done */
dir->signal(BNET_TERMINATE);
unlock_jcr_chain();
dequeue_messages(jcr);
+ dequeue_daemon_messages(jcr);
close_msg(jcr); /* close messages for this job */
job_end_pop(jcr); /* pop and call hooked routines */
}
/*
- * Dequeue messages
+ * Dequeue daemon messages
*/
-void dequeue_messages(JCR *jcr)
+void dequeue_daemon_messages(JCR *jcr)
{
MQUEUE_ITEM *item;
JobId_t JobId;
- /* Avoid bad calls and recursion */
- if (!jcr || jcr->dequeuing_msgs) {
- return;
- }
-
/* Dequeue daemon messages */
if (daemon_msg_queue && !dequeuing_daemon_msgs) {
P(daemon_msg_queue_mutex);
dequeuing_daemon_msgs = false;
V(daemon_msg_queue_mutex);
}
+}
+
+/*
+ * Dequeue messages
+ */
+void dequeue_messages(JCR *jcr)
+{
+ MQUEUE_ITEM *item;
+
+ /* Avoid bad calls and recursion */
+ if (!jcr || jcr->dequeuing_msgs) {
+ return;
+ }
+
/* Dequeue Job specific messages */
if (!jcr->msg_queue || jcr->dequeuing_msgs) {
void init_console_msg (const char *wd);
void free_msgs_res (MSGS *msgs);
void dequeue_messages (JCR *jcr);
+void dequeue_daemon_messages (JCR *jcr);
void set_db_engine_name (const char *name);
void set_trace (int trace_flag);
bool get_trace (void);
generate_plugin_event(jcr, bsdEventJobEnd);
flush_jobmedia_queue(jcr);
dequeue_messages(jcr); /* send any queued messages */
+ dequeue_daemon_messages(jcr);
bs->signal(BNET_TERMINATE);
free_plugins(jcr); /* release instantiated plugins */
free_jcr(jcr);
edit_uint64(jcr->JobBytes, ec1), jcr->JobErrors, jcr->StatusErrMsg);
Dmsg1(100, "==== %s", dir->msg);
unbash_spaces(jcr->StatusErrMsg);
+ dequeue_daemon_messages(jcr);
dir->signal(BNET_EOD); /* send EOD to Director daemon */
free_plugins(jcr); /* release instantiated plugins */
garbage_collect_memory_pool();
dir->fsend(Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles,
edit_uint64(jcr->JobBytes, ec1), jcr->JobErrors, jcr->StatusErrMsg);
Dmsg6(100, Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, ec1, jcr->JobErrors, jcr->StatusErrMsg);
+ dequeue_daemon_messages(jcr);
dir->signal(BNET_EOD); /* send EOD to Director daemon */
free_plugins(jcr); /* release instantiated plugins */