Release 4.2.0 - 2013-01-14 Non-backward compatible changes: BUGFIXES: IMPROVEMENTS: bookkeeper-server: BOOKKEEPER-203: improve ledger manager interface to remove zookeeper dependency on metadata operations. (sijie via ivank) BOOKKEEPER-303: LedgerMetadata should serialized using protobufs (ivank) hedwig-client: BOOKKEEPER-339: Let hedwig cpp client support returning message seq id for publish requests. (sijie via ivank) Backward compatible changes: BUGFIXES: BOOKKEEPER-289: mvn clean doesn't remove test output files (sijie via ivank) BOOKKEEPER-298: We run with preferIPv4Stack in the scripts but not in the tests (ivank) BOOKKEEPER-292: Test backward compatibility automatically between versions. (ivank) BOOKKEEPER-352: Should not use static ServerStats/BKStats instance in TestServerStats/TestBKStats (sijie via fpj) BOOKKEEPER-338: Create Version.NEW and Version.ANY static instances of Version so that were not passing around nulls (sijie via ivank) BOOKKEEPER-32: Clean up LOG.debug statements (Stu Hood via sijie) BOOKKEEPER-484: Misc fixes for test scripts (ivank via fpj) BOOKKEEPER-483: precommit tests only check toplevel rat file, not the one for submodules. (ivank via fpj) BOOKKEEPER-533: TestSubAfterCloseSub fails strangely in tests (ivank via fpj) BOOKKEEPER-480: Fix javac warnings (ivank via sijie) BOOKKEEPER-481: Fix javadoc warnings (ivank via sijie) bookkeeper-server: BOOKKEEPER-183: Provide tools to read/check data files in bookie server (sijie via ivank) BOOKKEEPER-307: BookieShell introduces 4 findbugs warnings (ivank via sijie) BOOKKEEPER-322: New protobufs generates findbugs errors (ivank) BOOKKEEPER-280: LedgerHandle.addEntry() should return an entryId (mmerli via ivank) BOOKKEEPER-324: Flakeyness in LedgerCreateDeleteTest (ivank) BOOKKEEPER-318: Spelling mistake in MultiCallback log message. (surendra via sijie) BOOKKEEPER-296: It's better provide stop script for bookie (nijel via sijie) BOOKKEEPER-294: Not able to start the bookkeeper before the ZK session timeout. (rakeshr via ivank) BOOKKEEPER-327: System.currentTimeMillis usage in BookKeeper (uma via fpj) BOOKKEEPER-349: Entry logger should close all the chennels which are there in Map, instead of closing only current channel. (umamaheswararao via sijie) BOOKKEEPER-326: DeadLock during ledger recovery (rakeshr via ivank) BOOKKEEPER-372: Check service name in bookie start/stop script. (nijel via ivank) BOOKKEEPER-354: [BOOKKEEPER-296] [Documentation] Modify the bookkeeper start script and document the bookkeeper stop command in bookkeeperConfig.xml (Kiran BC via ivank) BOOKKEEPER-378: ReplicationWorker may not get ZK watcher notification on UnderReplication ledger lock deletion. (umamaheswararao & ivank via ivank) BOOKKEEPER-380: ZkLedgerUnderreplicationManager.markLedgerUnderreplicated() is adding duplicate missingReplicas while multiple bk failed for the same ledger (rakeshr via ivank) BOOKKEEPER-381: ReadLastConfirmedOp's Logger class name is wrong (surendra via sijie) BOOKKEEPER-382: space missed at concatenations in GarbageCollectorThread logging (Brahma via sijie) BOOKKEEPER-337: Add entry fails with MetadataVersionException when last ensemble has morethan one bookie failures (rakeshr via ivank) BOOKKEEPER-376: LedgerManagers should consider 'underreplication' node as a special Znode (Uma via sijie) BOOKKEEPER-384: Clean up LedgerManagerFactory and LedgerManager usage in tests (rakeshr via ivank) BOOKKEEPER-385: replicateLedgerFragment should throw Exceptions in error conditions (umamahesh via ivank) BOOKKEEPER-386: It should not be possible to replicate a ledger fragment which is at the end of an open ledger (ivank & umamahesh via ivank) BOOKKEEPER-395: HDFS dep transitively depends on a busted pom (Stu Hood via sijie) BOOKKEEPER-387: BookKeeper Upgrade is not working. (surendra via sijie) BOOKKEEPER-383: NPE in BookieJournalTest (sijie via ivank) BOOKKEEPER-396: Compilation issue in TestClient.java of BenchMark ( showing this in eclipse) (umamahesh via sijie) BOOKKEEPER-403: ReReadMetadataCb is not executed in the thread responsible for that ledger (ivank) BOOKKEEPER-405: Let's add Thread name for ReplicationWorker thread. (umamahesh via ivank) BOOKKEEPER-418: Store hostname of locker in replication lock (ivank) BOOKKEEPER-417: Hierarchical zk underreplication manager should clean up its hierarchy when done to allow for fast acquisition of underreplicated entries (ivank) BOOKKEEPER-436: Journal#rollLog may leak file handler (umamahesh via ivank) BOOKKEEPER-424: Bookie start is failing intermittently when zkclient connection delays (rakeshr via ivank) BOOKKEEPER-416: LedgerChecker returns underreplicated fragments for an closed ledger with no entries (ivank) BOOKKEEPER-425: Cleanup Bookie id generation (ivank via fpj) BOOKKEEPER-430: Remove manual bookie registration from overview (fpj via ivank) BOOKKEEPER-466: ZooKeeper test utility sets the port number as the tickTime (ivank) BOOKKEEPER-460: LedgerDeleteTest checks wrong place for log file (Fangmin Lv via ivank) BOOKKEEPER-477: In ReadOnlyBookieTest, we should wait for the bookie to die before asserting on it (ivank via fpj) BOOKKEEPER-485: TestFencing hung (ivank via fpj) BOOKKEEPER-351: asyncAddEntry should not throw an exception (Matteo Merli via sijie) BOOKKEEPER-291: BKMBeanRegistry uses log4j directly (fpj via ivank) BOOKKEEPER-459: Rename metastore mock implementation to InMemory implementation (jiannan via ivank) BOOKKEEPER-347: Provide mechanism to detect r-o bookie by the bookie clients (Vinay via ivank) BOOKKEEPER-475: BookieRecoveryTest#testSyncBookieRecoveryToRandomBookiesCheckForDupes() iterates too much (ivank via fpj) BOOKKEEPER-431: Duplicate definition of COOKIES_NODE (uma via fpj) BOOKKEEPER-474: BookieReadWriteTest#testShutdown doesn't make sense (ivank via fpj) BOOKKEEPER-465: CreateNewLog may overwrite lastLogId with smaller value (yixue, fpj via fpj) BOOKKEEPER-498: BookieRecoveryTest.tearDown NPE (fpj) BOOKKEEPER-497: GcLedgersTest has a potential race (ivank via sijie) BOOKKEEPER-493: moveLedgerIndexFile might have chance pickup same directory (sijie via ivank) BOOKKEEPER-365: Ledger will never recover if one of the quorum bookie is down forever and others dont have entry (sijie via ivank) BOOKKEEPER-336: bookie readEntries is taking more time if the ensemble has failed bookie(s) (ivank) BOOKKEEPER-512: BookieZkExpireTest fails periodically (ivank via sijie) BOOKKEEPER-509: TestBookKeeperPersistenceManager failed on latest trunk (sijie via ivank) BOOKKEEPER-496: Ensure that the auditor and replication worker will shutdown if they lose their ZK session (ivank) BOOKKEEPER-500: Fencing doesn't work when restarting bookies. (sijie via ivank) BOOKKEEPER-520: BookieFailureTest hangs on precommit build (ivank via sijie) BOOKKEEPER-447: Bookie can fail to recover if index pages flushed before ledger flush acknowledged (ivank via sijie) BOOKKEEPER-520: BookieFailureTest hangs on precommit build (sijie via fpj, jira reopened) BOOKKEEPER-514: TestDeadLock hanging sometimes (ivank, sijie via fpj) BOOKKEEPER-524: Bookie journal filesystem gets full after SyncThread is terminated with exception (Matteo, fpj via sijie) BOOKKEEPER-355: Ledger recovery will mark ledger as closed with -1, in case of slow bookie is added to ensemble during recovery add (ivank) BOOKKEEPER-534: Flakeyness in AuditorBookieTest (umamahesh via ivank) BOOKKEEPER-542: Remove trailing spaces in IndexCorruptionTest (fpj via ivank) BOOKKEEPER-530: data might be lost during compaction. (ivank) BOOKKEEPER-538: Race condition in BookKeeper#close (ivank via fpj) BOOKKEEPER-408: BookieReadWriteTest will enter the endless loop and will not leave out (ivank) BOOKKEEPER-504: Fix findbugs warning in PendingReadOp (fpj via ivank) hedwig-protocol: BOOKKEEPER-394: CompositeException message is not useful (Stu Hood via sijie) BOOKKEEPER-468: Remove from protobuf generation in hedwig (ivank) hedwig-client: BOOKKEEPER-274: Hedwig cpp client library should not link to cppunit which is just used for test. (sijie via ivank) BOOKKEEPER-320: Let hedwig cpp client could publish messages using Message object instead of string. (jiannan via ivank) BOOKKEEPER-371: NPE in hedwig hub client causes hedwig hub to shut down. (Aniruddha via sijie) BOOKKEEPER-392: Racey ConcurrentMap usage in java hedwig-client (Stu Hood via sijie) BOOKKEEPER-427: TestConcurrentTopicAcquisition hangs every so often (ivank) BOOKKEEPER-434: [Hedwig CPP Client] Delay resolving default host until necessary. (sijie via ivank) BOOKKEEPER-452: Rename ClientConfiguration multiplexing_enabled to subscription_connection_sharing_enabled (sijie via ivank) BOOKKEEPER-454: hedwig c++ tester script assumes sh is bash (ivank) BOOKKEEPER-470: Possible infinite loop in simple.SubscribeReconnectCallback (sijie via ivank) BOOKKEEPER-55: SubscribeReconnectRetryTask might retry subscription endlessly when another subscription is already successfully created previously (sijie via ivank) BOOKKEEPER-513: TestMessageFilter fails periodically (ivank) hedwig-server: BOOKKEEPER-302: No more messages delivered when hub server scans messages over two ledgers. (sijie via ivank) BOOKKEEPER-330: System.currentTimeMillis usage in Hedwig (uma via sijie) BOOKKEEPER-343: Failed to register hedwig JMX beans in test cases (sijie via ivank) BOOKKEEPER-259: Create a topic manager using versioned write for leader election (sijie via ivank) BOOKKEEPER-191: Hub server should change ledger to write, so consumed messages have chance to be garbage collected. (sijie via ivank) BOOKKEEPER-439: No more messages delivered after deleted consumed ledgers. (sijie via ivank) BOOKKEEPER-440: Make Write/Delete SubscriptionData Restricted to Version (Fangmin Lv via ivank) BOOKKEEPER-482: Precommit is reporting findbugs errors in trunk (ivank via sijie) BOOKKEEPER-442: Failed to deliver messages due to inconsistency between SubscriptionState and LedgerRanges. (jiannan via ivank) BOOKKEEPER-461: Delivery throughput degrades when there are lots of publishers w/ high traffic. (sijie via ivank) BOOKKEEPER-458: Annoy BKReadException error when changing ledger. (jiannan via fpj) BOOKKEEPER-507: Race condition happens if closeSubscription and subscribe happened at the same time (in multiplexed client). (sijie via ivank) BOOKKEEPER-532: AbstractSubscriptionManager#AcquireOp read subscriptions every time even it already owned the topic. (sijie via fpj) BOOKKEEPER-531: Cache thread should wait until old entries are collected (sijie via ivank) BOOKKEEPER-529: stopServingSubscriber in delivery manager should remove stub callbacks in ReadAheadCache (sijie via ivank) BOOKKEEPER-543: Read zk host list in a wrong way in hedwig server (Fangmin via sijie) BOOKKEEPER-540: #stopServingSubscriber when channel is disconnected. (Fangmin via sijie) BOOKKEEPER-539: ClientNotSubscribedException & doesn't receive enough messages in TestThrottlingDelivery#testServerSideThrottle (sijie) BOOKKEEPER-503: The test case of TestThrottlingDelivery#testServerSideThrottle failed sometimes (jiannan & sijie via ivank) IMPROVEMENTS: BOOKKEEPER-467: Allocate ports for testing dynamically (ivank) BOOKKEEPER-471: Add scripts for preCommit testing (ivank) BOOKKEEPER-476: Log to file during tests (ivank via fpj) BOOKKEEPER-491: Hedwig doc for configuration (fpj, sijie via fpj) BOOKKEEPER-495: Revise BK config doc (fpj, ivank via fpj) BOOKKEEPER-523: Every test should have a timeout (ivank, sijie via fpj) BOOKKEEPER-541: Add guava to notice file (ivank via fpj) bookkeeper-server: BOOKKEEPER-328: Bookie DeathWatcher is missing thread name (Rakesh via sijie) BOOKKEEPER-2: bookkeeper does not put enough meta-data in to do recovery properly (ivank via sijie) BOOKKEEPER-317: Exceptions for replication (ivank via sijie) BOOKKEEPER-246: Recording of underreplication of ledger entries (ivank) BOOKKEEPER-247: Detection of under replication (ivank) BOOKKEEPER-299: Provide LedgerFragmentReplicator which should replicate the fragments found from LedgerChecker (umamahesh via ivank) BOOKKEEPER-248: Rereplicating of under replicated data (umamahesh via ivank) BOOKKEEPER-304: Prepare bookie vs ledgers cache and will be used by the Auditor (rakeshr via ivank) BOOKKEEPER-272: Provide automatic mechanism to know bookie failures (rakeshr via ivank) BOOKKEEPER-300: Create Bookie format command (Vinay via sijie) BOOKKEEPER-208: Separate write quorum from ack quorum (ivank) BOOKKEEPER-325: Delay the replication of a ledger if RW found that its last fragment is in underReplication. (umamahesh via ivank) BOOKKEEPER-388: Document bookie format command (kiran_bc via ivank) BOOKKEEPER-278: Ability to disable auto recovery temporarily (rakeshr via ivank) BOOKKEEPER-319: Manage auditing and replication processes (Vinay via ivank) BOOKKEEPER-315: Ledger entries should be replicated sequentially instead of parallel. (umamahesh via ivank) BOOKKEEPER-345: Detect IOExceptions on entrylogger and bookie should consider next ledger dir(if any) (Vinay via ivank) BOOKKEEPER-346: Detect IOExceptions in LedgerCache and bookie should look at next ledger dir(if any) (Vinay via ivank) BOOKKEEPER-444: Refactor pending read op to make speculative reads possible (ivank) BOOKKEEPER-204: Provide a MetaStore interface, and a mock implementation. (Jiannan Wang via ivank) BOOKKEEPER-469: Remove System.out.println from TestLedgerManager (ivank via fpj) BOOKKEEPER-205: implement a MetaStore based ledger manager for bookkeeper client. (jiannan via ivank) BOOKKEEPER-426: Make auditor Vote znode store a protobuf containing the host that voted (ivank) BOOKKEEPER-428: Expose command options in bookie scripts to disable/enable auto recovery temporarily (rakesh,ivank via fpj) BOOKKEEPER-511: BookieShell is very noisy (ivank via sijie) BOOKKEEPER-375: Document about Auto replication service in BK (umamahesh via ivank) BOOKKEEPER-490: add documentation for MetaStore interface (sijie, ivank via sijie) BOOKKEEPER-463: Refactor garbage collection code for ease to plugin different GC algorithm. (Fangmin, ivank, fpj via sijie) BOOKKEEPER-409: Integration Test - Perform bookie rereplication cycle by Auditor-RW processes (rakeshr via ivank) BOOKKEEPER-293: Periodic checking of ledger replication status (ivank) BOOKKEEPER-472: Provide an option to start Autorecovery along with Bookie Servers (umamahesh via ivank) BOOKKEEPER-341: add documentation for bookkeeper ledger manager interface. (sijie via ivank) hedwig-server: BOOKKEEPER-250: Need a ledger manager like interface to manage metadata operations in Hedwig (sijie via ivank) BOOKKEEPER-329: provide stop scripts for hub server (sijie via ivank) BOOKKEEPER-331: Let hedwig support returning message seq id for publish requests. (Mridul via sijie) BOOKKEEPER-340: Test backward compatibility for hedwig between different versions. (sijie via ivank) BOOKKEEPER-283: Improve Hedwig Console to use Hedwig Metadata Manager. (sijie via ivank) BOOKKEEPER-332: Add SubscriptionPreferences to record all preferences for a subscription (sijie via ivank) BOOKKEEPER-333: server-side message filter (sijie via ivank) BOOKKEEPER-252: Hedwig: provide a subscription mode to kill other subscription channel when hedwig client is used as a proxy-style server. (sijie via ivank) BOOKKEEPER-397: Make the hedwig client in RegionManager configurable. (Aniruddha via sijie) BOOKKEEPER-367: Server-Side Message Delivery Flow Control (sijie via ivank) BOOKKEEPER-415: Rename DeliveryThrottle to MessageWindowSize (ivank via sijie) BOOKKEEPER-422: Simplify AbstractSubscriptionManager (stu via fpj) BOOKKEEPER-435: Create SubscriptionChannelManager to manage all subscription channel (sijie via ivank) BOOKKEEPER-411: Add CloseSubscription Request for multiplexing support (sijie via ivank) BOOKKEEPER-441: InMemorySubscriptionManager should back up top2sub2seq before change it (Yixue via ivank) BOOKKEEPER-479: Fix apache-rat issues in tree (ivank via fpj) BOOKKEEPER-457: Create a format command for Hedwig to cleanup its metadata. (sijie via ivank) BOOKKEEPER-487: Add existed hub server settings to configuration template file (sijie via ivank) BOOKKEEPER-389: add documentation for message filter. (sijie via ivank) BOOKKEEPER-399: Let hub server configure write quorum from ack quorum. (sijie via fpj) BOOKKEEPER-342: add documentation for hedwig metadata manager interface. (sijie, ivank via sijie) BOOKKEEPER-522: TestHedwigHub is failing silently on Jenkins (ivank via sijie) BOOKKEEPER-262: Implement a meta store based hedwig metadata manager. (jiannan via ivank) BOOKKEEPER-310: Changes in hedwig server to support JMS spec (ivank via sijie) hedwig-client: BOOKKEEPER-306: Change C++ client to use gtest for testing (ivank via sijie) BOOKKEEPER-334: client-side message filter for java client. (sijie via ivank) BOOKKEEPER-335: client-side message filter for cpp client. (sijie via ivank) BOOKKEEPER-364: re-factor hedwig java client to support both one-subscription-per-channel and multiplex-subscriptions-per-channel. (sijie via ivank) BOOKKEEPER-143: Add SSL support for hedwig cpp client (sijie via ivank) BOOKKEEPER-413: Hedwig C++ client: Rename RUN_AS_SSL_MODE to SSL_ENABLED (ivank via sijie) BOOKKEEPER-369: re-factor hedwig cpp client to provide better interface to support both one-subscription-per-channel and multiple-subscriptions-per-channel. (sijie via ivank) BOOKKEEPER-368: Implementing multiplexing java client. (sijie via ivank) BOOKKEEPER-370: implement multiplexing cpp client. (sijie via ivank) BOOKKEEPER-453: Extract commonality from MultiplexSubscribeResponseHandler and SimpleSubscribeResponseHandler and put into an abstract class (sijie via ivank) BOOKKEEPER-404: Deprecate non-SubscriptionOptions Subscriber Apis (ivank via sijie) Release 4.1.0 - 2012-06-07 Non-backward compatible changes: BUGFIXES: IMPROVEMENTS: Backward compatible changes: BUGFIXES: BOOKKEEPER-145: Put notice and license file for distributed binaries in SVN (ivank) BOOKKEEPER-254: Bump zookeeper version in poms (ivank) BOOKKEEPER-72: Fix warnings issued by FindBugs (ivank) BOOKKEEPER-238: Add log4j.properties in conf/ for bin packages (ivank) bookkeeper-server/ BOOKKEEPER-142: Parsing last log id is wrong, which may make entry log files overwritten (Sijie Gou via ivank) BOOKKEEPER-141: Run extracting ledger id from entry log files in GC thread to speed up bookie restart (Sijie Gou via ivank) BOOKKEEPER-148: Jenkins build is failing (ivank via fpj) BOOKKEEPER-40: BookieClientTest fails intermittantly (fpj via ivank) BOOKKEEPER-150: Entry is lost when recovering a ledger with not enough bookies. (Sijie Guo via ivank) BOOKKEEPER-153: Ledger can't be opened or closed due to zero-length metadata (Sijie Guo via ivank) BOOKKEEPER-23: Timeout requests (ivank) BOOKKEEPER-161: PerChannelBookieClient tries to reuse HashedWheelTimer, throws Exception (ivank) BOOKKEEPER-167: PerChannelBookieClient doesn't use ClientConfiguration (Sijie Guo via ivank) BOOKKEEPER-156: BookieJournalRollingTest failing (Sijie Guo via ivank) BOOKKEEPER-162: LedgerHandle.readLastConfirmed does not work (fpj) BOOKKEEPER-152: Can't recover a ledger whose current ensemble contain failed bookie. (ivank) BOOKKEEPER-171: ServerConfiguration can't use more than one directory for ledgers. (ivank via sijie) BOOKKEEPER-170: Bookie constructor starts a number of threads. (ivank via fpj) BOOKKEEPER-169: bookie hangs on reading header when encountering partial header index file (sijie via ivank) BOOKKEEPER-174: Bookie can't start when replaying entries whose ledger were deleted and garbage collected. (sijie via ivank) BOOKKEEPER-177: Index file is lost or some index pages aren't flushed. (sijie via ivank) BOOKKEEPER-113: NPE In BookKeeper test (fpj via ivank) BOOKKEEPER-176: HierarchicalBookieFailureTest Hung (ivank via fpj) BOOKKEEPER-180: bookie server doesn't quit when running out of disk space (sijie via ivank) BOOKKEEPER-185: Remove bookkeeper-server dependency on hadoop-common (ivank) BOOKKEEPER-184: CompactionTest failing on Jenkins (sijie via ivank) BOOKKEEPER-182: Entry log file is overwritten when fail to read lastLogId. (sijie via ivank) BOOKKEEPER-186: Bookkeeper throttling - permits is not released when read has failed from all replicas (Rakesh R via sijie) BOOKKEEPER-189: AbstractZkLedgerManager doesn't disregard cookies (ivank via sijie) BOOKKEEPER-195: HierarchicalLedgerManager doesn't consider idgen as a "specialNode" (ivank) BOOKKEEPER-190: Add entries would fail when number of open ledgers reaches more than openFileLimit. (sijie via ivank) BOOKKEEPER-194: Get correct latency for addEntry operations for JMX. (sijie via ivank) BOOKKEEPER-166: Bookie will not recover its journal if the length prefix of an entry is truncated (ivank) BOOKKEEPER-193: Ledger is garbage collected by mistake. (sijie, ivank via sijie) BOOKKEEPER-198: replaying entries of deleted ledgers would exhaust ledger cache. (sijie) BOOKKEEPER-112: Bookie Recovery on an open ledger will cause LedgerHandle#close on that ledger to fail (sijie) BOOKKEEPER-135: Fencing does not check the ledger masterPasswd (ivank) BOOKKEEPER-212: Bookie stops responding when creating and deleting many ledgers (sijie via fpj) BOOKKEEPER-211: Bookie fails to to start (sijie) BOOKKEEPER-200: Fix format and comments (fpj) BOOKKEEPER-216: Bookie doesn't exit with right exit code (sijie via ivank) BOOKKEEPER-196: Define interface between bookie and ledger storage (ivank) BOOKKEEPER-213: PerChannelBookieClient calls the wrong errorOut function when encountering an exception (Aniruddha via sijie) BOOKKEEPER-231: ZKUtil.killServer not closing the FileTxnSnapLog from ZK. (Uma Maheswara Rao G via sijie) BOOKKEEPER-232: AsyncBK tests failing (umamaheswararao via ivank) BOOKKEEPER-229: Deleted entry log files would be garbage collected again and again. (sijie via fpj) BOOKKEEPER-242: Bookkeeper not able to connect other zookeeper when shutdown the zookeeper server where the BK has connected. (sijie & rakeshr via ivank) BOOKKEEPER-234: EntryLogger will throw NPE, if any dir does not exist or IO Errors. (umamaheswararao via ivank) BOOKKEEPER-235: Bad syncing in entrylogger degrades performance for many concurrent ledgers (ivank via fpj) BOOKKEEPER-224: Fix findbugs in bookkeeper-server component (ivank) BOOKKEEPER-251: Noise error message printed when scanning entry log files those have been garbage collected. (sijie via ivank) BOOKKEEPER-266: Review versioning documentation (ivank) BOOKKEEPER-258: CompactionTest failed (ivank via sijie) BOOKKEEPER-273: LedgerHandle.deleteLedger() should be idempotent (Matteo Merli via ivank) BOOKKEEPER-281: BKClient is failing when zkclient connection delays (ivank via sijie) BOOKKEEPER-279: LocalBookKeeper is failing intermittently due to zkclient connection establishment delay (Rakesh R via sijie) BOOKKEEPER-286: Compilation warning (ivank via sijie) BOOKKEEPER-287: NoSuchElementException in LedgerCacheImpl (sijie) BOOKKEEPER-288: NOTICE files don't have the correct year (ivank via sijie) hedwig-client/ BOOKKEEPER-217: NPE in hedwig client when enable DEBUG (sijie via ivank) hedwig-server/ BOOKKEEPER-140: Hub server doesn't subscribe remote region correctly when a region is down. (Sijie Gou via ivank) BOOKKEEPER-133: Hub server should update subscription state to zookeeper when losing topic or shutting down (Sijie Gou via ivank) BOOKKEEPER-74: Bookkeeper Persistence Manager should give up topic on error (sijie via ivank) BOOKKEEPER-163: Prevent incorrect NoSuchLedgerException for readLastConfirmed. (ivank via sijie) BOOKKEEPER-197: HedwigConsole uses the same file to load bookkeeper client config and hub server config (sijie) BOOKKEEPER-56: Race condition of message handler in connection recovery in Hedwig client (sijie & Gavin Li via ivank) BOOKKEEPER-215: Deadlock occurs under high load (sijie via ivank) BOOKKEEPER-245: Intermittent failures in PersistanceManager tests (ivank) BOOKKEEPER-209: Typo in ServerConfiguration for READAHEAD_ENABLED (ivank) BOOKKEEPER-146: TestConcurrentTopicAcquisition sometimes hangs (ivank) BOOKKEEPER-285: TestZkSubscriptionManager quits due to NPE, so other tests are not run in hedwig server. (sijie) bookkeeper-benchmark/ BOOKKEEPER-207: BenchBookie doesn't run correctly (ivank via fpj) BOOKKEEPER-228: Fix the bugs in BK benchmark (umamaheswararao via ivank) IMPROVEMENTS: BOOKKEEPER-265: Review JMX documentation (sijie via fpj) bookkeeper-server/ BOOKKEEPER-95: extends zookeeper JMX to monitor and manage bookie server (Sijie Guo via ivank) BOOKKEEPER-98: collect add/read statistics on bookie server (Sijie Guo via ivank) BOOKKEEPER-157: For small packets, increasing number of bookies actually degrades performance. (ivank via fpj) BOOKKEEPER-165: Add versioning support for journal files (ivank) BOOKKEEPER-137: Do not create Ledger index files until absolutely necessary. (ivank) BOOKKEEPER-172: Upgrade framework for filesystem layouts (ivank via fpj) BOOKKEEPER-178: Delay ledger directory creation until the ledger index file was created (sijie via ivank) BOOKKEEPER-160: bookie server needs to do compaction over entry log files to reclaim disk space (sijie via ivank) BOOKKEEPER-187: Create well defined interface for LedgerCache (ivank) BOOKKEEPER-175: Bookie code is very coupled (ivank) BOOKKEEPER-188: Garbage collection code is in the wrong place (ivank via sijie) BOOKKEEPER-218: Provide journal manager to manage journal related operations (sijie) BOOKKEEPER-173: Uncontrolled number of threads in bookkeeper (sijie via fpj) BOOKKEEPER-241: Add documentation for bookie entry log compaction (sijie via fpj) BOOKKEEPER-263: ZK ledgers root path is hard coded (Aniruddha via sijie) BOOKKEEPER-260: Define constant for -1 (invalid entry id) (ivank via fpj) BOOKKEEPER-270: Review documentation on bookie cookie (ivank via fpj) hedwig-server/ BOOKKEEPER-77: Add a console client for hedwig (Sijie Guo via ivank) BOOKKEEPER-168: Message bounding on subscriptions (ivank) BOOKKEEPER-96: extends zookeeper JMX to monitor and manage hedwig server (sijie via ivank) BOOKKEEPER-97: collect pub/sub/consume statistics on hub server (sijie via ivank) BOOKKEEPER-269: Review documentation for hedwig console client (sijie via fpj) hedwig-client/ BOOKKEEPER-271: Review documentation for message bounding (ivank via fpj) bookkeeper-benchmark/ BOOKKEEPER-158: Move latest benchmarking code into trunk (ivank via fpj) BOOKKEEPER-236: Benchmarking improvements from latest round of benchmarking (ivank via fpj) Release 4.0.0 - 2011-11-30 Non-backward compatible changes: BUGFIXES: BOOKKEEPER-89: Bookkeeper API changes for initial Bookkeeper release (ivank) BOOKKEEPER-108: add configuration support for BK (Sijie via ivank) BOOKKEEPER-90: Hedwig API changes for initial Bookkeeper release (ivank via fpj) Backward compatible changes: BUGFIXES: BOOKKEEPER-124: build has RAT failures (ivank) BOOKKEEPER-121: Review Hedwig client documentation (breed via ivank) BOOKKEEPER-127: Make poms use official zookeeper 3.4.0 (ivank) BOOKKEEPER-120: Review BookKeeper client documentation (ivank) BOOKKEEPER-122: Review BookKeeper server documentation (fpj & ivank) BOOKKEEPER-66: use IPv4 for builds (mmorel via ivank) BOOKKEEPER-132: Sign artifacts before deploying to maven (ivank) BOOKKEEPER-131: Fix zookeeper test dependency (ivank) BOOKKEEPER-134: Delete superfluous lib directories (ivank) BOOKKEEPER-138: NOTICE.txt is invalid (ivank) BOOKKEEPER-139: Binary packages do not carry NOTICE.txt (ivank) bookkeeper-server/ BOOKKEEPER-1: Static variable makes tests fail (fpj via ivank) BOOKKEEPER-19: BookKeeper doesn't support more than 2Gig of memory (ivan via fpj) BOOKEEPER-22: Exception in LedgerCache causes addEntry request to fail (fpj via fpj) BOOKEEPER-5: Issue with Netty in BookKeeper (fpj and ivank via fpj) BOOKKEEPER-30: Test are too noisy (ivank via fpj) BOOKKEEPER-11: Read from open ledger (fpj via ivank) BOOKKEEPER-27: mvn site failed with unresolved dependencies (ivank via fpj) BOOKKEEPER-29: BookieRecoveryTest fails intermittently (fpj via ivank) BOOKKEEPER-33: Add length and offset parameter to addEntry (ivank via fpj) BOOKKEEPER-29: BookieRecoveryTest fails intermittently (ivank, fpj via fpj) BOOKKEEPER-38: Bookie Server doesn't exit when its zookeeper session is expired. So the process is hang there. (Sijie Guo via breed) BOOKKEEPER-58: Changes introduced in BK-38 cause BookieClientTest to hang indefinitely. (ivank) BOOKKEEPER-18: maven build is unstable (mmorel, ivank via ivank) BOOKKEEPER-57: NullPointException at bookie.zk@EntryLogger (xulei via ivank) BOOKKEEPER-59: Race condition in netty code allocates and orphans resources (BK-5 revisited) (ivank via fpj) BOOKKEEPER-68: Conditional setData (fpj via ivank) BOOKKEEPER-86: bookkeeper-benchmark fails to compile after BOOKKEEPER-68 (ivank via breed) BOOKKEEPER-61: BufferedChannel read endless when the remaining bytes of file is less than the capacity of read buffer (Sijie Guo via breed) BOOKKEEPER-84: Add versioning for ZK metadata (ivank via breed) BOOKKEEPER-92: using wrong context object in readLastConfirmedComplete callback (Sijie Guo via ivank) BOOKKEEPER-94: Double callbacks in readLastConfirmedOp which fails readLastConfirmed operation even received enough valid responses. (Sijie Guo via ivank) BOOKKEEPER-83: Added versioning and flags to the bookie protocol (ivank) BOOKKEEPER-93: bookkeeper doesn't work correctly on OpenLedgerNoRecovery (Sijie Guo via ivank) BOOKKEEPER-103: ledgerId and entryId is parsed wrong when addEntry (Sijie Guo via ivank) BOOKKEEPER-50: NullPointException at LedgerDescriptor#cmpMasterKey (Sijie Guo via ivank) BOOKKEEPER-82: support journal rolling (Sijie Guo via fpj) BOOKKEEPER-106: recoveryBookieData can select a recovery bookie which is already in the ledgers ensemble (ivank via fpj) BOOKKEEPER-101: Add Fencing to Bookkeeper (ivank) BOOKKEEPER-104: Add versioning between bookie and its filesystem layout (ivank) BOOKKEEPER-81: disk space of garbage collected entry logger files isn't reclaimed util process quit (Sijie Guo via fpj) BOOKKEEPER-91: Bookkeeper and hedwig clients should not use log4j directly (ivank via fpj) BOOKKEEPER-115: LocalBookKeeper fails after BOOKKEEPER-108 (ivank) BOOKKEEPER-114: add a shutdown hook to shut down bookie server safely. (Sijie via ivank) BOOKKEEPER-39: Bookie server failed to restart because of too many ledgers (more than ~50,000 ledgers) (Sijie via ivank) BOOKKEEPER-125: log4j still used in some places (ivank) BOOKKEEPER-62: Bookie can not start when encountering corrupted records (breed via ivank) BOOKKEEPER-111: Document bookie recovery feature (ivank) BOOKKEEPER-129: ZK_TIMEOUT typo in client/server configuration (Sijie via ivank) BOOKKEEPER-22: Exception in LedgerCache causes addEntry request to fail (fpj via fpj) BOOKKEEPER-5: Issue with Netty in BookKeeper (fpj and ivank via fpj) hedwig-server/ BOOKKEEPER-43: NullPointException when releasing topic (Sijie Guo via breed) BOOKKEEPER-51: NullPointException at FIFODeliveryManager#deliveryPtrs (xulei via ivank) BOOKKEEPER-63: Hedwig PubSubServer must wait for its Zookeeper client to be connected upon startup (mmorel via ivank) BOOKKEEPER-100: Some hedwig tests have build errors (dferro via ivank) BOOKKEEPER-69: ServerRedirectLoopException when a machine (hosts bookie server & hub server) reboot, which is caused by race condition of topic manager (Sijie, ivank via ivank) hedwig-client/ BOOKKEEPER-52: Message sequence confuse due to the subscribeMsgQueue@SubscribeResponseHandler (xulei via ivank) BOOKKEEPER-88: derby doesn't like - in the topic names (breed via ivank) BOOKKEEPER-71: hedwig c++ client does not build . (ivank) BOOKKEEPER-107: memory leak in HostAddress of hedwig c++ client (Sijie Guo via ivank) BOOKKEEPER-80: subscription msg queue race condition in hedwig c++ client (Sijie Guo via ivank) BOOKKEEPER-87: TestHedwigHub exhausts direct buffer memory with netty 3.2.4.Final (ivank via fpj) BOOKKEEPER-79: randomly startDelivery/stopDelivery will core dump in c++ hedwig client (Sijie Guo via ivank) BOOKKEEPER-118: Hedwig client doesn't kill and remove old subscription channel after redirection. (Sijie Guo via ivank) BOOKKEEPER-117: Support multi threads in hedwig cpp client to leverage multi-core hardware (Sijie Guo via ivank) BOOKKEEPER-53: race condition of outstandingMsgSet@SubscribeResponseHandler (fpj via breed) IMPROVEMENTS: BOOKKEEPER-28: Create useful startup scripts for bookkeeper and hedwig (ivank) BOOKKEEPER-26: Indentation is all messed up in the BookKeeper code (ivank via fpj) BOOKKEEPER-41: Generation of packages for distribution (ivank via fpj) BOOKKEEPER-65: fix dependencies on incompatible versions of netty (mmorel via ivank) BOOKKEEPER-102: Make bookkeeper use ZK from temporary repo (ivank) BOOKKEEPER-128: pom and script modifications required for generating release packages (ivank) hedwig-client/ BOOKKEEPER-44: Reuse publish channel to default server to avoid too many connect requests to default server when lots of producers came in same time (Sijie Guo via breed) BOOKKEEPER-109: Add documentation to describe how bookies flushes data (Sijie Guo via fpj) BOOKKEEPER-119: Keys in configuration have inconsistent style (ivank via fpj)