]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
compaction_filter.h cleanup
authorIgor Canadi <icanadi@fb.com>
Thu, 8 Oct 2015 16:32:50 +0000 (09:32 -0700)
committerIgor Canadi <icanadi@fb.com>
Thu, 8 Oct 2015 16:32:50 +0000 (09:32 -0700)
Summary:
Two changes:
1. remove *V2 filter stuff. we deprecated that a while ago
2. clarify what happens when user sets max_subcompactions to bigger than 1

Test Plan: none

Reviewers: yhchiang, sdong

Reviewed By: sdong

Subscribers: dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D47871

HISTORY.md
db/db_impl.h
include/rocksdb/compaction_filter.h
include/rocksdb/options.h

index 0cf2efc064f1500a0428532bcb7ddd0975edb1bc..f4d489b0c598ad97c7ad49ea62b29594d3782d49 100644 (file)
@@ -12,6 +12,7 @@
 * Added AddFile() to DB interface.
 * Added SstFileWriter class.
 * CompactionFilter has a new method FilterMergeOperand() that RocksDB applies to every merge operand during compaction to decide whether to filter the operand.
+* We removed CompactionFilterV2 interfaces from include/rocksdb/compaction_filter.h. The functionality was deprecated already in version 3.13.
 
 ## 4.0.0 (9/9/2015)
 ### New Features
index 3f2f97bf6c9c5913632c17ea6a1069e943aa0529..d7cc9db95c40b7c22eb9a2e7a1321e13cbe60237 100644 (file)
@@ -51,7 +51,6 @@ class TableCache;
 class Version;
 class VersionEdit;
 class VersionSet;
-class CompactionFilterV2;
 class Arena;
 class WriteCallback;
 struct JobContext;
index da809f5443a50c6d38fde08fd5aeab37708afa7a..698753c248b792632136ebbcba9a9bbcac78089c 100644 (file)
@@ -78,6 +78,10 @@ class CompactionFilter {
   // be used by a single thread that is doing the compaction run, and this
   // call does not need to be thread-safe.  However, multiple filters may be
   // in existence and operating concurrently.
+  //
+  // The last paragraph is not true if you set max_subcompactions to more than
+  // 1. In that case, subcompaction from multiple threads may call a single
+  // CompactionFilter concurrently.
   virtual bool Filter(int level,
                       const Slice& key,
                       const Slice& existing_value,
@@ -97,39 +101,6 @@ class CompactionFilter {
   virtual const char* Name() const = 0;
 };
 
-// CompactionFilterV2 that buffers kv pairs sharing the same prefix and let
-// application layer to make individual decisions for all the kv pairs in the
-// buffer.
-class CompactionFilterV2 {
- public:
-  virtual ~CompactionFilterV2() {}
-
-  // The compaction process invokes this method for all the kv pairs
-  // sharing the same prefix. It is a "roll-up" version of CompactionFilter.
-  //
-  // Each entry in the return vector indicates if the corresponding kv should
-  // be preserved in the output of this compaction run. The application can
-  // inspect the existing values of the keys and make decision based on it.
-  //
-  // When a value is to be preserved, the application has the option
-  // to modify the entry in existing_values and pass it back through an entry
-  // in new_values. A corresponding values_changed entry needs to be set to
-  // true in this case. Note that the new_values vector contains only changed
-  // values, i.e. new_values.size() <= values_changed.size().
-  //
-  typedef std::vector<Slice> SliceVector;
-  virtual std::vector<bool> Filter(int level,
-                                   const SliceVector& keys,
-                                   const SliceVector& existing_values,
-                                   std::vector<std::string>* new_values,
-                                   std::vector<bool>* values_changed)
-    const = 0;
-
-  // Returns a name that identifies this compaction filter.
-  // The name will be printed to LOG file on start up for diagnosis.
-  virtual const char* Name() const = 0;
-};
-
 // Each compaction will create a new CompactionFilter allowing the
 // application to know about different compactions
 class CompactionFilterFactory {
@@ -157,65 +128,6 @@ class DefaultCompactionFilterFactory : public CompactionFilterFactory {
   }
 };
 
-// Each compaction will create a new CompactionFilterV2
-//
-// CompactionFilterFactoryV2 enables application to specify a prefix and use
-// CompactionFilterV2 to filter kv-pairs in batches. Each batch contains all
-// the kv-pairs sharing the same prefix.
-//
-// This is useful for applications that require grouping kv-pairs in
-// compaction filter to make a purge/no-purge decision. For example, if the
-// key prefix is user id and the rest of key represents the type of value.
-// This batching filter will come in handy if the application's compaction
-// filter requires knowledge of all types of values for any user id.
-//
-class CompactionFilterFactoryV2 {
- public:
-  // NOTE: CompactionFilterFactoryV2 will not delete prefix_extractor
-  explicit CompactionFilterFactoryV2(const SliceTransform* prefix_extractor)
-    : prefix_extractor_(prefix_extractor) { }
-
-  virtual ~CompactionFilterFactoryV2() { }
-
-  virtual std::unique_ptr<CompactionFilterV2> CreateCompactionFilterV2(
-    const CompactionFilterContext& context) = 0;
-
-  // Returns a name that identifies this compaction filter factory.
-  virtual const char* Name() const = 0;
-
-  const SliceTransform* GetPrefixExtractor() const {
-    return prefix_extractor_;
-  }
-
-  void SetPrefixExtractor(const SliceTransform* prefix_extractor) {
-    prefix_extractor_ = prefix_extractor;
-  }
-
- private:
-  // Prefix extractor for compaction filter v2
-  // Keys sharing the same prefix will be buffered internally.
-  // Client can implement a Filter callback function to operate on the buffer
-  const SliceTransform* prefix_extractor_;
-};
-
-// Default implementation of CompactionFilterFactoryV2 which does not
-// return any filter
-class DefaultCompactionFilterFactoryV2 : public CompactionFilterFactoryV2 {
- public:
-  explicit DefaultCompactionFilterFactoryV2()
-      : CompactionFilterFactoryV2(nullptr) { }
-
-  virtual std::unique_ptr<CompactionFilterV2>
-  CreateCompactionFilterV2(
-      const CompactionFilterContext& context) override {
-    return std::unique_ptr<CompactionFilterV2>(nullptr);
-  }
-
-  virtual const char* Name() const override {
-    return "DefaultCompactionFilterFactoryV2";
-  }
-};
-
 }  // namespace rocksdb
 
 #endif  // STORAGE_ROCKSDB_INCLUDE_COMPACTION_FILTER_H_
index d4066cf20d734030003a04f438fbbe2c0472b056..16aa3782bdc27d88d1d815d9ffc64498e7013bcd 100644 (file)
@@ -30,7 +30,6 @@ namespace rocksdb {
 class Cache;
 class CompactionFilter;
 class CompactionFilterFactory;
-class CompactionFilterFactoryV2;
 class Comparator;
 class Env;
 enum InfoLogLevel : unsigned char;
@@ -226,10 +225,6 @@ struct ColumnFamilyOptions {
   // Default: nullptr
   std::shared_ptr<CompactionFilterFactory> compaction_filter_factory;
 
-  // This is deprecated. Talk to us if you depend on
-  // compaction_filter_factory_v2 and we'll put it back
-  // std::shared_ptr<CompactionFilterFactoryV2> compaction_filter_factory_v2;
-
   // -------------------
   // Parameters that affect performance