@@ -146,29 +146,40 @@ pub fn update_hord_db_and_augment_bitcoin_block(
146
146
let ( traversal_tx, traversal_rx) = channel :: < ( TransactionIdentifier , _ ) > ( ) ;
147
147
let traversal_data_pool = ThreadPool :: new ( 10 ) ;
148
148
149
+ let mut rng = thread_rng ( ) ;
150
+ transactions_ids. shuffle ( & mut rng) ;
151
+
149
152
for transaction_id in transactions_ids. into_iter ( ) {
150
153
let moved_traversal_tx = traversal_tx. clone ( ) ;
151
154
let moved_ctx = ctx. clone ( ) ;
152
155
let block_identifier = new_block. block_identifier . clone ( ) ;
153
156
let moved_hord_db_path = hord_db_path. clone ( ) ;
154
- traversal_data_pool. execute ( move || {
155
- if let Ok ( blocks_db) = open_readonly_hord_db_conn_rocks_db ( & moved_hord_db_path, & moved_ctx) {
156
- let traversal = retrieve_satoshi_point_using_local_storage (
157
- & blocks_db,
158
- & block_identifier,
159
- & transaction_id,
160
- 0 ,
161
- & moved_ctx,
162
- ) ;
163
- let _ = moved_traversal_tx. send ( ( transaction_id, traversal) ) ;
157
+ traversal_data_pool. execute ( move || loop {
158
+ match open_readonly_hord_db_conn_rocks_db ( & moved_hord_db_path, & moved_ctx) {
159
+ Ok ( blocks_db) => {
160
+ let traversal = retrieve_satoshi_point_using_local_storage (
161
+ & blocks_db,
162
+ & block_identifier,
163
+ & transaction_id,
164
+ 0 ,
165
+ & moved_ctx,
166
+ ) ;
167
+ let _ = moved_traversal_tx. send ( ( transaction_id, traversal) ) ;
168
+ break ;
169
+ }
170
+ Err ( e) => {
171
+ moved_ctx. try_log ( |logger| {
172
+ slog:: error!( logger, "unable to open rocksdb: {e}" , ) ;
173
+ } ) ;
174
+ }
164
175
}
165
176
} ) ;
166
177
}
167
178
168
179
let mut traversals_received = 0 ;
169
180
while let Ok ( ( transaction_identifier, traversal_result) ) = traversal_rx. recv ( ) {
170
181
traversals_received += 1 ;
171
- let ( traversal, _ ) = traversal_result?;
182
+ let traversal = traversal_result?;
172
183
traversals. insert ( transaction_identifier, traversal) ;
173
184
if traversals_received == expected_traversals {
174
185
break ;
0 commit comments