diff options
author | Yu Zhang <yuzhangyu@fb.com> | 2023-05-30 19:32:00 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2023-05-30 19:32:00 -0700 |
commit | 56ca9e3106e05c0c031b179ecbb9cb0865fc22dd (patch) | |
tree | 4deb7bea9a77ce1fb514c5b6c3e75c41f027c21b /db/column_family.h | |
parent | 8848ec92dd782d3448b874c8f57b17be7a7457bc (diff) |
Logging timestamp size record in WAL and use it during recovery (#11471)
Summary:
Start logging the timestamp size record in WAL and use the record during recovery. Currently, user comparator cannot be different from what was used to create a column family, so the timestamp size record is just used to confirm it's consistent with the timestamp size the running user comparator indicates.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/11471
Test Plan:
```
make all check
./db_secondary_test
./db_wal_test --gtest_filter="*WithTimestamp*"
./repair_test --gtest_filter="*WithTimestamp*"
```
Reviewed By: ltamasi
Differential Revision: D46236769
Pulled By: jowlyzhang
fbshipit-source-id: f6c60b5c8defdb05021c63df302ccc0be1275ad0
Diffstat (limited to 'db/column_family.h')
-rw-r--r-- | db/column_family.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/db/column_family.h b/db/column_family.h index 9ec093010..5fe593a84 100644 --- a/db/column_family.h +++ b/db/column_family.h @@ -705,6 +705,16 @@ class ColumnFamilySet { Version* dummy_version, const ColumnFamilyOptions& options); + const std::unordered_map<uint32_t, size_t>& + GetRunningColumnFamiliesTimestampSize() const { + return running_ts_sz_; + } + + const std::unordered_map<uint32_t, size_t>& + GetColumnFamiliesTimestampSizeForRecord() const { + return ts_sz_for_record_; + } + iterator begin() { return iterator(dummy_cfd_->next_); } iterator end() { return iterator(dummy_cfd_); } @@ -730,6 +740,15 @@ class ColumnFamilySet { UnorderedMap<std::string, uint32_t> column_families_; UnorderedMap<uint32_t, ColumnFamilyData*> column_family_data_; + // Mutating / reading `running_ts_sz_` and `ts_sz_for_record_` follow + // the same requirements as `column_families_` and `column_family_data_`. + // Mapping from column family id to user-defined timestamp size for all + // running column families. + std::unordered_map<uint32_t, size_t> running_ts_sz_; + // Mapping from column family id to user-defined timestamp size for + // column families with non-zero user-defined timestamp size. + std::unordered_map<uint32_t, size_t> ts_sz_for_record_; + uint32_t max_column_family_; const FileOptions file_options_; |