Browse Source

Merge branch 'feature_log' of algorithm/recommend-server into master

dingyunpeng 1 năm trước cách đây
mục cha
commit
9a0d10969a

+ 23 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score/model/ModelManager.java

@@ -99,7 +99,7 @@ public class ModelManager {
             ModelLoadTask task = new ModelLoadTask(path, modelClass);
             task.refCount++;
             loadTasks.put(path, task);
-            loadModel(task, false, true);
+            loadModelWithRetry(task, false, true);
         }
     }
 
@@ -162,7 +162,23 @@ public class ModelManager {
         for (String modelPath : loadTasks.keySet()) {
             log.debug("load task model path [{}]", modelPath);
             ModelLoadTask task = loadTasks.get(modelPath);
-            loadModel(task, isForceLoads, false);
+            loadModelWithRetry(task, isForceLoads, false);
+        }
+    }
+
+    private void loadModelWithRetry(final ModelLoadTask loadTask, final boolean isForceLoads,
+                                    final boolean isRegister) {
+        try {
+            int retry = 2;
+            int delay = 3000;
+            while (retry-- > 0) {
+                if (loadModel(loadTask, isForceLoads, isRegister)) {
+                    break;
+                }
+                Thread.sleep(delay);
+            }
+        } catch (InterruptedException e) {
+            log.error("loadModelWithRetry fail", e);
         }
     }
 
@@ -174,12 +190,13 @@ public class ModelManager {
      *
      * @param loadTask
      */
-    private void loadModel(final ModelLoadTask loadTask, final boolean isForceLoads, final boolean isRegister) {
+    private boolean loadModel(final ModelLoadTask loadTask, final boolean isForceLoads, final boolean isRegister) {
         if (loadTask.isLoading) {
-            return;
+            return true;
         }
         loadTask.isLoading = true;
         OSSObject ossObj = null;
+
         try {
             ossObj = client.getObject(bucketName, loadTask.path);
             long timeStamp = ossObj.getObjectMetadata().getLastModified().getTime();
@@ -196,6 +213,7 @@ public class ModelManager {
             ossObj.close();
         } catch (Exception e) {
             log.error("update model fail", e);
+            return false;
         } finally {
             loadTask.isLoading = false;
             if (ossObj != null) {
@@ -206,6 +224,7 @@ public class ModelManager {
                 }
             }
         }
+        return true;
     }
 
     public class ModelRegisterException extends Exception {