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 5959 L :: Target : Logger ,
6060{
6161 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+ }
6694 }
6795}
You can’t perform that action at this time.
0 commit comments