|
@@ -7,6 +7,8 @@ import com.tzld.piaoquan.recommend.server.model.Video;
|
|
|
import com.tzld.piaoquan.recommend.server.service.filter.strategy.BlacklistContainer;
|
|
|
import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConstants;
|
|
|
import com.tzld.piaoquan.recommend.server.service.recall.strategy.*;
|
|
|
+import com.tzld.piaoquan.recommend.server.util.CommonCollectionUtils;
|
|
|
+import com.tzld.piaoquan.recommend.server.util.JSONUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -57,13 +59,19 @@ public class RecallService implements ApplicationContextAware {
|
|
|
|
|
|
public RecallResult recall(RecallParam param) {
|
|
|
List<RecallStrategy> strategies = getRecallStrategy(param);
|
|
|
+ log.info("strategies {}", JSONUtils.toJson(CommonCollectionUtils.toList(strategies, o -> o.getClass().getSimpleName())));
|
|
|
CountDownLatch cdl = new CountDownLatch(strategies.size());
|
|
|
List<Future<RecallResult.RecallData>> recallResultFutures = new ArrayList<>();
|
|
|
for (final RecallStrategy strategy : strategies) {
|
|
|
Future<RecallResult.RecallData> future = pool.submit(() -> {
|
|
|
- List<Video> result = strategy.recall(param);
|
|
|
- cdl.countDown();
|
|
|
- return new RecallResult.RecallData(strategy.pushFrom(), result);
|
|
|
+ try {
|
|
|
+ List<Video> result = strategy.recall(param);
|
|
|
+ cdl.countDown();
|
|
|
+ return new RecallResult.RecallData(strategy.pushFrom(), result);
|
|
|
+ } catch (Throwable e) {
|
|
|
+ log.error("recall error {}", strategy.getClass().getSimpleName(), e);
|
|
|
+ }
|
|
|
+ return new RecallResult.RecallData(strategy.pushFrom(), Collections.emptyList());
|
|
|
});
|
|
|
recallResultFutures.add(future);
|
|
|
}
|