Fixed using partially "dirthy" DB (for example due to the new enum checks),
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 9 Jun 2009 16:08:55 +0000 (16:08 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 9 Jun 2009 16:08:55 +0000 (16:08 +0000)
merge transaction script to the 2.0 migration script.

org.glite.lb.server/Makefile
org.glite.lb.server/config/glite-lb-dbsetup-migrate2transactions.sql [deleted file]
org.glite.lb.server/config/glite-lb-migrate_db2version20
org.glite.lb.server/src/query.c

index 4081506..c19a885 100644 (file)
@@ -357,9 +357,10 @@ install:
        ${INSTALL} -m 755 ${LCAS_PLUGIN_LIB} ${PREFIX}/lib/modules
        ln -sf liblcas_lb.so ${PREFIX}/lib/modules/lcas_lb.mod
 
-       for f in dbsetup.sql dbsetup-migrate2transactions.sql index.conf.template; do \
+       for f in dbsetup.sql index.conf.template; do \
                ${INSTALL} -m 644 ${top_srcdir}/config/"glite-lb-$$f" ${PREFIX}/etc; \
        done
+       ${INSTALL} -m 755 ${top_srcdir}/config/glite-lb-migrate_db2version20 ${PREFIX}/etc
 
        ${INSTALL} -m 755 ${top_srcdir}/config/startup ${PREFIX}/etc/init.d/glite-lb-bkserverd
 
diff --git a/org.glite.lb.server/config/glite-lb-dbsetup-migrate2transactions.sql b/org.glite.lb.server/config/glite-lb-dbsetup-migrate2transactions.sql
deleted file mode 100644 (file)
index 51eec7a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-alter table jobs engine=innodb;
-alter table users engine=innodb;
-alter table events engine=innodb;
-alter table short_fields engine=innodb;
-alter table long_fields engine=innodb;
-alter table states engine=innodb;
-alter table status_tags engine=innodb;
-alter table server_state engine=innodb;
-alter table acls engine=innodb;
-alter table notif_registrations engine=innodb;
-alter table notif_jobs engine=innodb;
index b6c81b0..c5d9a0c 100644 (file)
@@ -59,6 +59,22 @@ if [ "$SERVER" -a "$PROXY" ]; then
 fi
 
 
+# convert for transactions (if very old DB)
+cat <<EOF | mysql -u lbserver $DB_NAME
+ALTER TABLE jobs ENGINE=innodb;
+ALTER TABLE users ENGINE=innodb;
+ALTER TABLE events ENGINE=innodb;
+ALTER TABLE short_fields ENGINE=innodb;
+ALTER TABLE long_fields ENGINE=innodb;
+ALTER TABLE states ENGINE=innodb;
+ALTER TABLE status_tags ENGINE=innodb;
+ALTER TABLE server_state ENGINE=innodb;
+ALTER TABLE acls ENGINE=innodb;
+ALTER TABLE notif_registrations ENGINE=innodb;
+ALTER TABLE notif_jobs ENGINE=innodb;
+EOF
+
+
 # add new columns
 mysql -u lbserver $DB_NAME -e "ALTER TABLE jobs ADD proxy bool not null"
 mysql -u lbserver $DB_NAME -e "ALTER TABLE jobs ADD server bool not null"
index 2a959d1..737a860 100644 (file)
@@ -3,6 +3,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <syslog.h>
 #include <errno.h>
 #include <time.h>
 #include <assert.h>
@@ -169,11 +170,20 @@ int edg_wll_QueryEventsServer(
                        /* Check non-indexed event conditions */
                        if ( convert_event_head(ctx, res+2, out+i) || edg_wll_get_event_flesh(ctx, n, out+i) )
                        {
-                               free(res[1]);
-                               free(res[2]);
-                               memset(out+i, 0, sizeof(*out));
-                               glite_lbu_FreeStmt(&sh);
-                               goto cleanup;
+                               char    *et,*ed, *dbjob;
+
+                       /* Most likely sort of internal inconsistency. 
+                        * Must not be fatal -- just complain
+                        */
+                               edg_wll_Error(ctx,&et,&ed);
+
+                               dbjob = res[2];
+                               fprintf(stderr,"%s event %d: %s (%s)\n",dbjob,n,et,ed);
+                               syslog(LOG_WARNING,"%s event %d: %s (%s)",dbjob,n,et,ed);
+                               free(et); free(ed);
+                               edg_wll_ResetError(ctx);
+
+                               goto fetch_cycle_cleanup;
                        }
 
                        if ( !match_flesh_conditions(out+i,event_conditions) || check_strict_jobid(ctx,out[i].any.jobId) )