if (edg_wll_UnlockJob(ctx,ev->any.jobId)) goto err;
if (err) goto err;
- if ( ctx->isProxy ) {
- /*
- * send event to the proper BK server
- */
- /* XXX: RegJob events, which were logged also directly, are duplicated at server,
- but it should not harm */
-
-#ifdef LB_PERF
- if( sink_mode == GLITE_LB_SINK_SEND ) {
- glite_wll_perftest_consumeEvent(ev);
- } else
-#endif
- if (edg_wll_EventSendProxy(ctx, ev->any.jobId, event) ) {
- edg_wll_SetError(ctx, EDG_WLL_IL_PROTO, "edg_wll_EventSendProxy() error.");
- goto err;
- }
-
- /* LB proxy purge
- * XXX: Set propper set of states!
- * TODO: Do the set of states configurable?
- */
- switch ( ev->any.type ) {
- case EDG_WLL_EVENT_CLEAR:
- case EDG_WLL_EVENT_ABORT:
- edg_wll_PurgeServerProxy(ctx, ev->any.jobId);
- break;
- case EDG_WLL_EVENT_CANCEL:
- if (ev->cancel.status_code == EDG_WLL_CANCEL_DONE)
- edg_wll_PurgeServerProxy(ctx, ev->any.jobId);
- break;
- default: break;
- }
- } else
-#ifdef LB_PERF
- if( sink_mode == GLITE_LB_SINK_SEND ) {
- glite_wll_perftest_consumeEvent(ev);
- } else
-#endif
- {
- if ( newstat.state ) {
- edg_wll_NotifMatch(ctx, &newstat);
- edg_wll_FreeStatus(&newstat);
- }
- if ( ctx->jpreg_dir && ev->any.type == EDG_WLL_EVENT_REGJOB ) {
- char *jids, *msg;
-
- if ( !(jids = edg_wlc_JobIdUnparse(ev->any.jobId)) ) {
- edg_wll_SetError(ctx, errno, "Can't unparse jobid when registering to JP");
- goto err;
- }
- if ( !(msg = realloc(jids, strlen(jids)+strlen(ev->any.user)+2)) ) {
- free(jids);
- edg_wll_SetError(ctx, errno, "Can't allocate buffer when registering to JP");
- goto err;
- }
- strcat(msg, "\n");
- strcat(msg, ev->any.user);
- if ( edg_wll_MaildirStoreMsg(ctx->jpreg_dir, ctx->srvName, msg) ) {
- free(msg);
- edg_wll_SetError(ctx, errno, lbm_errdesc);
- goto err;
- }
- free(msg);
- }
- }
+ if (db_actual_store(ctx, event, ev, &newstat)!=0) goto err;
edg_wll_FreeEvent(ev);
free(ev);
if (err) goto err;
+ event = edg_wll_UnparseEvent(ctx, ev);
+ assert(event);
+
+ if (db_actual_store(ctx, event, ev, &newstat)!=0) goto err;
+
+ free(event);
+
+ return(0);
+
+ err:
+ free(event);
+
+ return edg_wll_Error(ctx,NULL,NULL);
+}
+
+int db_actual_store(edg_wll_Context ctx, char *event, edg_wll_Event *ev, edg_wll_JobStat *newstat) {
+
if ( ctx->isProxy ) {
/*
* send event to the proper BK server
glite_wll_perftest_consumeEvent(ev);
} else
#endif
- event = edg_wll_UnparseEvent(ctx, ev);
- assert(event);
if (edg_wll_EventSendProxy(ctx, ev->any.jobId, event) ) {
- edg_wll_SetError(ctx, EDG_WLL_IL_PROTO, "edg_wll_EventSendProxy() error.");
- goto err;
+ return edg_wll_SetError(ctx, EDG_WLL_IL_PROTO, "edg_wll_EventSendProxy() error.");
}
/* LB proxy purge
} else
#endif
{
- if ( newstat.state ) {
- edg_wll_NotifMatch(ctx, &newstat);
- edg_wll_FreeStatus(&newstat);
+ if ( newstat->state ) {
+ edg_wll_NotifMatch(ctx, newstat);
+ edg_wll_FreeStatus(newstat);
}
if ( ctx->jpreg_dir && ev->any.type == EDG_WLL_EVENT_REGJOB ) {
char *jids, *msg;
if ( !(jids = edg_wlc_JobIdUnparse(ev->any.jobId)) ) {
- edg_wll_SetError(ctx, errno, "Can't unparse jobid when registering to JP");
- goto err;
+ return edg_wll_SetError(ctx, errno, "Can'tnunparse jobid when registering to JP");
}
if ( !(msg = realloc(jids, strlen(jids)+strlen(ev->any.user)+2)) ) {
free(jids);
- edg_wll_SetError(ctx, errno, "Can't allocate buffer when registering to JP");
- goto err;
+ return edg_wll_SetError(ctx, errno, "Can't allocate buffer when registering to JP");
}
strcat(msg, "\n");
strcat(msg, ev->any.user);
if ( edg_wll_MaildirStoreMsg(ctx->jpreg_dir, ctx->srvName, msg) ) {
free(msg);
- edg_wll_SetError(ctx, errno, lbm_errdesc);
- goto err;
+ return edg_wll_SetError(ctx, errno, lbm_errdesc);
}
free(msg);
}
}
- free(event);
-
- return(0);
-
- err:
- free(event);
-
- return edg_wll_Error(ctx,NULL,NULL);
}