]> git.sur5r.net Git - bacula/bacula/commitdiff
Limit migration/copy jobs to starting 100 at a time
authorKern Sibbald <kern@sibbald.com>
Sat, 7 Jan 2012 15:32:14 +0000 (16:32 +0100)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:26 +0000 (14:50 +0200)
bacula/src/dird/migrate.c

index f43d4ad3ba6a9b69096957d54c2f8fe8eed23394..e355e7c68ad2956c13112765c750c8264bf1150c 100644 (file)
@@ -668,6 +668,7 @@ static int getJob_to_migrate(JCR *jcr)
    struct tm tm;
    char dt[MAX_TIME_LENGTH];
    int count = 0;
+   int limit = 99;           /* limit + 1 is max jobs to start */
 
    ids.list = get_pool_memory(PM_MESSAGE);
    ids.list[0] = 0;
@@ -851,6 +852,10 @@ static int getJob_to_migrate(JCR *jcr)
          jcr->get_ActionName(1), ids.list);
 
       Dmsg2(dbglevel, "Before loop count=%d ids=%s\n", ids.count, ids.list);
+      /*
+       * Note: to not over load the system, limit the number
+       *  of new jobs started to 100 (see limit above)
+       */
       for (int i=1; i < (int)ids.count; i++) {
          JobId = 0;
          stat = get_next_jobid_from_list(&p, &JobId);
@@ -863,8 +868,12 @@ static int getJob_to_migrate(JCR *jcr)
             goto ok_out;
          }
          jcr->MigrateJobId = JobId;
-         start_migration_job(jcr);
-         Dmsg0(dbglevel, "Back from start_migration_job\n");
+         /* Don't start any more when limit reaches zero */
+         limit--;
+         if (limit > 0) {
+            start_migration_job(jcr);
+            Dmsg0(dbglevel, "Back from start_migration_job\n");
+         }
       }
    
       /* Now get the last JobId and handle it in the current job */