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

coursecontacts regularly (unnecessarily?) purging

XMLWordPrintable

    • MOODLE_27_STABLE, MOODLE_28_STABLE
    • MOODLE_27_STABLE, MOODLE_28_STABLE, MOODLE_29_STABLE
    • patch-1
    • Easy
    • Hide
      1. Edit lib/coursecatlib.php, change CACHE_COURSE_CONTACTS_TTL to 1 second (so you don't have to keep waiting around)
      2. Create a new course
      3. On course/search.php search for that course so it shows up, should have no teachers listed
      4. Add a teacher
      5. Search again, the new teacher should be shown
      6. Add another teacher
      7. Search again, the new teacher should be shown
      8. Remove a teacher
      9. Search again, that teacher should disappear
      10. Remove the last teacher
      11. Search again, that teacher should disappear
      Show
      Edit lib/coursecatlib.php , change CACHE_COURSE_CONTACTS_TTL to 1 second (so you don't have to keep waiting around) Create a new course On course/search.php search for that course so it shows up, should have no teachers listed Add a teacher Search again, the new teacher should be shown Add another teacher Search again, the new teacher should be shown Remove a teacher Search again, that teacher should disappear Remove the last teacher Search again, that teacher should disappear

      We're still working out how best to configure all of the various cache definitions, and I've been looking at how frequently the various cache definitions are purged in a production environment.
      When a cache definition is on a memcached server shared with other definitions, purging one definition will purge the others as well, as Memcached can't segregate the various definitions.

      It seems the coursecontacts cache regularly purges itself, even though it seems to have fairly simple keys.

      The code (/lib/coursecatlib.php @ ~713-718 in 2.8.5) looks like this:

      $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
      if (...) {
          $cache->purge();
          $cache->set('basic', ...
      }
      

      It seems the keys are all course ids (and 'basic') - so purging a list of course IDs would seem to make more sense, to prevent the purge?

      $cacheddata = $cache->get_many(array_merge(array('basic'), array_keys($courses)));
      if (...) {
          $cache->delete_many($DB->get_fieldset_select('course', 'id', ''));
          $cache->set('basic', ...
      }
      

        1. course-index-page.JPG
          37 kB
          Neill Magill
        2. course-search-page.JPG
          44 kB
          Neill Magill
        3. partial_stack_trace_of_slowness-index.jpg
          85 kB
          Neill Magill
        4. partial_stack_trace_of_slowness-search.jpg
          79 kB
          Neill Magill

            moodle.com Moodle HQ
            skylarkelty Skylar Kelty
            John Okely John Okely
            Andrew Lyons Andrew Lyons
            Ankit Agarwal Ankit Agarwal
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:

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