Ladsgroup has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/401815 )

Change subject: Add models when ores_model is empty
......................................................................

Add models when ores_model is empty

This is not very clean but it works in my localhost
Will refactor this when I'm done with ModelStorage service

Bug: T184127
Change-Id: I50be5e431db41d8ba942bb362799578316ea058c
---
M includes/Storage/SqlModelLookup.php
1 file changed, 27 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ORES 
refs/changes/15/401815/1

diff --git a/includes/Storage/SqlModelLookup.php 
b/includes/Storage/SqlModelLookup.php
index d17f0e3..e18e713 100644
--- a/includes/Storage/SqlModelLookup.php
+++ b/includes/Storage/SqlModelLookup.php
@@ -16,7 +16,12 @@
 
 namespace ORES\Storage;
 
+use DeferredUpdates;
 use InvalidArgumentException;
+use MediaWiki\MediaWikiServices;
+use ORES\Api;
+use ORES\Scoring;
+use RuntimeException;
 use Wikimedia\Rdbms\LoadBalancer;
 
 class SqlModelLookup implements ModelLookup {
@@ -85,9 +90,31 @@
                                        'version' => $row->oresm_version
                                ];
                        }
+                       if ( count( $this->modelData ) === 0 ) {
+                               DeferredUpdates::addCallableUpdate( function () 
{
+                                       self::fetchModelsFromApi();
+                               } );
+                       }
                }
 
                return $this->modelData;
        }
 
+       public static function fetchModelsFromApi() {
+               $wikiId = Api::getWikiID();
+               $api = new Api();
+               $mssg = 'Bad response from ORES when requesting models: ';
+               $modelsData = $api->request( [] );
+               if ( !isset( $modelsData[$wikiId] ) || empty( 
$modelsData[$wikiId]['models'] ) ) {
+                       throw new RuntimeException( $mssg . json_encode( 
$modelsData ) );
+               }
+               foreach ( $modelsData[$wikiId]['models'] as $model => 
$modelData ) {
+                       if ( !isset( $modelData['version'] ) ) {
+                               throw new RuntimeException( $mssg . 
json_encode( $modelData ) );
+                       }
+                       Scoring::instance()->updateModelVersion( $model, 
$modelData['version'] );
+                       
MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->waitForReplication();
+               }
+       }
+
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/401815
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I50be5e431db41d8ba942bb362799578316ea058c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ORES
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to