33 ActionAttemptError ,
44 ActionAttempt ,
55 AbstractSeam as Seam ,
6+ ActionAttemptFailedException ,
67 ActionAttemptId ,
78)
89import time
@@ -87,7 +88,9 @@ def get(
8788 )
8889
8990 def poll_until_ready (
90- self , action_attempt : Union [ActionAttemptId , ActionAttempt ]
91+ self ,
92+ action_attempt : Union [ActionAttemptId , ActionAttempt ],
93+ should_raise : bool = True ,
9194 ) -> ActionAttempt :
9295 """
9396 Polls an action attempt until its status is 'success' or 'error'.
@@ -104,9 +107,22 @@ def poll_until_ready(
104107
105108 updated_action_attempt = None
106109 while (
107- updated_action_attempt is None
108- or updated_action_attempt .status == "pending"
110+ updated_action_attempt is None or updated_action_attempt .status == "pending"
109111 ):
110112 updated_action_attempt = self .get (action_attempt )
111113 time .sleep (0.25 )
114+
115+ if updated_action_attempt .status == "error" and should_raise :
116+ error_type = None
117+ error_message = None
118+ if updated_action_attempt .error is not None :
119+ error_type = updated_action_attempt .error .type
120+ error_message = updated_action_attempt .error .message
121+ raise ActionAttemptFailedException (
122+ action_attempt_id = updated_action_attempt .action_attempt_id ,
123+ action_type = updated_action_attempt .action_type ,
124+ error_type = error_type ,
125+ error_message = error_message ,
126+ )
127+
112128 return updated_action_attempt
0 commit comments