Explorar o código

fix:V1AllRov召回NPE (warmUp预注册+scorer null check双保险)

ScorerUtils.warmUp 加 init4Recall("feeds_recall_config_region_v1_all_rov.conf") 跟 V1 对齐, 启动期就拉 OSS model;
RegionRecallScorerV1AllRov.recall 加 null check, 即使 ModelManager 拉取失败也软退化返回空, 不再 NPE。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
yangxiaohui hai 1 día
pai
achega
a32c4ead52

+ 1 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score/ScorerUtils.java

@@ -46,6 +46,7 @@ public final class ScorerUtils {
 
         // 召回配置
         ScorerUtils.init4Recall("feeds_recall_config_region_v1.conf");
+        ScorerUtils.init4Recall("feeds_recall_config_region_v1_all_rov.conf");
         ScorerUtils.init4Recall("feeds_recall_config_region_ros.conf");
         ScorerUtils.init4Recall("feeds_score_config_bless.conf");
         ScorerUtils.init4Recall("feeds_recall_config_tomson.conf");

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score4recall/strategy/RegionRecallScorerV1AllRov.java

@@ -25,6 +25,10 @@ public class RegionRecallScorerV1AllRov extends AbstractScorer4Recall {
     @Override
     public List<Pair<Long, Double>> recall(Map<String, String> params) {
         Model4RecallKeyValue model = (Model4RecallKeyValue) this.getModel();
+        if (model == null || model.kv == null) {
+            // OSS 文件 (alg_recall_file/01_recall_region1hour_all_rov.txt) 还没建好时 ModelManager 拉取失败, 软退化返回空
+            return new ArrayList<>();
+        }
         String key = params.getOrDefault("region_province", "中国");
         List<Pair<Long, Double>> lists = model.kv.getOrDefault(key, new ArrayList<>());
         if (lists.isEmpty()) {