From 32af13e8311ccbfb51029daa46fd0c6b94725c6d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20Salvet?= Date: Wed, 19 Dec 2007 14:58:27 +0000 Subject: [PATCH] Redo event number computation (select(max()) is done only once, then increments are tried). Fixes looping from bug #27555. --- org.glite.lb.server/src/store.c.T | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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; -- 1.8.2.3