]> andersk Git - moira.git/blobdiff - gen/ca.dc
increase size of machine hash table
[moira.git] / gen / ca.dc
index d452559ae5339e6ec48e0a5675a64b9e661338cf..5ff09983556132c2c01d6e59fa91fa748f4980f2 100644 (file)
--- a/gen/ca.dc
+++ b/gen/ca.dc
@@ -37,7 +37,7 @@ 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;
@@ -46,10 +46,11 @@ char **argv;
     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) {
@@ -78,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;
@@ -94,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;
@@ -106,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) {
@@ -122,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;
@@ -141,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;
@@ -162,7 +172,7 @@ char **argv;
  sqlerr:
     com_err(whoami, MR_INGRES_ERR, " code %d\n", sqlca.sqlcode);
 #ifsql INGRES
-    if (sqlca.sqlcode == 17700)
+    if (sqlca.sqlcode == 17700 || sqlca.sqlcode == -37000)
       exit(MR_DEADLOCK);
 #endsql
     critical_alert("DCM", "Central America build encountered INGRES ERROR %d",
This page took 0.033864 seconds and 4 git commands to generate.