| 
					
				 | 
			
			
				@@ -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 { 
			 |