@@ -24,7 +24,6 @@ use sui_json_rpc_types::{
24
24
SuiTransactionBlockEffectsAPI , SuiTransactionBlockResponseOptions ,
25
25
} ;
26
26
use sui_sdk:: { SuiClient , SuiClientBuilder } ;
27
- use sui_types:: effects:: { TransactionEffectsAPI , TransactionEvents } ;
28
27
use sui_types:: gas:: GasCostSummary ;
29
28
use sui_types:: programmable_transaction_builder:: ProgrammableTransactionBuilder ;
30
29
use sui_types:: quorum_driver_types:: EffectsFinalityInfo ;
@@ -45,6 +44,10 @@ use sui_types::{
45
44
base_types:: { AuthorityName , SuiAddress } ,
46
45
sui_system_state:: SuiSystemStateTrait ,
47
46
} ;
47
+ use sui_types:: {
48
+ effects:: { TransactionEffectsAPI , TransactionEvents } ,
49
+ execution_status:: ExecutionFailureStatus ,
50
+ } ;
48
51
use tokio:: time:: sleep;
49
52
use tracing:: { info, warn} ;
50
53
@@ -152,6 +155,28 @@ impl ExecutionEffects {
152
155
}
153
156
}
154
157
158
+ pub fn is_cancelled ( & self ) -> bool {
159
+ match self {
160
+ ExecutionEffects :: FinalizedTransactionEffects ( effects, ..) => {
161
+ match effects. data ( ) . status ( ) {
162
+ sui_types:: execution_status:: ExecutionStatus :: Success => false ,
163
+ sui_types:: execution_status:: ExecutionStatus :: Failure {
164
+ error :
165
+ ExecutionFailureStatus :: ExecutionCancelledDueToSharedObjectCongestion {
166
+ ..
167
+ } ,
168
+ ..
169
+ } => true ,
170
+ _ => false ,
171
+ }
172
+ }
173
+ ExecutionEffects :: SuiTransactionBlockEffects ( sui_tx_effects) => {
174
+ let status = format ! ( "{}" , sui_tx_effects. status( ) ) ;
175
+ status. contains ( "ExecutionCancelledDueToSharedObjectCongestion" )
176
+ }
177
+ }
178
+ }
179
+
155
180
pub fn status ( & self ) -> String {
156
181
match self {
157
182
ExecutionEffects :: FinalizedTransactionEffects ( effects, ..) => {
0 commit comments