Skip to content

Commit 142b18d

Browse files
exabytes18facebook-github-bot
authored andcommitted
C-API: Support multi-CF flush (#11112)
Summary: This PR adds support to the c-api bindings for calling `Flush()` with multiple column families, which is useful for performing atomic flushes (assuming also that the db has been opened with `atomic_flush = true`). Pull Request resolved: #11112 Reviewed By: cbi42 Differential Revision: D42666382 Pulled By: ajkr fbshipit-source-id: 82f05bf32d28452d85c79ea42411c8fea961fd87
1 parent fcd816d commit 142b18d

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

db/c.cc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,6 +1805,17 @@ void rocksdb_flush_cf(rocksdb_t* db, const rocksdb_flushoptions_t* options,
18051805
SaveError(errptr, db->rep->Flush(options->rep, column_family->rep));
18061806
}
18071807

1808+
void rocksdb_flush_cfs(rocksdb_t* db, const rocksdb_flushoptions_t* options,
1809+
rocksdb_column_family_handle_t** column_families,
1810+
int num_column_families, char** errptr) {
1811+
std::vector<ColumnFamilyHandle*> column_family_handles;
1812+
for (int i = 0; i < num_column_families; i++) {
1813+
column_family_handles.push_back(column_families[i]->rep);
1814+
}
1815+
1816+
SaveError(errptr, db->rep->Flush(options->rep, column_family_handles));
1817+
}
1818+
18081819
void rocksdb_flush_wal(rocksdb_t* db, unsigned char sync, char** errptr) {
18091820
SaveError(errptr, db->rep->FlushWAL(sync));
18101821
}
@@ -6109,6 +6120,18 @@ void rocksdb_transactiondb_flush_cf(
61096120
SaveError(errptr, txn_db->rep->Flush(options->rep, column_family->rep));
61106121
}
61116122

6123+
void rocksdb_transactiondb_flush_cfs(
6124+
rocksdb_transactiondb_t* txn_db, const rocksdb_flushoptions_t* options,
6125+
rocksdb_column_family_handle_t** column_families, int num_column_families,
6126+
char** errptr) {
6127+
std::vector<ColumnFamilyHandle*> column_family_handles;
6128+
for (int i = 0; i < num_column_families; i++) {
6129+
column_family_handles.push_back(column_families[i]->rep);
6130+
}
6131+
6132+
SaveError(errptr, txn_db->rep->Flush(options->rep, column_family_handles));
6133+
}
6134+
61126135
rocksdb_checkpoint_t* rocksdb_transactiondb_checkpoint_object_create(
61136136
rocksdb_transactiondb_t* txn_db, char** errptr) {
61146137
Checkpoint* checkpoint;

include/rocksdb/c.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,11 @@ extern ROCKSDB_LIBRARY_API void rocksdb_flush_cf(
662662
rocksdb_t* db, const rocksdb_flushoptions_t* options,
663663
rocksdb_column_family_handle_t* column_family, char** errptr);
664664

665+
extern ROCKSDB_LIBRARY_API void rocksdb_flush_cfs(
666+
rocksdb_t* db, const rocksdb_flushoptions_t* options,
667+
rocksdb_column_family_handle_t** column_family, int num_column_families,
668+
char** errptr);
669+
665670
extern ROCKSDB_LIBRARY_API void rocksdb_flush_wal(rocksdb_t* db,
666671
unsigned char sync,
667672
char** errptr);
@@ -2622,6 +2627,11 @@ extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_flush_cf(
26222627
rocksdb_transactiondb_t* txn_db, const rocksdb_flushoptions_t* options,
26232628
rocksdb_column_family_handle_t* column_family, char** errptr);
26242629

2630+
extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_flush_cfs(
2631+
rocksdb_transactiondb_t* txn_db, const rocksdb_flushoptions_t* options,
2632+
rocksdb_column_family_handle_t** column_families, int num_column_families,
2633+
char** errptr);
2634+
26252635
extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_flush_wal(
26262636
rocksdb_transactiondb_t* txn_db, unsigned char sync, char** errptr);
26272637

0 commit comments

Comments
 (0)