Release Notes - Bookkeeper - Version 4.3.0

NOTE: After support protobuf in [BOOKKEEPER-582] in 4.3.0, a 4.3.0 client will not work with a 4.2.3 server, while a 4.3.0 server still keeps backward compatability with 4.2.3 clients. Please upgrade servers in prior to clients.

Sub-task


Bug

  • [BOOKKEEPER-313] - Bookkeeper shutdown call from Bookie thread is not shutting down server
  • [BOOKKEEPER-363] - Re-distributing topics among newly added hubs.
  • [BOOKKEEPER-446] - BookKeeper.createLedger(..) should not mask the error with ZKException
  • [BOOKKEEPER-544] - Modify hedwig server tests to allow client testcases to start/stop them as part of their tests
  • [BOOKKEEPER-548] - Document about periodic ledger checker configuration
  • [BOOKKEEPER-549] - Documentation missed for readOnlyMode support
  • [BOOKKEEPER-554] - fd leaking when move ledger index file
  • [BOOKKEEPER-556] - BookieServerMXBean#getServerState makes no sense
  • [BOOKKEEPER-557] - Compiler error showing up badly with jdk 7
  • [BOOKKEEPER-559] - Fix occasional failure in AuditorBookieTest
  • [BOOKKEEPER-561] - Findbugs reports errors with openjdk
  • [BOOKKEEPER-567] - ReadOnlyBookieTest hangs on shutdown
  • [BOOKKEEPER-568] - NPE during GC with HierarchicalLedgerManager
  • [BOOKKEEPER-569] - Critical performance bug in InterleavedLedgerStorage
  • [BOOKKEEPER-577] - BookieFailureTest uses sync/wait()/notify() incorrectly
  • [BOOKKEEPER-579] - TestSubAfterCloseSub was put in a wrong package
  • [BOOKKEEPER-580] - improve close logic
  • [BOOKKEEPER-581] - Ledger recovery doesn't work correctly when recovery adds force changing ensembles.
  • [BOOKKEEPER-583] - Read from a ReadOnlyBookie fails if index fileinfo is not in ledger cache
  • [BOOKKEEPER-584] - Data loss when ledger metadata is overwritten
  • [BOOKKEEPER-585] - Auditor logs noisily when a ledger has been deleted
  • [BOOKKEEPER-586] - Remove recursive call in delivery manager
  • [BOOKKEEPER-596] - Ledgers are gc'ed by mistake in MSLedgerManagerFactory.
  • [BOOKKEEPER-597] - Add flag to output test logs to stdout
  • [BOOKKEEPER-598] - Fails to compile - RESUBSCRIBE_EXCEPTION conflict
  • [BOOKKEEPER-599] - NPE in PerChannelBookieClient
  • [BOOKKEEPER-600] - shouldClaim flag isn't cleared for hedwig multiplex java client
  • [BOOKKEEPER-601] - readahead cache size isn't updated correctly
  • [BOOKKEEPER-602] - we should have request timeouts rather than channel timeout in PerChannelBookieClient
  • [BOOKKEEPER-603] - Support Boost 1.53 for Hedwig Cpp Client
  • [BOOKKEEPER-604] - Ledger storage can log an exception if GC happens concurrently.
  • [BOOKKEEPER-607] - Filtered Messages Require ACK from Client Causes User Being Throttled Incorrectly Forever
  • [BOOKKEEPER-610] - Make SyncThread use an executor
  • [BOOKKEEPER-617] - BOOKKEEPER-544 breaks hedwig-server/bin/hedwig script
  • [BOOKKEEPER-619] - Bookie should not create local cookie files if zookeeper is uninitialized
  • [BOOKKEEPER-620] - PerChannelBookieClient race during channel disconnect
  • [BOOKKEEPER-623] - LedgerChecker should avoid segments of closed ledger with higher start entryId than closed entry.
  • [BOOKKEEPER-624] - Reduce logs generated by ReplicationWorker
  • [BOOKKEEPER-626] - BOOKIE_EXTRA_OPTS are added twice
  • [BOOKKEEPER-632] - AutoRecovery should consider read only bookies
  • [BOOKKEEPER-633] - ConcurrentModificationException in RackawareEnsemblePlacementPolicy when a bookie is removed from available list
  • [BOOKKEEPER-635] - jenkins build should highlight which lines of the patch cause raw analysis errors
  • [BOOKKEEPER-636] - Latest txn logs might be deleted in a race condition which is not recoverable if BK goes down before next txn log created.
  • [BOOKKEEPER-638] - Two bookies could start at the same time to access bookie data.
  • [BOOKKEEPER-641] - DeathWatcher thread is unnecessarily running even after bookie shutdown
  • [BOOKKEEPER-642] - Bookie returns incorrect exitcode, ExitCode.ZK_REG_FAIL is getting overridden
  • [BOOKKEEPER-646] - BookieShell readjournal command is throwing BufferUnderflowException
  • [BOOKKEEPER-649] - Race condition in sync ZKUtils.createFullPathOptimistic()
  • [BOOKKEEPER-652] - Logger class name is wrong in LedgerCacheImpl.java
  • [BOOKKEEPER-654] - Bookkeeper client operations are allowed even after its closure, bk#close()
  • [BOOKKEEPER-663] - HierarchicalLedgerManager iterator is missing some ranges and the last ledger in the range
  • [BOOKKEEPER-664] - Compaction increases latency on journal writes
  • [BOOKKEEPER-667] - Client write will fail with BadMetadataVersion in case of multiple Bookie failures with AutoRecovery enabled
  • [BOOKKEEPER-668] - Race between PerChannelBookieClient#channelDisconnected() and disconnect() calls can make clients hang while add/reading entries in case of multiple bookie failures
  • [BOOKKEEPER-673] - Ledger length can be inaccurate in failure case
  • [BOOKKEEPER-676] - Make add asynchrounous in ledger recovery
  • [BOOKKEEPER-678] - BookieServer shutdown hangs indefinitely at NioServerSocketChannelFactory.releaseExternalResources
  • [BOOKKEEPER-683] - TestSubAfterCloseSub fails on 4.2
  • [BOOKKEEPER-686] - Bookie startup will fail if one of the configured ledgerDir is full and the same is used for replaying the journal
  • [BOOKKEEPER-688] - NPE exception in PerChannelBookieClient
  • [BOOKKEEPER-698] - Bookie client closure is not considering timeoutExecutor
  • [BOOKKEEPER-700] - GarbageCollectorThread exsiting with ArrayIndexOutOfBoundsException
  • [BOOKKEEPER-708] - Shade protobuf library to avoid incompatible versions
  • [BOOKKEEPER-709] - SlowBookieTest#testSlowBookie fails intermittently
  • [BOOKKEEPER-710] - OpenLedgerNoRecovery should watch ensemble change.
  • [BOOKKEEPER-711] - bookkeeper-daemon.sh will not remove the pid file on successful stop
  • [BOOKKEEPER-712] - bookkeeper script should use 'java' from JAVA_HOME
  • [BOOKKEEPER-714] - Logging channel exceptions in PerChannelBookieClient
  • [BOOKKEEPER-718] - AuditorLedgerCheckerTest is flakey
  • [BOOKKEEPER-719] - Inconsistent synchronization of org.apache.bookkeeper.stats.CodahaleMetricsProvider.metrics
  • [BOOKKEEPER-720] - CheckpointSource.MIN#compareTo does exactly the opposite of what it should
  • [BOOKKEEPER-724] - Shade introduces RAT error
  • [BOOKKEEPER-725] - AutoRecoveryMain should exit with error code if deathwatcher finds dead thread
  • [BOOKKEEPER-726] - PerChannelBookieClient should print address that it failed to connect to when it fails to correct
  • [BOOKKEEPER-727] - Names of bookie write/read threads are backwards
  • [BOOKKEEPER-728] - Bookkeeper#Builder is not public, so can't be used outside of client package
  • [BOOKKEEPER-729] - Bookie shouldn't exit with 0, if exiting from deathwatcher and thread death was caused by OOM
  • [BOOKKEEPER-730] - Shade pom file missing apache license header
  • [BOOKKEEPER-731] - Missing BOOKIE_PID_DIR and BOOKIE_STOP_TIMEOUT in env variables list
  • [BOOKKEEPER-739] - Test timeouts mostly ignored
  • [BOOKKEEPER-740] - AutoRecoveryMainTest#testAutoRecoverySessionLoss is failing
  • [BOOKKEEPER-742] - Fix for empty ledgers losing quorum.
  • [BOOKKEEPER-743] - Periodic ledger check running too often as doc doesn't match implementation.
  • [BOOKKEEPER-744] - Run the auditor bookie check periodically
  • [BOOKKEEPER-745] - Fix for false reports of ledger unreplication during rolling restarts.
  • [BOOKKEEPER-746] - 5 new shell commands. List ledgers, list metadata, list underreplicated, show auditor and simpletest
  • [BOOKKEEPER-750] - Flake in BookieAutoRecoveryTest#testEmptyLedgerLosesQuorumEventually
  • [BOOKKEEPER-751] - Ensure all the bookkeeper callbacks not run under ledger handle lock
  • [BOOKKEEPER-755] - Incorrect number of seconds specified in a day
  • [BOOKKEEPER-763] - findbugs fails to run on jenkins
  • [BOOKKEEPER-765] - bookkeeper script should fall back to java in path if JAVA_HOME is not set
  • [BOOKKEEPER-766] - Update notice.txt files to include 2014
  • [BOOKKEEPER-767] - Allow loopback in tests
  • [BOOKKEEPER-768] - fix typo 'seconds' to milliseconds in benchmark output
  • [BOOKKEEPER-774] - Flaky test org.apache.bookkeeper.test.ReadOnlyBookieTest.testBookieShouldTurnWritableFromReadOnly
  • [BOOKKEEPER-777] - Flake in LedgerCloseTest
  • [BOOKKEEPER-778] - Flake in TestTryReadLastConfirmed
  • [BOOKKEEPER-779] - jmx reporter for codahale metrics provider
  • [BOOKKEEPER-780] - Findbug issue in trunk
  • [BOOKKEEPER-783] - Avoid running out of fds in MutlipleThreadReadTest
  • [BOOKKEEPER-784] - BookKeeperCloseTest#testLedgerCheck is failing intermittently
  • [BOOKKEEPER-785] - Fix javadoc warnings in trunk
  • [BOOKKEEPER-786] - Fix Findbugs Error In Codahale Stats Provider

