Просмотр исходного кода

修复错误使用 netty 异步导致的错误

reghao 5 лет назад
Родитель
Сommit
f599a85d6b

+ 2 - 3
common/src/main/java/cn/reghao/autodop/common/dockerc/Docker.java

@@ -20,8 +20,7 @@ import cn.reghao.autodop.common.utils.text.TextFile;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import io.netty.handler.codec.http.FullHttpResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
 import java.nio.charset.StandardCharsets;
@@ -35,8 +34,8 @@ import java.util.stream.Collectors;
  * @author reghao
  * @date 2020-01-13 14:16:38
  */
+@Slf4j
 public class Docker implements ImageOps, ContainerOps, AutoCloseable {
-    private static final Logger log = LoggerFactory.getLogger(Docker.class);
     private HttpClient client = new HttpClient(new UnixSocketClient());
     private TextFile textFile = new TextFile();
 

+ 3 - 5
common/src/main/java/cn/reghao/autodop/common/dockerc/unixdomain/HttpClientHandler.java

@@ -6,23 +6,21 @@ import io.netty.channel.ChannelPromise;
 import io.netty.handler.codec.http.FullHttpRequest;
 import io.netty.handler.codec.http.FullHttpResponse;
 import io.netty.handler.codec.http.HttpResponseStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @author reghao
  * @date 2020-01-14 22:32:58
  */
+@Slf4j
 public class HttpClientHandler extends ChannelInboundHandlerAdapter {
-    private static final Logger log = LoggerFactory.getLogger(HttpClientHandler.class);
-
     private ChannelHandlerContext context;
     private ChannelPromise promise;
     private FullHttpResponse response;
 
     public ChannelPromise sendRequest(FullHttpRequest request) {
         int count = 5;
-        // TODO 禁止无限循环
+        // 禁止无限循环
         while (context == null && count > 0) {
             try {
                 // 等待 5s 建立 channel,超时则结束

+ 7 - 4
common/src/main/java/cn/reghao/autodop/common/dockerc/unixdomain/UnixSocketClient.java

@@ -7,8 +7,7 @@ import io.netty.channel.epoll.EpollEventLoopGroup;
 import io.netty.channel.unix.DomainSocketAddress;
 import io.netty.channel.unix.UnixChannel;
 import io.netty.handler.codec.http.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
@@ -17,8 +16,8 @@ import java.util.concurrent.TimeUnit;
  * @author reghao
  * @date 2020-01-14 17:14:08
  */
+@Slf4j
 public class UnixSocketClient {
-    private static final Logger log = LoggerFactory.getLogger(UnixSocketClient.class);
     // TODO 在配置中指定
     private final String DEFAULT_UNIX_ENDPOINT = "/run/docker.sock";
     private EventLoopGroup group;
@@ -54,6 +53,8 @@ public class UnixSocketClient {
            if (future.isSuccess()) {
                log.info("已连接到 Unix Socket");
                channel = channelFuture.channel();
+           } else {
+               log.error("Unix Socket 连接失败, 检查 " + DEFAULT_UNIX_ENDPOINT + " 是否存在...");
            }
         });
 
@@ -72,9 +73,11 @@ public class UnixSocketClient {
     }
 
     public FullHttpResponse syncSend(FullHttpRequest request) throws InterruptedException, IOException {
+        /*
+        错误用法,忽略了异步的本质
         if (channel == null) {
             throw new IOException("Unix Socket 连接失败, 检查 " + DEFAULT_UNIX_ENDPOINT + " 是否存在...");
-        }
+        }*/
 
         ChannelPromise promise = clientHandler.sendRequest(request);
         if (promise == null) {

+ 1 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/app/App.java

@@ -35,6 +35,7 @@ public class App {
                 } catch (DockerException e) {
                     return RpcResult.fail(ExceptionUtil.errorMsg(e));
                 }
+                break;
             case zip:
                 zipAppServiceImpl.deploy(appDeployArgs);
                 break;

+ 1 - 1
dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppServiceImpl.java

@@ -17,7 +17,7 @@ import java.util.List;
 public class DockerAppServiceImpl implements AppService {
     @Override
     public void deploy(AppDeployArgs appDeployArgs) throws DockerException {
-        try(Docker docker = new Docker()) {
+        try (Docker docker = new Docker()) {
             String repoTag = appDeployArgs.getPackagePath();
             docker.pull(repoTag);
 

+ 0 - 17
dagent/src/main/java/cn/reghao/autodop/dagent/machine/timer/HeartbeatJob.java

@@ -1,9 +1,5 @@
 package cn.reghao.autodop.dagent.machine.timer;
 
-import ch.qos.logback.classic.Logger;
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Appender;
 import cn.reghao.autodop.common.amqp.MqMessage;
 import cn.reghao.autodop.common.amqp.MessageType;
 import cn.reghao.autodop.common.amqp.RabbitProducer;
@@ -13,8 +9,6 @@ import cn.reghao.autodop.common.utils.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.*;
 
-import java.util.Iterator;
-
 /**
  * 机器心跳任务
  *
@@ -34,16 +28,5 @@ public class HeartbeatJob implements Job {
         MqMessage mqMessage = MqMessage.mqMessage(MessageType.machineType.name(),
                 MachineOps.machineHeartbeatOps.name(), false, payload);
         rabbitProducer.send("amq.direct", "dmaster", mqMessage);
-
-        LoggerContext loggerContext = ((Logger) log).getLoggerContext();
-        Logger logger = loggerContext.getLogger("Main");
-        Iterator<Appender<ILoggingEvent>> iterator = logger.iteratorForAppenders();
-        while (iterator.hasNext()) {
-            Appender<ILoggingEvent> appender = iterator.next();
-            String appenderName = appender.getName();
-            System.out.println();
-        }
-
-        log.info("发送机器心跳...");
     }
 }