Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-12562

Backup process generate big memory footprint and would stop when have huge number of users

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • 1.8.5, 1.9
    • 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.6
    • Backup
    • None
    • MOODLE_15_STABLE, MOODLE_16_STABLE
    • MOODLE_18_STABLE, MOODLE_19_STABLE

      On our production site our staff programmer Cliff found this issue, when we added the winter/spring 2008 students to the DB, then course level manual backup will not complete. We did some debugging and found that the function user_check_backup in /backup/backuplib.php were not implemented efficiently and would generate big memory footprint:

      function user_check_backup($course,$backup_unique_code,$backup_users,$backup_messages) {
      //$backup_users=0-->all
      // 1-->course (needed + enrolled)
      // 2-->none

      global $CFG;
      global $db;

      $count_users = 0;

      //If we've selected none, simply return 0
      if ($backup_users == 0 or $backup_users == 1) {

      //Calculate needed users (calling every xxxx_get_participants function + scales users)
      $needed_users = backup_get_needed_users($course, $backup_messages);

      //Calculate enrolled users (students + teachers)
      $enrolled_users = backup_get_enrolled_users($course);

      //Calculate all users (every record in users table)
      $all_users = backup_get_all_users();

      //Calculate course users (needed + enrolled)
      //First, needed
      $course_users = $needed_users;

      //Now, enrolled
      if ($enrolled_users) {
      foreach ($enrolled_users as $enrolled_user)

      { $course_users[$enrolled_user->id]->id = $enrolled_user->id; }

      }

      //Now, depending of parameters, create $backupable_users
      if ($backup_users == 0)

      { $backupable_users = $all_users; }

      else

      { $backupable_users = $course_users; }

      We rewrote it a little bit and are still testing the patch (patch is not included here in this ticket right now), but would like to create a bug ticket here so that people who are running large sites would aware of this issue. Thanks!

        1. backuplib.diff
          1 kB
          Wen Hao Chuang
        2. CSDiff.htm
          84 kB
          Wen Hao Chuang

            danmarsden Dan Marsden
            chuang Wen Hao Chuang
            Nobody Nobody (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved:

                Error rendering 'clockify-timesheets-time-tracking-reports:timer-sidebar'. Please contact your Jira administrators.