PragmaTwice commented on code in PR #2296:
URL: https://github.com/apache/kvrocks/pull/2296#discussion_r1593815534


##########
src/storage/storage.h:
##########
@@ -122,6 +104,92 @@ struct DBStats {
   alignas(CACHE_LINE_SIZE) std::atomic<uint_fast64_t> keyspace_misses = 0;
 };
 
+enum ColumnFamilyID {
+  kColumnFamilyIDDefault = 0,
+  kColumnFamilyIDMetadata,
+  kColumnFamilyIDZSetScore,
+  kColumnFamilyIDPubSub,
+  kColumnFamilyIDPropagate,
+  kColumnFamilyIDStream,
+  kColumnFamilyIDSearch,
+};
+
+class ColumnFamilyConfig {
+ public:
+  ColumnFamilyConfig(ColumnFamilyID id, std::string_view name, bool is_minor)
+      : id_(id), name_(name), is_minor_(is_minor) {}
+  ColumnFamilyID id() const { return id_; }
+  std::string_view name() const { return name_; }
+  bool is_minor() const { return is_minor_; }
+
+ private:
+  ColumnFamilyID id_;
+  std::string_view name_;
+  bool is_minor_;
+};
+
+constexpr const std::string_view kSubkeyColumnFamilyName = "default";
+constexpr const std::string_view kMetadataColumnFamilyName = "metadata";
+constexpr const std::string_view kZSetScoreColumnFamilyName = "zset_score";
+constexpr const std::string_view kPubSubColumnFamilyName = "pubsub";
+constexpr const std::string_view kPropagateColumnFamilyName = "propagate";
+constexpr const std::string_view kStreamColumnFamilyName = "stream";
+constexpr const std::string_view kSearchColumnFamilyName = "search";
+
+class ColumnFamilyConfigs {
+ public:
+  /// DefaultSubkeyColumnFamily is the default column family in rocksdb.
+  /// In kvrocks, we use it to store the data if metadata is not enough.
+  static const ColumnFamilyConfig &DefaultSubkeyColumnFamily() {
+    static ColumnFamilyConfig subkey_cf(kColumnFamilyIDDefault, 
kSubkeyColumnFamilyName, /*is_minor=*/false);
+    return subkey_cf;
+  }
+
+  /// MetadataColumnFamily stores the metadata of data-structures.
+  static const ColumnFamilyConfig &MetadataColumnFamily() {
+    static ColumnFamilyConfig metadata_cf(kColumnFamilyIDMetadata, 
kMetadataColumnFamilyName, /*is_minor=*/false);

Review Comment:
   static local variable will lead to a lock.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to