Skip to content

Commit bcb1b41

Browse files
fix
1 parent a5a7732 commit bcb1b41

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/funkier/fd_funkier_rec.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,8 @@ fd_funkier_rec_publish( fd_funkier_rec_prepare_t * prepare ) {
258258

259259
/* We need to hold the pool lock whilst inserting and removing from the map, to make the updates
260260
to the prev_idx/next_idx pointers atomic. */
261-
fd_funkier_rec_pool_lock( &rec_pool, 1 );
262261
fd_rwlock_write(&_pool_lock);
262+
fd_funkier_rec_pool_lock( &rec_pool, 1 );
263263
rec->prev_idx = rec_prev_idx;
264264
if( fd_funkier_rec_idx_is_null( rec_prev_idx ) ) {
265265
*rec_head_idx = rec_idx;
@@ -270,8 +270,8 @@ fd_funkier_rec_publish( fd_funkier_rec_prepare_t * prepare ) {
270270
if( fd_funkier_rec_map_insert( &rec_map, rec, FD_MAP_FLAG_BLOCKING ) ) {
271271
FD_LOG_CRIT(( "fd_funkier_rec_map_insert failed" ));
272272
}
273-
fd_rwlock_unwrite(&_pool_lock);
274273
fd_funkier_rec_pool_unlock( &rec_pool );
274+
fd_rwlock_unwrite(&_pool_lock);
275275
}
276276

277277
void
@@ -343,17 +343,17 @@ fd_funkier_rec_hard_remove( fd_funkier_t * funk,
343343
}
344344
fd_funkier_rec_key_copy( pair->key, key );
345345

346-
fd_funkier_rec_pool_lock( &rec_pool, 1 );
347346
fd_rwlock_write(&_pool_lock);
347+
fd_funkier_rec_pool_lock( &rec_pool, 1 );
348348

349349
fd_funkier_rec_t * rec = NULL;
350350
for(;;) {
351351
fd_funkier_rec_map_query_t rec_query[1];
352352
int err = fd_funkier_rec_map_remove( &rec_map, pair, NULL, rec_query, FD_MAP_FLAG_BLOCKING );
353353
if( FD_UNLIKELY( err == FD_MAP_ERR_AGAIN ) ) continue;
354354
if( err == FD_MAP_ERR_KEY ) {
355-
fd_rwlock_unwrite(&_pool_lock);
356355
fd_funkier_rec_pool_unlock( &rec_pool );
356+
fd_rwlock_unwrite(&_pool_lock);
357357
return;
358358
}
359359
if( FD_UNLIKELY( err != FD_MAP_SUCCESS ) ) FD_LOG_CRIT(( "map corruption" ));
@@ -374,8 +374,8 @@ fd_funkier_rec_hard_remove( fd_funkier_t * funk,
374374
if( fd_funkier_rec_idx_is_null( next_idx ) ) txn->rec_tail_idx = prev_idx;
375375
else rec_pool.ele[ next_idx ].prev_idx = prev_idx;
376376
}
377-
fd_rwlock_unwrite(&_pool_lock);
378377
fd_funkier_rec_pool_unlock( &rec_pool );
378+
fd_rwlock_unwrite(&_pool_lock);
379379

380380
fd_funkier_val_flush( rec, alloc, wksp );
381381
fd_rwlock_write(&_pool_lock);

0 commit comments

Comments
 (0)