From fc34af24c71d7ed251d3f253095da86700b74da5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20=C5=A0ustr?= Date: Mon, 30 Oct 2006 08:26:35 +0000 Subject: [PATCH] db_actual_store() function introduced implementing identical parts of db_store() and db_parent_store() functions. --- org.glite.lb.server/interface/store.h | 1 + org.glite.lb.server/src/db_store.c | 111 ++++++++-------------------------- 2 files changed, 26 insertions(+), 86 deletions(-) diff --git a/org.glite.lb.server/interface/store.h b/org.glite.lb.server/interface/store.h index 1a66bf0..0fefec8 100644 --- a/org.glite.lb.server/interface/store.h +++ b/org.glite.lb.server/interface/store.h @@ -42,6 +42,7 @@ edg_wll_ErrorCode edg_wll_StepIntStateEmbriotic( int db_store(edg_wll_Context,char *, char *); int db_parent_store(edg_wll_Context, edg_wll_Event *); +int db_actual_store(edg_wll_Context ctx, char *event, edg_wll_Event *ev, edg_wll_JobStat *newstat); int handle_request(edg_wll_Context,char *); int create_reply(const edg_wll_Context,char **); diff --git a/org.glite.lb.server/src/db_store.c b/org.glite.lb.server/src/db_store.c index 2e3769d..dea30e1 100644 --- a/org.glite.lb.server/src/db_store.c +++ b/org.glite.lb.server/src/db_store.c @@ -95,71 +95,7 @@ db_store(edg_wll_Context ctx,char *ucs, char *event) 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); @@ -235,6 +171,23 @@ db_parent_store(edg_wll_Context ctx, edg_wll_Event *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 @@ -247,12 +200,9 @@ db_parent_store(edg_wll_Context ctx, edg_wll_Event *ev) 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 @@ -277,39 +227,28 @@ db_parent_store(edg_wll_Context ctx, edg_wll_Event *ev) } 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); } -- 1.8.2.3