File tree Expand file tree Collapse file tree 1 file changed +32
-4
lines changed Expand file tree Collapse file tree 1 file changed +32
-4
lines changed Original file line number Diff line number Diff line change 59
59
L :: Target : Logger ,
60
60
{
61
61
fn broadcast_transactions ( & self , txs : & [ & Transaction ] ) {
62
- let package = txs. iter ( ) . map ( |& t| t. clone ( ) ) . collect :: < Vec < Transaction > > ( ) ;
63
- self . queue_sender . try_send ( package) . unwrap_or_else ( |e| {
64
- log_error ! ( self . logger, "Failed to broadcast transactions: {}" , e) ;
65
- } ) ;
62
+ let mut package = txs. iter ( ) . map ( |& t| t. clone ( ) ) . collect :: < Vec < Transaction > > ( ) ;
63
+ let mut retries_left = 10 ;
64
+
65
+ loop {
66
+ match self . queue_sender . try_send ( package) {
67
+ Ok ( ( ) ) => {
68
+ break ;
69
+ }
70
+ Err ( mpsc:: error:: TrySendError :: Full ( pkg) ) => {
71
+ if retries_left > 0 {
72
+ log_debug ! (
73
+ self . logger,
74
+ "Failed to broadcast transactions due to full queue. Retrying."
75
+ ) ;
76
+ std:: thread:: sleep ( Duration :: from_millis ( 100 ) ) ;
77
+ package = pkg;
78
+ retries_left -= 1 ;
79
+ continue ;
80
+ } else {
81
+ log_error ! (
82
+ self . logger,
83
+ "Failed to broadcast transactions due to full queue. Aborting."
84
+ ) ;
85
+ break ;
86
+ }
87
+ }
88
+ Err ( e) => {
89
+ log_error ! ( self . logger, "Failed to broadcast transactions: {}" , e) ;
90
+ break ;
91
+ }
92
+ }
93
+ }
66
94
}
67
95
}
You can’t perform that action at this time.
0 commit comments