MDL-64996 analytics: Make sure the no_teaching model is trained
authorDavid Mudrák <david@moodle.com>
Tue, 5 Mar 2019 19:01:28 +0000 (20:01 +0100)
committerDavid Mudrák <david@moodle.com>
Mon, 25 Mar 2019 09:16:44 +0000 (10:16 +0100)
Due to the bug, the no_teaching model might have been marked as
not-trained in the database. Static predictions models (i.e. those using
a target based on assumptions, not facts) are always considered as
trained. If they were marked as not-trained, the prediction scheduled
task would skip them and they would produce no predictions.

Ideally, such a fix should be done for all static models. But there is
no easy way to do it during the upgrade where accessing the analytics
API is not possible. I don't think there are many models out there that
would be affected by this so this seems to be good enough solution for
now (and the future ability to reset models will cover the rest).

lib/db/upgrade.php
version.php

index f37da21..d227891 100644 (file)
@@ -2917,5 +2917,11 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint(true, 2019031500.01);
     }
 
+    if ($oldversion < 2019032200.01) {
+        // The no_teaching model might have been marked as not-trained by mistake (static models are always trained).
+        $DB->set_field('analytics_models', 'trained', 1, ['target' => '\core\analytics\target\no_teaching']);
+        upgrade_main_savepoint(true, 2019032200.01);
+    }
+
     return true;
 }
index 6db1785..d9a50fe 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2019032200.00;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2019032200.01;              // YYYYMMDD      = weekly release date of this DEV branch.
                                         //         RR    = release increments - 00 in DEV branches.
                                         //           .XX = incremental changes.