• M
    The ObjectRegistry class replaces the Registrar and NewCustomObjects.… (#5293) · cfcf045a
    Mark Rambacher 提交于
    Summary:
    The ObjectRegistry class replaces the Registrar and NewCustomObjects.  Objects are registered with the registry by Type (the class must implement the static const char *Type() method).
    
    This change is necessary for a few reasons:
    - By having a class (rather than static template instances), the class can be passed between compilation units, meaning that objects could be registered and shared from a dynamic library with an executable.
    - By having a class with instances, different units could have different objects registered.  This could be useful if, for example, one Option allowed for a dynamic library and one did not.
    
    When combined with some other PRs (being able to load shared libraries, a Configurable interface to configure objects to/from string), this code will allow objects in external shared libraries to be added to a RocksDB image at run-time, rather than requiring every new extension to be built into the main library and called explicitly by every program.
    
    Test plan (on riversand963's  devserver)
    ```
    $COMPILE_WITH_ASAN=1 make -j32 all && sleep 1 && make check
    ```
    All tests pass.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/5293
    
    Differential Revision: D16363396
    
    Pulled By: riversand963
    
    fbshipit-source-id: fbe4acb615bfc11103eef40a0b288845791c0180
    cfcf045a
可在Tags中查看这些版本中当前仓库的状态.
HISTORY.md 83.6 KB