Improvement

  • [BOOKKEEPER-429] - Provide separate read and write threads in the bookkeeper server
  • [BOOKKEEPER-432] - Improve performance of entry log range read per ledger entries
  • [BOOKKEEPER-526] - multiple threads for delivery manager
  • [BOOKKEEPER-563] - Avoid Journal polluting page cache
  • [BOOKKEEPER-564] - Better checkpoint mechanism
  • [BOOKKEEPER-573] - Script to start a bookkeeper cluster
  • [BOOKKEEPER-592] - allow application to recommend ledger data locality
  • [BOOKKEEPER-605] - Use static Logger objects everywhere for bookkeeper
  • [BOOKKEEPER-611] - Speed up bookkeeper tests
  • [BOOKKEEPER-614] - Generic stats interface, which multiple providers can be plugged into
  • [BOOKKEEPER-618] - Better resolution of bookie address
  • [BOOKKEEPER-627] - LedgerDirsMonitor is missing thread name
  • [BOOKKEEPER-630] - Add tag to o.a.b.net.* to indict which release of hadoop they came from, move DNS to o.a.b.net.* and indent
  • [BOOKKEEPER-637] - NoSuchEntry exception when reading an entry from a bookie should not print ERROR level message
  • [BOOKKEEPER-640] - Log improvement - add shutdown/exit log message for the bookie services
  • [BOOKKEEPER-645] - Bookkeeper shell command to get a list of readonly bookies
  • [BOOKKEEPER-661] - Turn readonly back to writable if spaces are reclaimed.
  • [BOOKKEEPER-662] - Major GC should kick in immediately if remaining space reaches a warning threshold
  • [BOOKKEEPER-666] - Naming threads of ExecutorService
  • [BOOKKEEPER-699] - Codahale metrics implementation of stats API
  • [BOOKKEEPER-701] - Improve exception handling of Bookkeeper threads
  • [BOOKKEEPER-732] - Add env variable ENTRY_FORMATTER_CLASS to the bkenv.sh
  • [BOOKKEEPER-747] - Implement register/unregister LedgerMetadataListener in MSLedgerManagerFactory
  • [BOOKKEEPER-756] - Use HashedwheelTimer for request timeouts for PCBC
  • [BOOKKEEPER-758] - Add TryReadLastAddConfirmed API
  • [BOOKKEEPER-781] - Fix OOM on Hedwig Tests

New Feature


Task


Test


Wish