From d7844021227e36fc9c254142d12778f1dcb87dc3 Mon Sep 17 00:00:00 2001 From: Aaron Walsman Date: Fri, 2 Dec 2022 18:52:04 -0800 Subject: [PATCH] checking succcess before splitting result into obs, reward, terminal, truncted, info in order to avoid an immediate exception and wait for _raise_if_errors to handle the errors properly --- gymnasium/vector/async_vector_env.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gymnasium/vector/async_vector_env.py b/gymnasium/vector/async_vector_env.py index d6cab15ef..0ea7c5056 100644 --- a/gymnasium/vector/async_vector_env.py +++ b/gymnasium/vector/async_vector_env.py @@ -318,14 +318,15 @@ def step_wait( successes = [] for i, pipe in enumerate(self.parent_pipes): result, success = pipe.recv() - obs, rew, terminated, truncated, info = result - successes.append(success) - observations_list.append(obs) - rewards.append(rew) - terminateds.append(terminated) - truncateds.append(truncated) - infos = self._add_info(infos, info, i) + if success: + obs, rew, terminated, truncated, info = result + + observations_list.append(obs) + rewards.append(rew) + terminateds.append(terminated) + truncateds.append(truncated) + infos = self._add_info(infos, info, i) self._raise_if_errors(successes) self._state = AsyncState.DEFAULT