首页 > 解决方案 > 微笑随机森林中的空指针异常预测并发用户

问题描述

当我使用 2 个并发用户调用微笑库的 predict 方法时,出现以下错误。我正在使用 Gatling 和 akka http 网络服务。升级到 2.6 的微笑并没有解决问题。当我按顺序运行请求时,问题不会发生。

ERROR com.xxx.search.Server$ - Failed request
java.lang.NullPointerException: null
    at smile.data.formula.Formula$2.getDouble(Formula.java:358)
    at smile.base.cart.OrdinalNode.predict(OrdinalNode.java:45)
    at smile.classification.DecisionTree.predict(DecisionTree.java:361)
    at smile.classification.RandomForest.predict(RandomForest.java:514)
    at MLUtil.AssetClassifierModel.$anonfun$predict$1(AssetClassifierModel.scala:32)
    at MLUtil.AssetClassifierModel.$anonfun$predict$1$adapted(AssetClassifierModel.scala:31)
    at scala.collection.immutable.Range.map(Range.scala:59)
    at MLUtil.AssetClassifierModel.predict(AssetClassifierModel.scala:31)
    at MLUtil.AssetClassifierModel.predict(AssetClassifierModel.scala:41)
    at classifier.AssetClassifier.predict(AssetClassifier.scala:52)
    at com.refinitiv.eit.isearch.runtime.AssetClassifierImpl$.$anonfun$classify$1(AssetClassifierImpl.scala:28)
    at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:661)
    at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:430)
    at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
    at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:92)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
    at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:92)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:47)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

标签: concurrencysmile

解决方案


推荐阅读