|
@@ -168,7 +168,8 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
|
|
|
TemplateGenerator.createProblemXml(pid,provo);
|
|
|
//创建run.py
|
|
|
TemplateGenerator.createRunpy(pid);
|
|
|
- run(pid,pro.getStype());
|
|
|
+// run(pid,pro.getStype());
|
|
|
+ runDl(pid,pro.getStype());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -394,7 +395,73 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
|
|
|
return null;
|
|
|
});
|
|
|
}
|
|
|
+ //异步执行
|
|
|
+ @SneakyThrows
|
|
|
+ public void runDl(String pid ,String stype)throws Exception{
|
|
|
+ MdoProComvalMapper comvalDao =UtilTools.getBean(MdoProComvalMapper.class);
|
|
|
+ MdoProComvalSQLBuilder sb =new MdoProComvalSQLBuilder();
|
|
|
+ MdoProComvalSQLBuilder.Criteria sc = sb.createCriteria();
|
|
|
+ sc.andPidEqualTo(pid);
|
|
|
+ comvalDao.deleteByExample(sb);
|
|
|
+
|
|
|
+ FileMonitor surrMonitor = new FileMonitor(1000);
|
|
|
+ SurromdaoFileListener t= new SurromdaoFileListener(pid);
|
|
|
+ surrMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0", t);
|
|
|
+ surrMonitor.start();
|
|
|
+
|
|
|
+
|
|
|
+ LogService.addLog(pid,"求解——————————————————开始");
|
|
|
+ DockerExe.stopDocker(pid);
|
|
|
+ DockerExe.runMdo3(pid);
|
|
|
+ final int[] con = {0};
|
|
|
+ final String[] line = {""};
|
|
|
+ CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()-> {try {
|
|
|
+ DockerExe.getDockerLogs(pid,new ResultCallback.Adapter<Frame>() {
|
|
|
+ @Override
|
|
|
+ public void onNext(Frame frame) {
|
|
|
+ if(con[0] <100){
|
|
|
+ line[0]+=new String(frame.getPayload());
|
|
|
+ con[0]++;
|
|
|
+ }else{
|
|
|
+ LogService.addLog(pid, line[0]);
|
|
|
+ line[0]="";
|
|
|
+ con[0] =0;
|
|
|
+ }
|
|
|
+ LogService.addLog(pid, new String(frame.getPayload()));
|
|
|
+ System.out.print(new String(frame.getPayload()));
|
|
|
+ super.onNext(frame);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onError(Throwable throwable) {
|
|
|
+ System.err.println("日志获取失败");
|
|
|
+ LogService.addLog(pid, line[0]);
|
|
|
+ throwable.printStackTrace();
|
|
|
+ super.onError(throwable);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void onComplete() {
|
|
|
+ System.out.println("日志获取完成");
|
|
|
+ LogService.addLog(pid, line[0]);
|
|
|
+ super.onComplete();
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
+
|
|
|
+ LogService.addLog(pid,"求解——————————————————成功");
|
|
|
+ } catch (Exception e) {
|
|
|
+ LogService.addLog(pid,"求解——————————————————失败");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ surrMonitor.stop();
|
|
|
+ SurromdaoFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/surromdao_history_all.dat"),pid);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ });
|
|
|
+ }
|
|
|
//异步执行
|
|
|
@SneakyThrows
|
|
|
public void run(String pid ,String stype)throws Exception{
|
|
@@ -404,6 +471,7 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
|
|
|
sc.andPidEqualTo(pid);
|
|
|
comvalDao.deleteByExample(sb);
|
|
|
|
|
|
+
|
|
|
LogService.addLog(pid,"求解——————————————————开始");
|
|
|
DockerExe.stopDocker(pid);
|
|
|
DockerExe.runMdo(pid);
|