[ 
https://issues.apache.org/jira/browse/KAFKA-9148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias J. Sax resolved KAFKA-9148.
------------------------------------
    Resolution: Won't Fix

Don't think it's a good idea to folk RocksDB to begin with... Also this ticket 
is very old. Closing for now.

> Consider forking RocksDB for Streams 
> -------------------------------------
>
>                 Key: KAFKA-9148
>                 URL: https://issues.apache.org/jira/browse/KAFKA-9148
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: A. Sophie Blee-Goldman
>            Priority: Major
>
> We recently upgraded our RocksDB dependency to 5.18 for its memory-management 
> abilities (namely the WriteBufferManager, see KAFKA-8215). Unfortunately, 
> someone from Flink recently discovered a ~8% [performance 
> regression|https://github.com/facebook/rocksdb/issues/5774] that exists in 
> all versions 5.18+ (up through the current newest version, 6.2.2). Flink was 
> able to react to this by downgrading to 5.17 and [picking the 
> WriteBufferManage|https://github.com/dataArtisans/frocksdb/pull/4]r to their 
> fork (fRocksDB).
> Due to this and other reasons enumerated below, we should consider also 
> forking our own RocksDB for Streams.
> Pros:
>  * We can avoid passing sudden breaking changes on to our users, such removal 
> of methods with no deprecation period (see discussion on KAFKA-8897)
>  * We can pick whichever version has the best performance for our needs, and 
> pick over any new features, metrics, etc that we need to use rather than 
> being forced to upgrade (and breaking user code, introducing regression, etc)
>  * Support for some architectures does not exist in all RocksDB versions, 
> making Streams completely unusable for some users until we can upgrade the 
> rocksdb dependency to one that supports their specific case. It's worth 
> noting that we've only had [one 
> user|https://issues.apache.org/jira/browse/KAFKA-9225] hit this so far (that 
> we know of), and some workarounds have been discussed on the ticket.
>  * The Java API seems to be a very low priority to the rocksdb folks.
>  ** They leave out critical functionality, features, and configuration 
> options that have been in the c++ API for a very long time
>  ** Those that do make it over often have random gaps in the API such as 
> setters but no getters (see [rocksdb PR 
> #5186|https://github.com/facebook/rocksdb/pull/5186])
>  ** Others are poorly designed and require too many trips across the JNI, 
> making otherwise incredibly useful features prohibitively expensive.
>  *** [|#issuecomment-83145980] [Custom 
> Comparator|https://github.com/facebook/rocksdb/issues/538#issuecomment-83145980]:
>  a custom comparator could significantly improve the performance of session 
> windows. This is trivial to do but given the high performance cost of 
> crossing the jni, it is currently only practical to use a c++ comparator
>  *** [Prefix Seek|https://github.com/facebook/rocksdb/issues/6004]: not 
> currently used by Streams but a commonly requested feature, and may also 
> allow improved range queries
>  ** Even when an external contributor develops a solution for poorly 
> performing Java functionality and helpfully tries to contribute their patch 
> back to rocksdb, it gets ignored by the rocksdb people ([rocksdb PR 
> #2283|https://github.com/facebook/rocksdb/pull/2283])
> Cons:
>  * More work (not to be trivialized, the truth is we don't and can't know how 
> much extra work this will ultimately be)
> Given that we rarely upgrade the Rocks dependency, use only some fraction of 
> its features, and would need or want to make only minimal changes ourselves, 
> it seems like we could actually get away with very little extra work by 
> forking rocksdb. Note that as of this writing the frocksdb repo has only 
> needed to open 5 PRs on top of the actual rocksdb (two of them trivial). Of 
> course, the LOE to maintain this will only grow over time, so we should think 
> carefully about whether and when to start taking on this potential burden.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to