From: Zdeněk Salvet Date: Wed, 19 Dec 2007 14:58:27 +0000 (+0000) Subject: Redo event number computation (select(max()) is done only once, then X-Git-Tag: glite-lb-client_R_3_1_2_1~5 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=32af13e8311ccbfb51029daa46fd0c6b94725c6d;p=jra1mw.git Redo event number computation (select(max()) is done only once, then increments are tried). Fixes looping from bug #27555. --- diff --git a/org.glite.lb.server/src/store.c.T b/org.glite.lb.server/src/store.c.T index 2951b23..110eeb4 100644 --- a/org.glite.lb.server/src/store.c.T +++ b/org.glite.lb.server/src/store.c.T @@ -132,7 +132,7 @@ int edg_wll_StoreEvent(edg_wll_Context ctx,edg_wll_Event *e,int *seq) ssrc = edg_wll_SourceToString(e->any.source); /* try to insert (someone else may be doing the same) */ - while (1) { + { char *max = NULL; if (edg_wll_ExecStmt(ctx,select_max,&sh) < 0 || @@ -144,7 +144,10 @@ int edg_wll_StoreEvent(edg_wll_Context ctx,edg_wll_Event *e,int *seq) edg_wll_FreeStmt(&sh); next = max && *max ? atoi(max)+1 : 0; + free(max); + } + while (1) { /* * 1) when using transactions: * Store the whole event right now. @@ -168,8 +171,8 @@ int edg_wll_StoreEvent(edg_wll_Context ctx,edg_wll_Event *e,int *seq) } else break; /* successful insert */ /* we were late -- try once again */ + next++; free(stmt); - free(max); } free(stmt); stmt = NULL;