Răsfoiți Sursa

fix: 修复gpload线程阻塞

weijianghai 2 ani în urmă
părinte
comite
029b90fde5

+ 12 - 3
src/main/java/com/nokia/common/gpload/GploadUtil.java

@@ -20,8 +20,6 @@ public class GploadUtil {
         GploadResult result = new GploadResult();
         try {
             Process process = Runtime.getRuntime().exec(gploadCommand);
-            int exitCode = process.waitFor();
-            result.setTaskStatus(exitCode == 0);
             reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
             List<String> lines = new ArrayList<>();
             String line;
@@ -59,10 +57,21 @@ public class GploadUtil {
                     }
                 }
             }
+            int exitCode = process.waitFor();
+            result.setTaskStatus(exitCode == 0);
+            if (Thread.interrupted()) {
+                log.error("gpload线程阻塞");
+                XxlJobHelper.log("gpload线程阻塞");
+                throw new InterruptedException();
+            }
         } catch (IOException | InterruptedException e) {
-            e.printStackTrace();
+            log.debug("gpload发生异常: {}", e.getMessage(), e);
+            XxlJobHelper.log("gpload发生异常: {}", e.getMessage(), e);
             result.setTaskStatus(false);
             result.setMessage(e.getMessage());
+            if (e instanceof InterruptedException) {
+                Thread.currentThread().interrupt();
+            }
         } finally {
             log.debug("gpload的结果为: {}", result);
             XxlJobHelper.log("gpload的结果为: {}", result);

+ 8 - 0
src/main/java/com/nokia/pm_interface_5g/task/FiveGPmTask.java

@@ -84,6 +84,8 @@ public class FiveGPmTask {
                 singleTask(t);
             }
         } catch (Exception e) {
+            log.error("发生异常了: {}", e.getMessage(), e);
+            XxlJobHelper.log("发生异常了: {}", e.getMessage(), e);
             XxlJobHelper.handleFail(e.getMessage());
         }
     }
@@ -127,6 +129,8 @@ public class FiveGPmTask {
      * @param filename 文件名
      */
     public void distinct(String filename) throws IOException {
+        log.debug("文件 {} 去重...", filename);
+        XxlJobHelper.log("文件 {} 去重...", filename);
         String inputFilePath = downloadTargetDir + filename;
         String outputFilePath = distinctTargetDir + filename;
         Path inputPath = Paths.get(inputFilePath);
@@ -144,8 +148,12 @@ public class FiveGPmTask {
             rerrange(printer, map);
         }
 
+        log.debug("文件 {} 去重完成...", filename);
+        XxlJobHelper.log("文件 {} 去重完成...", filename);
         // 删除本地源文件
         Files.deleteIfExists(inputPath);
+        log.debug("删除本地源文件 {}...", filename);
+        XxlJobHelper.log("删除本地源文件 {}...", filename);
     }
 
     public void gpload(String filename) throws IOException {