From: František Dvořák Date: Thu, 4 May 2006 14:19:55 +0000 (+0000) Subject: - fixed bug in load dumps X-Git-Tag: gridsite-core_R_1_1_19~46 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=bf3ec387dbcbd61ee90df7c0414e769003f1cd70;p=jra1mw.git - fixed bug in load dumps - improved startup script (default behaviour not changed) - print summarize time in SQL profile report (w/o protecting by lock) --- diff --git a/org.glite.lb.server/config/startup b/org.glite.lb.server/config/startup index d712223..fc3b0a5 100755 --- a/org.glite.lb.server/config/startup +++ b/org.glite.lb.server/config/startup @@ -36,26 +36,30 @@ start() [ -z "$GLITE_LB_EXPORT_DUMPDIR" ] && GLITE_LB_EXPORT_DUMPDIR=/tmp/dump purgedir="--dump-prefix $GLITE_LB_EXPORT_DUMPDIR" - [ -d "$GLITE_LB_EXPORT_DUMPDIR" ] || mkdir "$GLITE_LB_EXPORT_DUMPDIR" && chown $GLITE_USER:$GLITE_GROUP "$GLITE_LB_EXPORT_DUMPDIR" + [ -d "$GLITE_LB_EXPORT_DUMPDIR" ] || mkdir -p "$GLITE_LB_EXPORT_DUMPDIR" && chown $GLITE_USER:$GLITE_GROUP -R "$GLITE_LB_EXPORT_DUMPDIR" [ -z "$GLITE_LB_EXPORT_JPREG_MAILDIR" ] && GLITE_LB_EXPORT_JPREG_MAILDIR=/tmp/jpreg maildir="--jpreg-dir $GLITE_LB_EXPORT_JPREG_MAILDIR" - [ -d "$GLITE_LB_EXPORT_JPREG_MAILDIR" ] || mkdir "$GLITE_LB_EXPORT_JPREG_MAILDIR" && chown $GLITE_USER:$GLITE_GROUP "$GLITE_LB_EXPORT_JPREG_MAILDIR" + [ -d "$GLITE_LB_EXPORT_JPREG_MAILDIR" ] || mkdir -p "$GLITE_LB_EXPORT_JPREG_MAILDIR" && chown $GLITE_USER:$GLITE_GROUP -R "$GLITE_LB_EXPORT_JPREG_MAILDIR" [ -z "$creds" ] && echo $0: WARNING: No credentials specified. Using default lookup which is dangerous. >&2 [ -n "$GLITE_LB_SERVER_PORT" ] && port="-p $GLITE_LB_SERVER_PORT" + [ -n "$GLITE_LB_SERVER_WPORT" ] && wport="-w $GLITE_LB_SERVER_WPORT" + + [ -z "$GLITE_LB_NOTIF_SOCK" ] && GLITE_LB_NOTIF_SOCK="/tmp/glite-lb-notif.sock" + [ -z "$GLITE_LB_NOTIF_FPREFIX" ] && GLITE_LB_NOTIF_FPREFIX="/var/tmp/glite-lb-notif" echo -n Starting glite-lb-bkserver ... su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-bkserverd \ - --notif-il-sock=/tmp/glite-lb-notif.sock \ - --notif-il-fprefix=/var/tmp/glite-lb-notif \ - $creds -i $pidfile $port $purgedir $maildir" \ + --notif-il-sock=$GLITE_LB_NOTIF_SOCK \ + --notif-il-fprefix=$GLITE_LB_NOTIF_FPREFIX \ + $creds -i $pidfile $port $wport $purgedir $maildir" \ && echo " done" || echo " FAILED" echo -n Starting glite-lb-notif-interlogd ... su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-notif-interlogd \ - -f /var/tmp/glite-lb-notif -s /tmp/glite-lb-notif.sock \ + -f $GLITE_LB_NOTIF_FPREFIX -s $GLITE_LB_NOTIF_SOCK \ $creds" && echo " done" || echo " FAILED" } @@ -89,7 +93,7 @@ status() { retval=0 - if netstat -an --unix | grep "^unix .* LISTEN.* /tmp/glite-lb-notif.sock$" >/dev/null 2>&1 ;then + if netstat -an --unix | grep "^unix .* LISTEN.* ${GLITE_LB_NOTIF_SOCK}$" >/dev/null 2>&1 ;then echo glite-lb-notif-interlogd running else echo glite-lb-notif-interlogd not running diff --git a/org.glite.lb.server/src/lbs_db.c b/org.glite.lb.server/src/lbs_db.c index 76fa57c..04e5111 100644 --- a/org.glite.lb.server/src/lbs_db.c +++ b/org.glite.lb.server/src/lbs_db.c @@ -80,6 +80,12 @@ int edg_wll_ExecStmt(edg_wll_Context ctx,char *txt,edg_wll_Stmt *stmt) int do_reconnect = 0; struct timeval start,end; int pid; +#ifdef LBS_DB_PROFILE + static struct timeval sum = { + tv_sec: 0, + tv_usec: 0 + }; +#endif edg_wll_ResetError(ctx); @@ -139,13 +145,16 @@ putc(10,stderr); mysql_free_result(r); } #ifdef LBS_DB_PROFILE + pid = getpid(); gettimeofday(&end,NULL); end.tv_usec -= start.tv_usec; end.tv_sec -= start.tv_sec; if (end.tv_usec < 0) { end.tv_sec--; end.tv_usec += 1000000; } - pid = getpid(); - fprintf(stderr,"[%d] %s\n[%d] %3ld.%06ld\n",pid,txt,pid,end.tv_sec,end.tv_usec); + sum.tv_usec += end.tv_usec; + sum.tv_sec += end.tv_sec + sum.tv_usec / 1000000; + sum.tv_usec -= 1000000 * (sum.tv_usec / 1000000); + fprintf(stderr,"[%d] %s\n[%d] %3ld.%06ld (sum: %3ld.%06ld)\n",pid,txt,pid,end.tv_sec,end.tv_usec,sum.tv_sec,sum.tv_usec); #endif return mysql_affected_rows((MYSQL *) ctx->mysql); diff --git a/org.glite.lb.server/src/load.c b/org.glite.lb.server/src/load.c index 0f08964..7c6f266 100644 --- a/org.glite.lb.server/src/load.c +++ b/org.glite.lb.server/src/load.c @@ -29,14 +29,14 @@ #include "get_events.h" #include "server_state.h" - -static int read_line(char **buff, int fd); +static int read_line(char **buff, size_t *maxsize, int fd); int edg_wll_LoadEvents(edg_wll_Context ctx,const edg_wll_LoadRequest *req,edg_wll_LoadResult *result) { int fd, reject_fd = -1, readret, i; + size_t maxsize; char *line = NULL, buff[30]; edg_wll_Event *event; @@ -57,7 +57,7 @@ int edg_wll_LoadEvents(edg_wll_Context ctx,const edg_wll_LoadRequest *req,edg_wl { /* Read one line */ - if ( (readret = read_line(&line, fd)) == -1 ) + if ( (readret = read_line(&line, &maxsize, fd)) == -1 ) return edg_wll_SetError(ctx, errno, "reading dump file"); if ( readret == 0 ) @@ -169,21 +169,28 @@ cycle_clean: #define BUFFSZ 1024 -static int read_line(char **buff, int fd) +static int read_line(char **buff, size_t *maxsize, int fd) { int ct, i; + void *tmp; if ( *buff == NULL ) { - *buff = malloc(BUFFSZ); + *buff = malloc(BUFFSZ); if ( *buff == NULL ) return -1; + *maxsize = BUFFSZ; } i = 0; while ( 1 ) { + if (i >= *maxsize) { + (*maxsize) *= 2; + if ((tmp = realloc(*buff, *maxsize)) == NULL) return -1; + *buff = (char *)tmp; + } if ( (ct = read(fd, (*buff)+i, 1)) == -1 ) return -1;