Hi folks,

It's been about a year since Streamlio joined Splunk and since then
we've had a bit of forking with our BK branch.
It has gotten to a stage where it's starting to be a problem for us,
so we'd like to start to get things back in sync.

There are a couple of big chunks of work to come back.
We've added a data integrity checker that replaces a lot of the
functionality of autorecovery and allows us to run without a journal.
We refactored the bookie to allow dependency injection.
We've rewritten the entry logger to use direct I/O (allowing 2GBps
writes per bookie).

One other thing we've done is to change the build system to use gradle.
The major driver for this was that maven is just slow, even before you
start running tests.
"mvn clean package -DskipTests" takes 4m30 on my laptop. "./gradlew
clean jar" takes 40s.
Subsequent builds on gradle are much much faster, as it does
incremental building.
Incremental building exists in maven, but it doesn't work.
Gradle also handle multimodule projects better. If I make a change in
bookkeeper-common,
"./gradlew :bookkeeper-server:test" will pick up the change without
having to explicitly
"mvn install" the bookkeeper-common. In my opinion it's just a much
nicer build system
to work with. Even the poms it generates are better as they avoid
dependency pollution.

What are peoples opinions on moving BookKeeper to gradle (assuming
I/splunk do the legwork)?
If people are open to it, I'll submit a BP.

Another thing that BK (and the whole ecosystem) is missing is
structured logging.
We also plan to add structured logging to BK in soon. This is a major
motivator for converging the branches,
as it touches a lot of places.

Anyhow, any feedback appreciated.

-Ivan

Reply via email to