発生バージョン・改修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)
〇エラー例
原因
ロボット内で発生したエラーを出力する処理が想定通りに動作していないため
発生条件
事例では以下のステップから呼び出されたロボットを実行中に、RoboServer(RS)とDesktop Automation Service(DAS)との通信が切断された場合に発生することが報告されています。
・ロボットを呼び出す(Call Robot)ステップの「エラーとしてログに記録」が有効になっている
対処方法
「エラーとしてログに記録」を無効に設定し、エクスプレッションにてRobot.executionErrorsを利用することで本来発生していたエラーメッセージを出力する
<参考記事>エクスプレッションで使用できる記法と関数
本不具合の原因はエラーメッセージの出力処理にあり、不具合発生時には内部エラーが発生してしまうため、本来発生しているエラーの内容が確認できない状態になっています。
そのため、下記イメージのような設定にて内部エラーが発生しないように対処し、本来発生しているエラーの内容を確認してください。
〇設定イメージ