@@ -101,7 +101,7 @@ func (st *NaiveStrategy) UnrelayedPackets(src, dst *ProvableChain, sh SyncHeader
101101 now := time .Now ()
102102 srcPackets , err = src .QueryUnfinalizedRelayPackets (srcCtx , dst )
103103 if err != nil {
104- return err
104+ return fmt . Errorf ( "failed to query unfinalized relay packets on src chain: %w" , err )
105105 }
106106 logger .TimeTrack (now , "QueryUnfinalizedRelayPackets" , "queried_chain" , "src" , "num_packets" , len (srcPackets ))
107107 return nil
@@ -123,7 +123,7 @@ func (st *NaiveStrategy) UnrelayedPackets(src, dst *ProvableChain, sh SyncHeader
123123 now := time .Now ()
124124 dstPackets , err = dst .QueryUnfinalizedRelayPackets (dstCtx , src )
125125 if err != nil {
126- return err
126+ return fmt . Errorf ( "failed to query unfinalized relay packets on dst chain: %w" , err )
127127 }
128128 logger .TimeTrack (now , "QueryUnfinalizedRelayPackets" , "queried_chain" , "dst" , "num_packets" , len (dstPackets ))
129129 return nil
@@ -168,7 +168,7 @@ func (st *NaiveStrategy) UnrelayedPackets(src, dst *ProvableChain, sh SyncHeader
168168 now := time .Now ()
169169 seqs , err := dst .QueryUnreceivedPackets (dstCtx , srcPackets .ExtractSequenceList ())
170170 if err != nil {
171- return err
171+ return fmt . Errorf ( "failed to query unreceived packets on dst chain: %w" , err )
172172 }
173173 logger .TimeTrack (now , "QueryUnreceivedPackets" , "queried_chain" , "dst" , "num_seqs" , len (seqs ))
174174 srcPackets = srcPackets .Filter (seqs )
@@ -179,7 +179,7 @@ func (st *NaiveStrategy) UnrelayedPackets(src, dst *ProvableChain, sh SyncHeader
179179 now := time .Now ()
180180 seqs , err := src .QueryUnreceivedPackets (srcCtx , dstPackets .ExtractSequenceList ())
181181 if err != nil {
182- return err
182+ return fmt . Errorf ( "failed to query unreceived packets on src chain: %w" , err )
183183 }
184184 logger .TimeTrack (now , "QueryUnreceivedPackets" , "queried_chain" , "src" , "num_seqs" , len (seqs ))
185185 dstPackets = dstPackets .Filter (seqs )
@@ -199,7 +199,7 @@ func (st *NaiveStrategy) UnrelayedPackets(src, dst *ProvableChain, sh SyncHeader
199199 }, nil
200200}
201201
202- func (st * NaiveStrategy ) RelayPackets (src , dst * ProvableChain , rp * RelayPackets , sh SyncHeaders ) (* RelayMsgs , error ) {
202+ func (st * NaiveStrategy ) RelayPackets (src , dst * ProvableChain , rp * RelayPackets , sh SyncHeaders , doExecuteRelaySrc , doExecuteRelayDst bool ) (* RelayMsgs , error ) {
203203 logger := GetChannelPairLogger (src , dst )
204204 defer logger .TimeTrack (time .Now (), "RelayPackets" , "num_src" , len (rp .Src ), "num_dst" , len (rp .Dst ))
205205
@@ -225,21 +225,26 @@ func (st *NaiveStrategy) RelayPackets(src, dst *ProvableChain, rp *RelayPackets,
225225 return nil , err
226226 }
227227
228- msgs .Dst , err = collectPackets (srcCtx , src , rp .Src , dstAddress )
229- if err != nil {
230- logger .Error (
231- "error collecting packets" ,
232- err ,
233- )
234- return nil , err
228+ if doExecuteRelayDst {
229+ msgs .Dst , err = collectPackets (srcCtx , src , rp .Src , dstAddress )
230+ if err != nil {
231+ logger .Error (
232+ "error collecting packets" ,
233+ err ,
234+ )
235+ return nil , err
236+ }
235237 }
236- msgs .Src , err = collectPackets (dstCtx , dst , rp .Dst , srcAddress )
237- if err != nil {
238- logger .Error (
239- "error collecting packets" ,
240- err ,
241- )
242- return nil , err
238+
239+ if doExecuteRelaySrc {
240+ msgs .Src , err = collectPackets (dstCtx , dst , rp .Dst , srcAddress )
241+ if err != nil {
242+ logger .Error (
243+ "error collecting packets" ,
244+ err ,
245+ )
246+ return nil , err
247+ }
243248 }
244249
245250 if len (msgs .Dst ) == 0 && len (msgs .Src ) == 0 {
@@ -281,7 +286,7 @@ func (st *NaiveStrategy) UnrelayedAcknowledgements(src, dst *ProvableChain, sh S
281286 now := time .Now ()
282287 srcAcks , err = src .QueryUnfinalizedRelayAcknowledgements (srcCtx , dst )
283288 if err != nil {
284- return err
289+ return fmt . Errorf ( "failed to query unfinalized relay acknowledgements on src chain: %w" , err )
285290 }
286291 logger .TimeTrack (now , "QueryUnfinalizedRelayAcknowledgements" , "queried_chain" , "src" , "num_packets" , len (srcAcks ))
287292 return nil
@@ -306,7 +311,7 @@ func (st *NaiveStrategy) UnrelayedAcknowledgements(src, dst *ProvableChain, sh S
306311 now := time .Now ()
307312 dstAcks , err = dst .QueryUnfinalizedRelayAcknowledgements (dstCtx , src )
308313 if err != nil {
309- return err
314+ return fmt . Errorf ( "failed to query unfinalized relay acknowledgements on dst chain: %w" , err )
310315 }
311316 logger .TimeTrack (now , "QueryUnfinalizedRelayAcknowledgements" , "queried_chain" , "dst" , "num_packets" , len (dstAcks ))
312317 return nil
@@ -350,7 +355,7 @@ func (st *NaiveStrategy) UnrelayedAcknowledgements(src, dst *ProvableChain, sh S
350355 now := time .Now ()
351356 seqs , err := dst .QueryUnreceivedAcknowledgements (dstCtx , srcAcks .ExtractSequenceList ())
352357 if err != nil {
353- return err
358+ return fmt . Errorf ( "failed to query unreceived acknowledgements on dst chain: %w" , err )
354359 }
355360 logger .TimeTrack (now , "QueryUnreceivedAcknowledgements" , "queried_chain" , "dst" , "num_seqs" , len (seqs ))
356361 srcAcks = srcAcks .Filter (seqs )
@@ -363,7 +368,7 @@ func (st *NaiveStrategy) UnrelayedAcknowledgements(src, dst *ProvableChain, sh S
363368 now := time .Now ()
364369 seqs , err := src .QueryUnreceivedAcknowledgements (srcCtx , dstAcks .ExtractSequenceList ())
365370 if err != nil {
366- return err
371+ return fmt . Errorf ( "failed to query unreceived acknowledgements on src chain: %w" , err )
367372 }
368373 logger .TimeTrack (now , "QueryUnreceivedAcknowledgements" , "queried_chain" , "src" , "num_seqs" , len (seqs ))
369374 dstAcks = dstAcks .Filter (seqs )
@@ -415,7 +420,7 @@ func logPacketsRelayed(src, dst Chain, num int, obj string, dir string) {
415420 )
416421}
417422
418- func (st * NaiveStrategy ) RelayAcknowledgements (src , dst * ProvableChain , rp * RelayPackets , sh SyncHeaders ) (* RelayMsgs , error ) {
423+ func (st * NaiveStrategy ) RelayAcknowledgements (src , dst * ProvableChain , rp * RelayPackets , sh SyncHeaders , doExecuteAckSrc , doExecuteAckDst bool ) (* RelayMsgs , error ) {
419424 logger := GetChannelPairLogger (src , dst )
420425 defer logger .TimeTrack (time .Now (), "RelayAcknowledgements" , "num_src" , len (rp .Src ), "num_dst" , len (rp .Dst ))
421426
@@ -440,13 +445,13 @@ func (st *NaiveStrategy) RelayAcknowledgements(src, dst *ProvableChain, rp *Rela
440445 return nil , err
441446 }
442447
443- if ! st .dstNoAck {
448+ if ! st .dstNoAck && doExecuteAckDst {
444449 msgs .Dst , err = collectAcks (srcCtx , src , rp .Src , dstAddress )
445450 if err != nil {
446451 return nil , err
447452 }
448453 }
449- if ! st .srcNoAck {
454+ if ! st .srcNoAck && doExecuteAckSrc {
450455 msgs .Src , err = collectAcks (dstCtx , dst , rp .Dst , srcAddress )
451456 if err != nil {
452457 return nil , err
@@ -490,16 +495,13 @@ func collectAcks(ctx QueryContext, chain *ProvableChain, packets PacketInfoList,
490495 return msgs , nil
491496}
492497
493- func (st * NaiveStrategy ) UpdateClients (src , dst * ProvableChain , rpForRecv , rpForAck * RelayPackets , sh SyncHeaders , doRefresh bool ) (* RelayMsgs , error ) {
498+ func (st * NaiveStrategy ) UpdateClients (src , dst * ProvableChain , doExecuteRelaySrc , doExecuteRelayDst , doExecuteAckSrc , doExecuteAckDst bool , sh SyncHeaders , doRefresh bool ) (* RelayMsgs , error ) {
494499 logger := GetChannelPairLogger (src , dst )
495500
496501 msgs := NewRelayMsgs ()
497502
498- // check if unrelayed packets or acks exist
499- needsUpdateForSrc := len (rpForRecv .Dst ) > 0 ||
500- ! st .srcNoAck && len (rpForAck .Dst ) > 0
501- needsUpdateForDst := len (rpForRecv .Src ) > 0 ||
502- ! st .dstNoAck && len (rpForAck .Src ) > 0
503+ needsUpdateForSrc := doExecuteRelaySrc || (doExecuteAckSrc && ! st .srcNoAck )
504+ needsUpdateForDst := doExecuteRelayDst || (doExecuteAckDst && ! st .dstNoAck )
503505
504506 // check if LC refresh is needed
505507 if ! needsUpdateForSrc && doRefresh {
0 commit comments