@@ -586,22 +586,7 @@ impl<K, V> DBMap<K, V> {
586
586
let from_buf = be_fix_int_ser ( start) ?;
587
587
let to_buf = be_fix_int_ser ( end) ?;
588
588
self . rocksdb
589
- . compact_range_cf ( & self . cf ( ) , Some ( from_buf) , Some ( to_buf) ) ;
590
- Ok ( ( ) )
591
- }
592
-
593
- /// Compact a range of keys in a specific column family
594
- pub fn compact_range_raw (
595
- & self ,
596
- cf_name : & str ,
597
- start : Vec < u8 > ,
598
- end : Vec < u8 > ,
599
- ) -> Result < ( ) , TypedStoreError > {
600
- let cf = self
601
- . rocksdb
602
- . cf_handle ( cf_name)
603
- . expect ( "compact range: column family does not exist" ) ;
604
- self . rocksdb . compact_range_cf ( & cf, Some ( start) , Some ( end) ) ;
589
+ . compact_range_cf ( & self . cf ( ) ?, Some ( from_buf) , Some ( to_buf) ) ;
605
590
Ok ( ( ) )
606
591
}
607
592
@@ -614,37 +599,24 @@ impl<K, V> DBMap<K, V> {
614
599
let from_buf = be_fix_int_ser ( start) ?;
615
600
let to_buf = be_fix_int_ser ( end) ?;
616
601
self . rocksdb
617
- . compact_range_to_bottom ( & self . cf ( ) , Some ( from_buf) , Some ( to_buf) ) ;
602
+ . compact_range_to_bottom ( & self . cf ( ) ? , Some ( from_buf) , Some ( to_buf) ) ;
618
603
Ok ( ( ) )
619
604
}
620
605
621
606
/// Get the column family
622
- pub fn cf ( & self ) -> Arc < rocksdb:: BoundColumnFamily < ' _ > > {
623
- self . rocksdb . cf_handle ( & self . cf ) . unwrap_or_else ( || {
624
- // Force capture backtrace regardless of RUST_BACKTRACE env var
625
- let backtrace = std:: backtrace:: Backtrace :: force_capture ( ) ;
626
- eprintln ! ( "PANIC: Column family '{}' not found!" , & self . cf) ;
627
- eprintln ! ( "Database path: {:?}" , & self . rocksdb. db_path) ;
628
- eprintln ! ( "Full backtrace:\n {}" , backtrace) ;
629
- panic ! (
630
- "Map-keying column family {} should have been checked at DB creation" ,
631
- & self . cf
632
- )
633
- } )
607
+ pub fn cf ( & self ) -> Result < Arc < rocksdb:: BoundColumnFamily < ' _ > > , TypedStoreError > {
608
+ self . rocksdb
609
+ . cf_handle ( & self . cf )
610
+ . ok_or_else ( || TypedStoreError :: UnregisteredColumn ( self . cf . clone ( ) ) )
634
611
}
635
612
636
613
/// Flush the column family
637
614
pub fn flush ( & self ) -> Result < ( ) , TypedStoreError > {
638
615
self . rocksdb
639
- . flush_cf ( & self . cf ( ) )
616
+ . flush_cf ( & self . cf ( ) ? )
640
617
. map_err ( |e| TypedStoreError :: RocksDBError ( e. into_string ( ) ) )
641
618
}
642
619
643
- /// Set the options for the column family
644
- pub fn set_options ( & self , opts : & [ ( & str , & str ) ] ) -> Result < ( ) , rocksdb:: Error > {
645
- self . rocksdb . set_options_cf ( & self . cf ( ) , opts)
646
- }
647
-
648
620
fn get_int_property (
649
621
rocksdb : & RocksDB ,
650
622
cf : & impl AsColumnFamilyRef ,
@@ -686,7 +658,7 @@ impl<K, V> DBMap<K, V> {
686
658
let results: Result < Vec < _ > , TypedStoreError > = self
687
659
. rocksdb
688
660
. batched_multi_get_cf_opt (
689
- & self . cf ( ) ,
661
+ & self . cf ( ) ? ,
690
662
keys_refs,
691
663
/*sorted_keys=*/ false ,
692
664
& self . opts . readopts ( ) ,
@@ -940,7 +912,7 @@ impl<K, V> DBMap<K, V> {
940
912
. expect ( "the function parameters are valid" ) ;
941
913
let mut value_hist = hdrhistogram:: Histogram :: < u64 > :: new_with_max ( 100000 , 2 )
942
914
. expect ( "the function parameters are valid" ) ;
943
- for item in self . safe_iter ( ) {
915
+ for item in self . safe_iter ( ) ? {
944
916
let ( key, value) = item?;
945
917
num_keys += 1 ;
946
918
let key_len = be_fix_int_ser ( key. borrow ( ) ) ?. len ( ) ;
@@ -1043,7 +1015,7 @@ impl<K, V> DBMap<K, V> {
1043
1015
. unwrap_or ( Bound :: Unbounded ) ,
1044
1016
) ) ;
1045
1017
1046
- let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) , readopts) ;
1018
+ let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) ? , readopts) ;
1047
1019
let ( _timer, bytes_scanned, keys_scanned, _perf_ctx) = self . create_iter_context ( ) ;
1048
1020
let iter = SafeIter :: new (
1049
1021
self . cf . clone ( ) ,
@@ -1270,7 +1242,7 @@ impl DBBatch {
1270
1242
. into_iter ( )
1271
1243
. try_for_each :: < _ , Result < _ , TypedStoreError > > ( |k| {
1272
1244
let k_buf = be_fix_int_ser ( k. borrow ( ) ) ?;
1273
- self . batch . delete_cf ( & db. cf ( ) , k_buf) ;
1245
+ self . batch . delete_cf ( & db. cf ( ) ? , k_buf) ;
1274
1246
1275
1247
Ok ( ( ) )
1276
1248
} ) ?;
@@ -1299,7 +1271,7 @@ impl DBBatch {
1299
1271
let from_buf = be_fix_int_ser ( from) ?;
1300
1272
let to_buf = be_fix_int_ser ( to) ?;
1301
1273
1302
- self . batch . delete_range_cf ( & db. cf ( ) , from_buf, to_buf) ;
1274
+ self . batch . delete_range_cf ( & db. cf ( ) ? , from_buf, to_buf) ;
1303
1275
Ok ( ( ) )
1304
1276
}
1305
1277
@@ -1319,7 +1291,7 @@ impl DBBatch {
1319
1291
let k_buf = be_fix_int_ser ( k. borrow ( ) ) ?;
1320
1292
let v_buf = bcs:: to_bytes ( v. borrow ( ) ) . map_err ( typed_store_err_from_bcs_err) ?;
1321
1293
total += k_buf. len ( ) + v_buf. len ( ) ;
1322
- self . batch . put_cf ( & db. cf ( ) , k_buf, v_buf) ;
1294
+ self . batch . put_cf ( & db. cf ( ) ? , k_buf, v_buf) ;
1323
1295
Ok ( ( ) )
1324
1296
} ) ?;
1325
1297
self . db_metrics
@@ -1343,7 +1315,7 @@ impl DBBatch {
1343
1315
. into_iter ( )
1344
1316
. try_for_each :: < _ , Result < _ , TypedStoreError > > ( |( k, v) | {
1345
1317
let k_buf = be_fix_int_ser ( k. borrow ( ) ) ?;
1346
- self . batch . merge_cf ( & db. cf ( ) , k_buf, v) ;
1318
+ self . batch . merge_cf ( & db. cf ( ) ? , k_buf, v) ;
1347
1319
Ok ( ( ) )
1348
1320
} ) ?;
1349
1321
Ok ( self )
@@ -1370,10 +1342,10 @@ where
1370
1342
let readopts = self . opts . readopts ( ) ;
1371
1343
Ok ( self
1372
1344
. rocksdb
1373
- . key_may_exist_cf ( & self . cf ( ) , & key_buf, & readopts)
1345
+ . key_may_exist_cf ( & self . cf ( ) ? , & key_buf, & readopts)
1374
1346
&& self
1375
1347
. rocksdb
1376
- . get_pinned_cf_opt ( & self . cf ( ) , & key_buf, & readopts)
1348
+ . get_pinned_cf_opt ( & self . cf ( ) ? , & key_buf, & readopts)
1377
1349
. map_err ( typed_store_err_from_rocks_err) ?
1378
1350
. is_some ( ) )
1379
1351
}
@@ -1406,7 +1378,7 @@ where
1406
1378
let key_buf = be_fix_int_ser ( key) ?;
1407
1379
let res = self
1408
1380
. rocksdb
1409
- . get_pinned_cf_opt ( & self . cf ( ) , & key_buf, & self . opts . readopts ( ) )
1381
+ . get_pinned_cf_opt ( & self . cf ( ) ? , & key_buf, & self . opts . readopts ( ) )
1410
1382
. map_err ( typed_store_err_from_rocks_err) ?;
1411
1383
self . db_metrics
1412
1384
. op_metrics
@@ -1452,7 +1424,7 @@ where
1452
1424
. report_metrics ( & self . cf ) ;
1453
1425
}
1454
1426
self . rocksdb
1455
- . put_cf ( & self . cf ( ) , & key_buf, & value_buf, & self . opts . writeopts ( ) )
1427
+ . put_cf ( & self . cf ( ) ? , & key_buf, & value_buf, & self . opts . writeopts ( ) )
1456
1428
. map_err ( typed_store_err_from_rocks_err) ?;
1457
1429
1458
1430
let elapsed = timer. stop_and_record ( ) ;
@@ -1488,7 +1460,7 @@ where
1488
1460
} ;
1489
1461
let key_buf = be_fix_int_ser ( key) ?;
1490
1462
self . rocksdb
1491
- . delete_cf ( & self . cf ( ) , key_buf, & self . opts . writeopts ( ) )
1463
+ . delete_cf ( & self . cf ( ) ? , key_buf, & self . opts . writeopts ( ) )
1492
1464
. map_err ( typed_store_err_from_rocks_err) ?;
1493
1465
self . db_metrics
1494
1466
. op_metrics
@@ -1526,7 +1498,7 @@ where
1526
1498
/// overridden in the config), so please use this function with caution
1527
1499
#[ tracing:: instrument( level = "trace" , skip_all, err) ]
1528
1500
fn schedule_delete_all ( & self ) -> Result < ( ) , TypedStoreError > {
1529
- let first_key = self . safe_iter ( ) . next ( ) . transpose ( ) ?. map ( |( k, _v) | k) ;
1501
+ let first_key = self . safe_iter ( ) ? . next ( ) . transpose ( ) ?. map ( |( k, _v) | k) ;
1530
1502
let last_key = self
1531
1503
. reversed_safe_iter_with_bounds ( None , None ) ?
1532
1504
. next ( )
@@ -1541,57 +1513,63 @@ where
1541
1513
}
1542
1514
1543
1515
fn is_empty ( & self ) -> bool {
1544
- self . safe_iter ( ) . next ( ) . is_none ( )
1516
+ self . safe_iter ( )
1517
+ . expect ( "safe_iter should not fail" )
1518
+ . next ( )
1519
+ . is_none ( )
1545
1520
}
1546
1521
1547
- fn safe_iter ( & ' a self ) -> Self :: SafeIterator {
1522
+ fn safe_iter ( & ' a self ) -> Result < Self :: SafeIterator , TypedStoreError > {
1548
1523
let db_iter = self
1549
1524
. rocksdb
1550
- . raw_iterator_cf ( & self . cf ( ) , self . opts . readopts ( ) ) ;
1525
+ . raw_iterator_cf ( & self . cf ( ) ? , self . opts . readopts ( ) ) ;
1551
1526
let ( _timer, bytes_scanned, keys_scanned, _perf_ctx) = self . create_iter_context ( ) ;
1552
- SafeIter :: new (
1527
+ Ok ( SafeIter :: new (
1553
1528
self . cf . clone ( ) ,
1554
1529
db_iter,
1555
1530
_timer,
1556
1531
_perf_ctx,
1557
1532
bytes_scanned,
1558
1533
keys_scanned,
1559
1534
Some ( self . db_metrics . clone ( ) ) ,
1560
- )
1535
+ ) )
1561
1536
}
1562
1537
1563
1538
fn safe_iter_with_bounds (
1564
1539
& ' a self ,
1565
1540
lower_bound : Option < K > ,
1566
1541
upper_bound : Option < K > ,
1567
- ) -> Self :: SafeIterator {
1542
+ ) -> Result < Self :: SafeIterator , TypedStoreError > {
1568
1543
let readopts = self . create_read_options_with_bounds ( lower_bound, upper_bound) ;
1569
- let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) , readopts) ;
1544
+ let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) ? , readopts) ;
1570
1545
let ( _timer, bytes_scanned, keys_scanned, _perf_ctx) = self . create_iter_context ( ) ;
1571
- SafeIter :: new (
1546
+ Ok ( SafeIter :: new (
1572
1547
self . cf . clone ( ) ,
1573
1548
db_iter,
1574
1549
_timer,
1575
1550
_perf_ctx,
1576
1551
bytes_scanned,
1577
1552
keys_scanned,
1578
1553
Some ( self . db_metrics . clone ( ) ) ,
1579
- )
1554
+ ) )
1580
1555
}
1581
1556
1582
- fn safe_range_iter ( & ' a self , range : impl RangeBounds < K > ) -> Self :: SafeIterator {
1557
+ fn safe_range_iter (
1558
+ & ' a self ,
1559
+ range : impl RangeBounds < K > ,
1560
+ ) -> Result < Self :: SafeIterator , TypedStoreError > {
1583
1561
let readopts = self . create_read_options_with_range ( range) ;
1584
- let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) , readopts) ;
1562
+ let db_iter = self . rocksdb . raw_iterator_cf ( & self . cf ( ) ? , readopts) ;
1585
1563
let ( _timer, bytes_scanned, keys_scanned, _perf_ctx) = self . create_iter_context ( ) ;
1586
- SafeIter :: new (
1564
+ Ok ( SafeIter :: new (
1587
1565
self . cf . clone ( ) ,
1588
1566
db_iter,
1589
1567
_timer,
1590
1568
_perf_ctx,
1591
1569
bytes_scanned,
1592
1570
keys_scanned,
1593
1571
Some ( self . db_metrics . clone ( ) ) ,
1594
- )
1572
+ ) )
1595
1573
}
1596
1574
1597
1575
/// Returns a vector of values corresponding to the keys provided.
0 commit comments