|
@@ -99,7 +99,7 @@ public class ModelManager {
|
|
ModelLoadTask task = new ModelLoadTask(path, modelClass);
|
|
ModelLoadTask task = new ModelLoadTask(path, modelClass);
|
|
task.refCount++;
|
|
task.refCount++;
|
|
loadTasks.put(path, task);
|
|
loadTasks.put(path, task);
|
|
- loadModel(task, false, true);
|
|
|
|
|
|
+ loadModelWithRetry(task, false, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -162,7 +162,23 @@ public class ModelManager {
|
|
for (String modelPath : loadTasks.keySet()) {
|
|
for (String modelPath : loadTasks.keySet()) {
|
|
log.debug("load task model path [{}]", modelPath);
|
|
log.debug("load task model path [{}]", modelPath);
|
|
ModelLoadTask task = loadTasks.get(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 = 3;
|
|
|
|
+ int delay = 10000;
|
|
|
|
+ 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
|
|
* @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) {
|
|
if (loadTask.isLoading) {
|
|
- return;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
loadTask.isLoading = true;
|
|
loadTask.isLoading = true;
|
|
OSSObject ossObj = null;
|
|
OSSObject ossObj = null;
|
|
|
|
+
|
|
try {
|
|
try {
|
|
ossObj = client.getObject(bucketName, loadTask.path);
|
|
ossObj = client.getObject(bucketName, loadTask.path);
|
|
long timeStamp = ossObj.getObjectMetadata().getLastModified().getTime();
|
|
long timeStamp = ossObj.getObjectMetadata().getLastModified().getTime();
|
|
@@ -196,6 +213,7 @@ public class ModelManager {
|
|
ossObj.close();
|
|
ossObj.close();
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
log.error("update model fail", e);
|
|
log.error("update model fail", e);
|
|
|
|
+ return false;
|
|
} finally {
|
|
} finally {
|
|
loadTask.isLoading = false;
|
|
loadTask.isLoading = false;
|
|
if (ossObj != null) {
|
|
if (ossObj != null) {
|
|
@@ -206,6 +224,7 @@ public class ModelManager {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
public class ModelRegisterException extends Exception {
|
|
public class ModelRegisterException extends Exception {
|