丁云鹏 1 年間 前
コミット
0add5a6513

+ 10 - 22
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score/ScorerPipeline.java

@@ -1,13 +1,8 @@
 package com.tzld.piaoquan.recommend.server.service.score;
 
 import com.tzld.piaoquan.recommend.server.common.base.RankItem;
-import com.tzld.piaoquan.recommend.server.common.base.RequestContext;
 import com.tzld.piaoquan.recommend.server.common.base.UserFeature;
-import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
-import com.tzld.piaoquan.recommend.server.model.Video;
-import com.tzld.piaoquan.recommend.server.service.rank.RankParam;
-import com.tzld.piaoquan.recommend.server.service.rank.RankResult;
-import com.tzld.piaoquan.recommend.server.service.recall.RecallResult;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.slf4j.Logger;
@@ -16,13 +11,10 @@ import org.slf4j.LoggerFactory;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
 
 
+@Slf4j
 public class ScorerPipeline {
     public static final int corePoolSize = 128;
     public static final int SCORE_TIME_OUT = 400;
@@ -37,16 +29,17 @@ public class ScorerPipeline {
 
     /**
      * scoring
+     *
      * @return
      */
     public List<RankItem> scoring(final ScoreParam param,
-                               final UserFeature userFeature,
-                               final List<RankItem> rankItems) {
+                                  final UserFeature userFeature,
+                                  final List<RankItem> rankItems) {
 
         if (CollectionUtils.isEmpty(scorers)) {
-            // log.error()
+            log.error("scorers is empty");
+            return rankItems;
         }
-        long scoreStart = System.currentTimeMillis();
         List<RankItem> items = rankItems;
 
         for (final AbstractScorer scorer : scorers) {
@@ -62,12 +55,7 @@ public class ScorerPipeline {
             final String scorerName = scorerNames.length > 0 ? scorerNames[scorerNames.length - 1] : fullScorerName;
 
             final List<RankItem> scoreRankerItems = items;
-            Callable<List<RankItem>> callable = new Callable<List<RankItem>>() {
-                @Override
-                public List<RankItem> call() throws Exception {
-                    return scorer.scoring(param, userFeature, scoreRankerItems);
-                }
-            };
+            Callable<List<RankItem>> callable = () -> scorer.scoring(param, userFeature, scoreRankerItems);
 
             // execute score use thread to protected score worst time
             List<RankItem> scoredItems = new ArrayList<RankItem>();
@@ -104,7 +92,7 @@ public class ScorerPipeline {
                 item.getRankerScore().put(scorerName, item.getScore());
             }
 
-           //
+            //
             long spentTime = System.currentTimeMillis() - startTime;
             LOGGER.debug("after scorer [{}], spentTime [{}], before size [{}], remaining size [{}]",
                     new Object[]{scorerName, spentTime, beforeSize, scoreRankerItems.size()});

+ 6 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score/VlogShareLRScorer.java

@@ -6,6 +6,7 @@ import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
 import com.tzld.piaoquan.recommend.server.service.rank.RankParam;
 import com.tzld.piaoquan.recommend.server.service.score.feature.VlogShareLRFeatureExtractor;
 import com.tzld.piaoquan.recommend.server.service.score.model.LRModel;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,12 +38,14 @@ public class VlogShareLRScorer extends BaseLRModelScorer {
     public List<RankItem> scoring(final ScoreParam param,
                                   final UserFeature userFeature,
                                   final List<RankItem> rankItems) {
+
+        if (userFeature == null || CollectionUtils.isEmpty(rankItems)) {
+            return rankItems;
+        }
+
         long startTime = System.currentTimeMillis();
         LRModel model = (LRModel) this.getModel();
         LOGGER.debug("model size: [{}]", model.getModelSize());
-        if (rankItems.size() == 0) {
-            return rankItems;
-        }
 
         List<RankItem> result = rankItems;
         result = rankByJava(rankItems, param.getRequestContext(), userFeature);

+ 3 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/web/GlobalExceptionHandler.java

@@ -14,7 +14,9 @@ public class GlobalExceptionHandler {
     @ExceptionHandler
     @ResponseBody
     public String handleException(HttpServletRequest hsr, Exception e) {
-        log.error("request uri {} error", hsr.getRequestURI(), e);
+        if (e instanceof RuntimeException) {
+            log.error("request uri {} error", hsr.getRequestURI(), e);
+        }
         return "";
     }
 

+ 2 - 2
recommend-server-service/src/main/resources/logback-spring.xml

@@ -14,7 +14,7 @@
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
     <!-- 日志输出格式 -->
     <property name="LOG_PATTERN"
-              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}\\(%L\\) traceId=%X{traceId} - %msg%n"/>
+              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}\\(%L\\) - %msg%n"/>
     <property name="mdcFields" value="traceId,appType"></property>
 
     <!-- spring property使用方式 -->
@@ -33,7 +33,7 @@
                     converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
     <!-- 彩色日志格式 -->
     <property name="CONSOLE_LOG_PATTERN"
-              value="${CONSOLE_LOG_PATTERN:-%clr{traceId} %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}\\(%L\\)){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}\\(%L\\)){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
 
     <!--输出到控制台-->
     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">