Explorar o código

add packet check sum check flag in .yml

HANTE hai 3 meses
pai
achega
7562c20613

+ 1 - 1
conf/tsi-comm-server.pid

@@ -1 +1 @@
-2220
+2828

+ 1 - 0
conf/tsi-comm-server.yml

@@ -2,3 +2,4 @@
 application:
   cvim-server:
     server-id: 1
+    check-packet: false

+ 2 - 0
src/main/java/com/tsi/comm/server/config/TsiCvimServerConfig.java

@@ -20,6 +20,7 @@ public class TsiCvimServerConfig extends NettyServerConfig {
     private int packetWorkers = 0;
     private int loggingWorkers = 0;
     private int dbmsWorkers = 0;
+    private boolean checkPacket = true;
 
     @PostConstruct
     private void init() {
@@ -51,6 +52,7 @@ public class TsiCvimServerConfig extends NettyServerConfig {
         log.info("[{}]         loggingThread: {}", this.getClass().getSimpleName(), this.loggingThread);
         log.info("[{}]         packetWorkers: {}", this.getClass().getSimpleName(), this.packetWorkers);
         log.info("[{}]        loggingWorkers: {}", this.getClass().getSimpleName(), this.loggingWorkers);
+        log.info("[{}]           checkPacket: {}", this.getClass().getSimpleName(), this.checkPacket);
         log.info("{}", super.toString());
     }
 

+ 11 - 12
src/main/java/com/tsi/comm/server/process/packet/TsiCvimPacketWorker.java

@@ -3,8 +3,8 @@ package com.tsi.comm.server.process.packet;
 import com.tsi.app.common.app.AppUtils;
 import com.tsi.app.common.cpu.enums.eOpCode;
 import com.tsi.app.common.utils.TimeUtils;
+import com.tsi.comm.server.config.TsiCvimServerConfig;
 import com.tsi.comm.server.kafka.KafkaProducerService;
-import com.tsi.comm.server.mongo.repository.TsiNodeStatusRepository;
 import com.tsi.comm.server.process.AbstractTsiCvimWorker;
 import com.tsi.comm.server.process.logging.TsiCvimLoggingProcess;
 import com.tsi.comm.server.protocol.AbstractTsiPacket;
@@ -24,7 +24,7 @@ public class TsiCvimPacketWorker extends AbstractTsiCvimWorker implements Runnab
     private final LinkedBlockingQueue<AbstractTsiPacket> DATA_QUEUE;
     private final KafkaProducerService kafkaProducer;
     private final TsiCvimLoggingProcess loggingService;
-    private TsiNodeStatusRepository tsiNodeStatusRepository;
+    private TsiCvimServerConfig cvimServerConfig;
 
     public TsiCvimPacketWorker(int idx, int qSize, KafkaProducerService kafkaProducer) {
         this.idx = idx;
@@ -32,13 +32,7 @@ public class TsiCvimPacketWorker extends AbstractTsiCvimWorker implements Runnab
         this.kafkaProducer = kafkaProducer;
         this.loggingService = (TsiCvimLoggingProcess) AppUtils.getBean(TsiCvimLoggingProcess.class);
         this.DATA_QUEUE = new LinkedBlockingQueue<>(qSize);
-        try {
-            this.tsiNodeStatusRepository = (TsiNodeStatusRepository) AppUtils.getBean(TsiNodeStatusRepository.class);
-        }
-        catch(Exception e) {
-            this.tsiNodeStatusRepository = null;
-            log.error("MongoDB: {}", e.getMessage());
-        }
+        this.cvimServerConfig = (TsiCvimServerConfig) AppUtils.getBean(TsiCvimServerConfig.class);
     }
 
     @Override
@@ -116,11 +110,16 @@ public class TsiCvimPacketWorker extends AbstractTsiCvimWorker implements Runnab
         }
 
         // 메모리에서 객체를 찾은 후 패킷 파싱
-        if (!cpuPacket.parsing(nodeVo)) {
-            MDC.put("id", nodeVo.getKey());
+        // 20250425: packet parsing의 로그를 노드별 로그파일에 저장되도록 MDC 위치 변경
+        // 20250425: parsing 함수에 packet-check 여부를 같이 넘겨줘서 CRC 체크여부 확인
+        MDC.put("id", nodeVo.getKey());
+        if (!cpuPacket.parsing(nodeVo, this.cvimServerConfig.isCheckPacket())) {
+            // MDC.put("id", nodeVo.getKey());
             log.error("Packet parsing failed: {}", packet.getNodeId());
-            MDC.clear();
+            // MDC.clear();
         }
+        MDC.clear();
+
         packet.setPar(System.nanoTime());
 
         // 카프카 전송

+ 6 - 2
src/main/java/com/tsi/comm/server/protocol/TsiCpuPacket.java

@@ -290,17 +290,21 @@ public class TsiCpuPacket extends AbstractTsiPacket {
         return true;
     }
 
-    public boolean parsing(TsiNodeVo obj) {
+    public boolean parsing(TsiNodeVo obj, boolean isCheckPacket) {
 
         this.opCode = this.buf[INDEX_OPCODE];
         this.dataVer = this.buf[INDEX_VERSION];
         this.length = ByteUtils.getUnsignedShort(this.buf, INDEX_LENGTH);
         this.count = (int)(this.buf[INDEX_STATUS_HDR+3] & 0x7F);
 
+        // CVIM 데이터 및 TEST 데이터가 생성됨
         makeCvimPacket();
 
         if (!checkPacket()) {
-            return false;
+            if (isCheckPacket) {
+                // 20250425: CRC 체크여부에 따라 바로 리턴(기본값은 체크여부가 true 임)
+                return false;
+            }
         }
 
         TsiNodeAddVo tsiNodeAddVo = TsiNodeAddManager.getInstance().get(this.nodeId);

+ 4 - 3
src/main/resources/logback-spring.xml

@@ -20,8 +20,9 @@
     <property name="LOG_FILE_NAME_DBMS"        value="dbms.log"/>
     <property name="LOG_FILE_NAME_KAFKA"       value="kafka.log"/>
 
-    <property name="MAX_FILESIZE" value="500MB"/>
+    <property name="MAX_FILESIZE" value="100MB"/>
     <property name="MAX_HISTORY"  value="30"/>
+    <property name="MAX_PROCESS_FILESIZE" value="20MB"/>
     <property name="LOG_PATTERN_FILE"        value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_ERROR"       value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{35}.%M.%L - %msg%n"/>
     <property name="LOG_PATTERN_PROCESS"     value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
@@ -82,7 +83,7 @@
 
                 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                     <FileNamePattern>${LOG_BACKUP_PATH}process/${id}.${LOG_FILE_NAME_PATTERN}</FileNamePattern>
-                    <maxFileSize>${MAX_FILESIZE}</maxFileSize>
+                    <maxFileSize>${MAX_PROCESS_FILESIZE}</maxFileSize>
                     <maxHistory>${MAX_HISTORY}</maxHistory>
                 </rollingPolicy>
             </appender>
@@ -177,7 +178,7 @@
     </appender>
 
     <logger name="com.tsi.comm.server.tcp" level="INFO" additivity="false">
-        <appender-ref ref="CONSOLE"/>
+<!--        <appender-ref ref="CONSOLE"/>-->
         <appender-ref ref="FILE_SESSION"/>
         <appender-ref ref="FILE_ERROR"/>
     </logger>