From 4842fc3f2844d23fa8a48109df2aef324866eb5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Thu, 20 Mar 2008 15:12:12 +0000 Subject: [PATCH] More schema tests, quit immediately on error. --- org.glite.lb.server/src/bkserverd.c | 6 ++++-- org.glite.lb.server/src/openserver.c | 28 ++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 4075070..105ba26 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -707,10 +707,12 @@ int main(int argc, char *argv[]) if (!dbstring) dbstring = getenv("LBDB"); if (!dbstring) dbstring = strdup(DEFAULTCS); - /* Just check the database and let it be. The slaves do the job. */ edg_wll_InitContext(&ctx); - if (wait_for_open(ctx, dbstring)) return 1; + if (wait_for_open(ctx, dbstring)) { + edg_wll_FreeContext(ctx); + return 1; + } if ((ctx->dbcaps = glite_lbu_DBQueryCaps(ctx->dbctx)) == -1) { diff --git a/org.glite.lb.server/src/openserver.c b/org.glite.lb.server/src/openserver.c index 5052223..fd50f57 100644 --- a/org.glite.lb.server/src/openserver.c +++ b/org.glite.lb.server/src/openserver.c @@ -25,19 +25,31 @@ edg_wll_ErrorCode edg_wll_Open(edg_wll_Context ctx, char *cs) } if (glite_lbu_DBConnect(ctx->dbctx,cs) != 0) return edg_wll_SetErrorDB(ctx); - // proxy and server columns added - if (glite_lbu_ExecSQL(ctx->dbctx, "DESC jobs", &stmt) <= 0) goto err; hit = 0; - while (hit < 2 && (ret = glite_lbu_FetchRow(stmt, 1, NULL, cols)) > 0) { + // new columns added to jobs + if (glite_lbu_ExecSQL(ctx->dbctx, "DESC jobs", &stmt) <= 0) goto err; + while (hit < 5 && (ret = glite_lbu_FetchRow(stmt, 1, NULL, cols)) > 0) { + assert(ret <= (int)(sizeof cols/sizeof cols[0])); + if (strcasecmp(cols[0], "proxy") == 0 || + strcasecmp(cols[0], "server") == 0 || + strcasecmp(cols[0], "grey") == 0 || + strcasecmp(cols[0], "zombie") == 0 || + strcasecmp(cols[0], "nevents") == 0) hit++; + for (i = 0; i < ret; i++) free(cols[i]); + } + if (ret < 0) goto err; + glite_lbu_FreeStmt(&stmt); + // new columns added to events + if (glite_lbu_ExecSQL(ctx->dbctx, "DESC events", &stmt) <= 0) goto err; + while (hit < 6 && (ret = glite_lbu_FetchRow(stmt, 1, NULL, cols)) > 0) { assert(ret <= (int)(sizeof cols/sizeof cols[0])); - if (strcasecmp(cols[0], "proxy") == 0 || - strcasecmp(cols[0], "server") == 0) hit++; + if (strcasecmp(cols[0], "seqcode") == 0) hit++; for (i = 0; i < ret; i++) free(cols[i]); } if (ret < 0) goto err; glite_lbu_FreeStmt(&stmt); - if (hit != 2) { - ret = edg_wll_SetError(ctx, EINVAL, "old DB schema found, migration to new schema needed"); + if (hit != 6) { + ret = edg_wll_SetError(ctx, EDG_WLL_ERROR_DB_INIT, "old DB schema found, migration to new schema needed"); goto close_db; } @@ -51,7 +63,7 @@ edg_wll_ErrorCode edg_wll_Open(edg_wll_Context ctx, char *cs) if (ret < 0) goto err; glite_lbu_FreeStmt(&stmt); if (hit != 1) { - ret = edg_wll_SetError(ctx, EINVAL, "events_flesh table not found, migration to new schema needed"); + ret = edg_wll_SetError(ctx, EDG_WLL_ERROR_DB_INIT, "events_flesh table not found, migration to new schema needed"); goto close_db; } -- 1.8.2.3