facebook / facebook/rocksdb

RFC: Pluggable WriteController

Offen
#3,271 21 Kommentare 0 Reaktionen 2 zugewiesene Personen Beansprucht von @siying Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
32.1k
Forks
6.9k
Ø Merge
32 Min.
Gemergte PRs (30 T.)
1

Beschreibung

I presented an alternate write throttle for slower class servers at the annual RocksDB Meetup December 4, 2017. The current implementation is completely external to RocksDB. During the Q&A session, I was asked how this could be better/cleanly integrated with RocksDB. My answer was to have the WriteController object pluggable, like the bloom filters and rate limiters. It was suggested that I post an RFC here first, then potentially submit a PR with said change and incorporating comments posted against the issue.

My suggested change is:

1. add a shared_ptr object to the Options structure where a user can supply a custom WriteController. This is a shared_ptr, not a unique_ptr, in case the user has multiple database instances that wish to share the same WriteController so as to have a "system-wide" view.

2. the shared_ptr from the Options structure is assigned to the DB_Impl object in place of the current WriteController member object. If the user does not supply a custom WriteController, an instance of the existing WriteController is automatically added.

3. write_controller.h moves to the include/rocksdb directory.

4. add "virtual" to most of the existing WriteController methods. This simplifies creating object derivatives.

5. optional: I have considered making some of the existing WriteController routines thread safe. They currently assume the caller holds the database mutex. This could be awkward if a derived instance is actually shared across multiple database instances. Otherwise, any user derived object will have to include the necessary protections.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.