ロボットの実行中に「last of empty list」エラーが発生する

フォローする

発生バージョン・改修ID・修正バージョン

発生Ver 改修ID 修正Ver
11.3.0.3 1908910 11.4.0.2

 

事象

ロボットの実行中に以下の内部エラー(Internal Error)が発生し、後続の処理が実行されない場合があります。

 

エラーメッセージ

Internal error during robot execution. last of empty list

メッセージの詳細:
java.util.NoSuchElementException: last of empty list
at scala.collection.immutable.Nil$.last(List.scala:665)
at scala.collection.immutable.Nil$.last(List.scala:661)
at com.kapowtech.da.language.syntax.StepTrace.last(StepTrace.scala:30)
at com.kapowtech.da.execution.error.ExecutionError.getTargetStepName(ExecutionError.java:124)
at kapow.robot.robomaker.engine.log.RL2ExecutionErrorLogMessage.getTargetStepName(RL2ExecutionErrorLogMessage.java:61)
at kapow.robot.rqlserver.engine.LogExecutionEnvironment.handleMessage(LogExecutionEnvironment.java:89)
at kapow.robot.roborunner.exeeng.SequentialAggregateMessageExecutionEnvironment.handleMessage(SequentialAggregateMessageExecutionEnvironment.java:153)
at kapow.robot.rqlserver.engine.ErrorCountingLogHandler.handleMessage(ErrorCountingLogHandler.java:44)
at kapow.robot.robomaker.engine.stackengine.StackEngineInstruction.lambda$logExecutionErrors$0(StackEngineInstruction.java:65)
at java.base/java.util.Collections$SingletonList.forEach(Unknown Source)
at kapow.robot.robomaker.engine.stackengine.StackEngineInstruction.logExecutionErrors(StackEngineInstruction.java:62)
at kapow.robot.robomaker.engine.instruction.ErrorHandlingInstruction.handleError(ErrorHandlingInstruction.java:189)
at kapow.robot.robomaker.engine.instruction.ExecuteNonIteratorTransitionInstruction.execute(ExecuteNonIteratorTransitionInstruction.java:180)
at kapow.robot.robomaker.engine.stackengine.StackEngine.execute(StackEngine.java:68)
at kapow.robot.robomaker.engine.runtime.RuntimeRobotExecutionEngine.executeRobot(RuntimeRobotExecutionEngine.java:220)
at kapow.robot.roborunner.exeeng.RobotExecutable.run(RobotExecutable.java:286)
at kapow.framework.exeeng.StopRequestSupportingFifoBasedQueueingExecutionEngine.doExecute(StopRequestSupportingFifoBasedQueueingExecutionEngine.java:221)
at kapow.framework.exeeng.StopRequestSupportingFifoBasedQueueingExecutionEngine.execute(StopRequestSupportingFifoBasedQueueingExecutionEngine.java:112)
at kapow.robot.rqlserver.rql.ExecuteRQLRequest.execute(ExecuteRQLRequest.java:241)
at kapow.robot.rqlserver.engine.RQLEngine.exceptionThrowingExecute(RQLEngine.java:261)
at kapow.robot.rqlserver.engine.RQLEngine.execute(RQLEngine.java:210)
at com.kapowtech.robosuite.service.server.RoboServerBridgeSimpleRQLEngine.request(RoboServerBridgeSimpleRQLEngine.java:134)
at com.kapowtech.robosuite.service.socket.multiplexing.MultiplexingResponseHandler.run(MultiplexingResponseHandler.java:52)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

〇エラー例

figure2.png

原因

ロボット内で発生したエラーを出力する処理が想定通りに動作していないため

 

発生条件

事例では以下のステップから呼び出されたロボットを実行中に、RoboServer(RS)とDesktop Automation Service(DAS)との通信が切断された場合に発生することが報告されています。

・ロボットを呼び出す(Call Robot)ステップの「エラーとしてログに記録」が有効になっている

対処方法

「エラーとしてログに記録」を無効に設定し、エクスプレッションにてRobot.executionErrorsを利用することで本来発生していたエラーメッセージを出力する
 <参考記事>エクスプレッションで使用できる記法と関数

本不具合の原因はエラーメッセージの出力処理にあり、不具合発生時には内部エラーが発生してしまうため、本来発生しているエラーの内容が確認できない状態になっています。
そのため、下記イメージのような設定にて内部エラーが発生しないように対処し、本来発生しているエラーの内容を確認してください。

〇設定イメージ

figure1.png