X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/03f593938636b1f68cfa6b3b7ee97089436649d8..dcfa270ac1d2f55eb793c4da4bbd555903a88b09:/gen/ca.dc diff --git a/gen/ca.dc b/gen/ca.dc index c21134b7..5ff09983 100644 --- a/gen/ca.dc +++ b/gen/ca.dc @@ -37,17 +37,20 @@ char **argv; struct stat sb; struct save_queue *sq; struct prec *prec; - int flag1, flag2, first; + int flag1, flag2, first, cnt; EXEC SQL BEGIN DECLARE SECTION; char login[257], name[257], dir[257]; int id; EXEC SQL END DECLARE SECTION; + initialize_sms_error_table (); + #ifsql INGRES - EXEC SQL CONNECT sms; + EXEC SQL CONNECT moira; + EXEC SQL SET LOCKMODE SESSION WHERE LEVEL=TABLE, READLOCK=SHARED; #endsql #ifsql INFORMIX - EXEC SQL DATABASE sms; + EXEC SQL DATABASE moira; #endsql if (argc == 2) { @@ -76,10 +79,12 @@ char **argv; EXEC SQL WHENEVER SQLERROR GOTO sqlerr; sq = sq_create(); + cnt = 0; EXEC SQL DECLARE y CURSOR FOR SELECT p.nfsphys_id, p.dir, m.name FROM nfsphys p, machine m - WHERE m.mach_id = p.mach_id; + WHERE m.mach_id = p.mach_id + ORDER BY p.nfsphys_id; EXEC SQL OPEN y; while (1) { EXEC SQL FETCH y INTO :id, :dir, :name; @@ -92,8 +97,10 @@ char **argv; strcpy(prec->mach, strtrim(name)); strcpy(prec->dir, strtrim(dir)); sq_save_data(sq, prec); + cnt++; } EXEC SQL CLOSE y; + fprintf(stderr, "Loaded %d NFS partitions\n", cnt); while (sq_get_data(sq, &prec)) { id = prec->phys_id; @@ -104,7 +111,8 @@ char **argv; EXEC SQL DECLARE x CURSOR FOR SELECT u.login, u.fullname FROM users u, filesys f - WHERE f.label = u.login and u.status = 1 and f.phys_id = :id; + WHERE f.label = u.login and u.status = 1 and f.phys_id = :id + ORDER BY u.login; EXEC SQL OPEN x; first = 1; while (1) { @@ -120,12 +128,14 @@ char **argv; } EXEC SQL CLOSE x; } + fprintf(stderr, "Processed NFS partitions\n"); + cnt = 0; EXEC SQL DECLARE z CURSOR FOR SELECT DISTINCT u.login, u.fullname, f.name FROM users u, filesys f - WHERE f.label = u.login and u.status = 1 and f.type = "AFS" - ORDER BY name; + WHERE f.label = u.login and u.status = 1 and f.type = 'AFS' + ORDER BY u.login; EXEC SQL OPEN z; while (1) { EXEC SQL FETCH z INTO :login, :name, :dir; @@ -139,8 +149,10 @@ char **argv; strtrim(login); strtrim(name); fprintf(out, "%s,%s\n", login, name); + cnt++; } EXEC SQL CLOSE z; + fprintf(stderr, "Processed %d AFS users\n", cnt); #ifsql INGRES EXEC SQL DISCONNECT; @@ -159,6 +171,10 @@ char **argv; sqlerr: com_err(whoami, MR_INGRES_ERR, " code %d\n", sqlca.sqlcode); +#ifsql INGRES + if (sqlca.sqlcode == 17700 || sqlca.sqlcode == -37000) + exit(MR_DEADLOCK); +#endsql critical_alert("DCM", "Central America build encountered INGRES ERROR %d", sqlca.sqlcode); exit(MR_INGRES_ERR);