blob: 26ba975f64552693d2db4186c1fe778a75988461 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.0">
<title data-rh="true">Apache BookKeeper</title><meta data-rh="true" property="og:title" content="Apache BookKeeper"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://bookkeeper.apache.org/release-notes"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" name="description" content="4.17.0"><meta data-rh="true" property="og:description" content="4.17.0"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://bookkeeper.apache.org/release-notes"><link data-rh="true" rel="alternate" href="https://bookkeeper.apache.org/release-notes" hreflang="en"><link data-rh="true" rel="alternate" href="https://bookkeeper.apache.org/release-notes" hreflang="x-default"><link rel="stylesheet" href="/assets/css/styles.49914aab.css">
<link rel="preload" href="/assets/js/runtime~main.99a29ea0.js" as="script">
<link rel="preload" href="/assets/js/main.812b2dbb.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/bk-logo.svg" alt="Apache Bookkeeper" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/bk-logo.svg" alt="Apache Bookkeeper" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache BookKeeper</b></a><a class="navbar__item navbar__link" href="/docs/overview/">Documentation</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/community/mailing-lists">Mailing lists</a></li><li><a class="dropdown__link" href="/community/slack">Slack</a></li><li><a href="https://github.com/apache/bookkeeper/issues" target="_blank" rel="noopener noreferrer" class="dropdown__link">Github issues<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a class="dropdown__link" href="/community/releases">Release management</a></li><li><a class="dropdown__link" href="/community/meeting">Community meetings</a></li><li><a class="dropdown__link" href="/community/contributing">Contribution guide</a></li><li><a class="dropdown__link" href="/community/coding-guide">Coding guide</a></li><li><a class="dropdown__link" href="/community/testing">Testing guide</a></li><li><a class="dropdown__link" href="/community/issue-report">Issue report guide</a></li><li><a class="dropdown__link" href="/community/release-guide">Release guide</a></li><li><a class="dropdown__link" href="/community/presentations">Presentations</a></li><li><a class="dropdown__link" href="/community/bookkeeper-proposals">BookKeeper proposals (BP)</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Project</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/project/who">Who are we?</a></li><li><a class="dropdown__link" href="/project/bylaws">Bylaws</a></li><li><a href="https://apache.org/licenses" target="_blank" rel="noopener noreferrer" class="dropdown__link">License<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a class="dropdown__link" href="/project/privacy">Privacy policy</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/overview/">4.16.5</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/overview/">Next</a></li><li><a class="dropdown__link" href="/docs/overview/">4.16.5</a></li><li><a class="dropdown__link" href="/docs/4.15.5/overview/">4.15.5</a></li><li><a class="dropdown__link" href="/docs/4.14.8/overview/">4.14.8</a></li><li><a class="dropdown__link" href="/docs/4.13.0/overview/">4.13.0</a></li><li><a class="dropdown__link" href="/docs/4.12.1/overview/">4.12.1</a></li><li><a class="dropdown__link" href="/docs/4.11.1/overview/">4.11.1</a></li><li><a class="dropdown__link" href="/docs/4.10.0/overview/">4.10.0</a></li><li><a class="dropdown__link" href="/docs/4.9.2/overview/">4.9.2</a></li><li><a class="dropdown__link" href="/docs/4.8.2/overview/">4.8.2</a></li><li><a class="dropdown__link" href="/docs/4.7.3/overview/">4.7.3</a></li><li><a class="dropdown__link" href="/docs/4.6.2/overview/">4.6.2</a></li><li><a class="dropdown__link" href="/docs/4.5.1/overview/">4.5.1</a></li></ul></div><a class="navbar__item navbar__link" href="/releases">Download</a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><main class="container container--fluid margin-vert--lg"><div class="row mdxPageWrapper_j9I6"><div class="col col--8"><article><h1>Release notes</h1><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4170">4.17.0<a href="#4170" class="hash-link" aria-label="Direct link to 4.17.0" title="Direct link to 4.17.0"></a></h2><p>Release 4.17.0 includes multiple important features, improvements, bug fixes and some dependencies CVE fixes.</p><p>The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes">Breaking Changes<a href="#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes"></a></h3><p>No breaking changes. Some defaults are different, but overall there are no compatibility concerns.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features"></a></h3><ul><li>BP-62 Batch Read API</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="notable-changes">Notable changes<a href="#notable-changes" class="hash-link" aria-label="Direct link to Notable changes" title="Direct link to Notable changes"></a></h3><ul><li>Enable reorder read sequence for bk client by default <a href="https://github.com/apache/bookkeeper/pull/4139" target="_blank" rel="noopener noreferrer">PR #4139</a> </li><li>Fix some metrics generated by prometheus client without type info <a href="https://github.com/apache/bookkeeper/pull/3927" target="_blank" rel="noopener noreferrer">PR #3927</a> </li><li>Fix arbitrary file upload vulnerability with httpServerEnabled <a href="https://github.com/apache/bookkeeper/pull/3982" target="_blank" rel="noopener noreferrer">PR #3982</a> </li><li>Enable kv logs in log4j configuration <a href="https://github.com/apache/bookkeeper/pull/3986" target="_blank" rel="noopener noreferrer">PR #3986</a> </li><li>Make compatible between DefaultEntryLogger and DirectEntryLogger <a href="https://github.com/apache/bookkeeper/pull/4041" target="_blank" rel="noopener noreferrer">PR #4041</a> </li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookie">Bookie<a href="#bookie" class="hash-link" aria-label="Direct link to Bookie" title="Direct link to Bookie"></a></h4><ul><li>Fix bug of negative JournalQueueSize <a href="https://github.com/apache/bookkeeper/pull/4077" target="_blank" rel="noopener noreferrer">PR #4077</a> </li><li>Fix compaction throttle imprecise <a href="https://github.com/apache/bookkeeper/pull/3192" target="_blank" rel="noopener noreferrer">PR #3192</a> </li><li>Fix data lost when configured multiple ledger directories <a href="https://github.com/apache/bookkeeper/pull/3329" target="_blank" rel="noopener noreferrer">PR #3329</a> </li><li>Try to use jdk api to create hardlink when rename file when compaction. <a href="https://github.com/apache/bookkeeper/pull/3876" target="_blank" rel="noopener noreferrer">PR #3876</a> </li><li>[feature][server]<!-- --> add dbStorage_readAheadCacheBatchBytesSize properties when read ahead entries <a href="https://github.com/apache/bookkeeper/pull/3895" target="_blank" rel="noopener noreferrer">PR #3895</a> </li><li>Fix keys leak in EntryLocationIndex when ledgersToDelete is empty <a href="https://github.com/apache/bookkeeper/pull/3903" target="_blank" rel="noopener noreferrer">PR #3903</a> </li><li>Fix garbage collection blocked by runtime exception <a href="https://github.com/apache/bookkeeper/pull/3901" target="_blank" rel="noopener noreferrer">PR #3901</a> </li><li>Skip sync the RocksDB when no changes <a href="https://github.com/apache/bookkeeper/pull/3904" target="_blank" rel="noopener noreferrer">PR #3904</a> </li><li>Enable PCBC completionObjects autoShrink to reduce memory usage and gc <a href="https://github.com/apache/bookkeeper/pull/3913" target="_blank" rel="noopener noreferrer">PR #3913</a> </li><li>[Fix]<!-- --> Recycle dropping read-write requests when various exceptions happened <a href="https://github.com/apache/bookkeeper/pull/3912" target="_blank" rel="noopener noreferrer">PR #3912</a> </li><li>Fix ledger replicated failed blocks bookie decommission process <a href="https://github.com/apache/bookkeeper/pull/3917" target="_blank" rel="noopener noreferrer">PR #3917</a> </li><li>Support skip invalid journal record in replying journal stage <a href="https://github.com/apache/bookkeeper/pull/3956" target="_blank" rel="noopener noreferrer">PR #3956</a> </li><li>Avoid compaction to trigger extra flushes DbLedgerStorage <a href="https://github.com/apache/bookkeeper/pull/3959" target="_blank" rel="noopener noreferrer">PR #3959</a> </li><li>Fix memory leak of direct memory in direct memory entry logger. <a href="https://github.com/apache/bookkeeper/pull/3983" target="_blank" rel="noopener noreferrer">PR #3983</a> </li><li>Unify ByteBufAllocator for the DirectIO component <a href="https://github.com/apache/bookkeeper/pull/3985" target="_blank" rel="noopener noreferrer">PR #3985</a> </li><li>Print compaction progress <a href="https://github.com/apache/bookkeeper/pull/4071" target="_blank" rel="noopener noreferrer">PR #4071</a> </li><li>Optimize bookie decommission check wait interval <a href="https://github.com/apache/bookkeeper/pull/4070" target="_blank" rel="noopener noreferrer">PR #4070</a> </li><li>Fix trigger GC not work <a href="https://github.com/apache/bookkeeper/pull/3998" target="_blank" rel="noopener noreferrer">PR #3998</a> </li><li>Allow to set max operation numbers in a single rocksdb batch <a href="https://github.com/apache/bookkeeper/pull/4044" target="_blank" rel="noopener noreferrer">PR #4044</a> </li><li>Add read failed log for ledger checker. <a href="https://github.com/apache/bookkeeper/pull/4010" target="_blank" rel="noopener noreferrer">PR #4010</a> </li><li>Fix read write request leak when executor throw <code>RejectedExecutionException</code> <a href="https://github.com/apache/bookkeeper/pull/4024" target="_blank" rel="noopener noreferrer">PR #4024</a> </li><li>Improve DefaultEntryLogger read performance. <a href="https://github.com/apache/bookkeeper/pull/4038" target="_blank" rel="noopener noreferrer">PR #4038</a> </li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="client">Client<a href="#client" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client"></a></h4><ul><li>[Bug]<!-- --> Always one orphan ledger is created <a href="https://github.com/apache/bookkeeper/pull/3813" target="_blank" rel="noopener noreferrer">PR #3813</a> </li><li>Fix checksum calculation bug when the payload is a CompositeByteBuf with readerIndex &gt; 0 <a href="https://github.com/apache/bookkeeper/pull/4196" target="_blank" rel="noopener noreferrer">PR #4196</a> </li><li>Fix no known bookies after reset racks for all BKs <a href="https://github.com/apache/bookkeeper/pull/4128" target="_blank" rel="noopener noreferrer">PR #4128</a> </li><li>Fix issue with binary compatibility with older grpc versions at runtime in the client <a href="https://github.com/apache/bookkeeper/pull/3997" target="_blank" rel="noopener noreferrer">PR #3997</a> </li><li>Entry write support local node region aware placement policy <a href="https://github.com/apache/bookkeeper/pull/4063" target="_blank" rel="noopener noreferrer">PR #4063</a> </li><li>Rackaware placement policy support local node awareness by hostname <a href="https://github.com/apache/bookkeeper/pull/4057" target="_blank" rel="noopener noreferrer">PR #4057</a> </li><li>Use netty-bom for aligning netty library versions, add epoll for linux-aarch_64 <a href="https://github.com/apache/bookkeeper/pull/4204" target="_blank" rel="noopener noreferrer">PR #4204</a> </li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="autorecovery">AutoRecovery<a href="#autorecovery" class="hash-link" aria-label="Direct link to AutoRecovery" title="Direct link to AutoRecovery"></a></h4><ul><li>Make AutoRecovery enable stickyReadS as default. <a href="https://github.com/apache/bookkeeper/pull/4125" target="_blank" rel="noopener noreferrer">PR #4125</a> </li><li>Support retry logic for auto recovery <a href="https://github.com/apache/bookkeeper/pull/3799" target="_blank" rel="noopener noreferrer">PR #3799</a> 0</li><li>Fix auditor elector executor block problem. <a href="https://github.com/apache/bookkeeper/pull/4165" target="_blank" rel="noopener noreferrer">PR #4165</a> </li><li>Fix the autorecovery failed replicate by add entry fenced error <a href="https://github.com/apache/bookkeeper/pull/4163" target="_blank" rel="noopener noreferrer">PR #4163</a> </li><li>Fix auditor thread leak problem. <a href="https://github.com/apache/bookkeeper/pull/4162" target="_blank" rel="noopener noreferrer">PR #4162</a> </li><li>AutoRecovery supports batch read <a href="https://github.com/apache/bookkeeper/pull/4211" target="_blank" rel="noopener noreferrer">PR #4211</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="others">Others<a href="#others" class="hash-link" aria-label="Direct link to Others" title="Direct link to Others"></a></h4><ul><li>Added CLI command to start state store service without a bookie <a href="https://github.com/apache/bookkeeper/pull/2648" target="_blank" rel="noopener noreferrer">PR #2648</a></li><li>Add ensemble relocation command which adheres to placement policy <a href="https://github.com/apache/bookkeeper/pull/2931" target="_blank" rel="noopener noreferrer">PR #2931</a> </li><li>Tuning pool concurrency <a href="https://github.com/apache/bookkeeper/pull/3432" target="_blank" rel="noopener noreferrer">PR #3432</a> </li><li>Issue 4136: Fix logging configurations are broken in docker image <a href="https://github.com/apache/bookkeeper/pull/4137" target="_blank" rel="noopener noreferrer">PR #4137</a> </li><li>[release]<!-- --> Force to use linux/amd64 to build release <a href="https://github.com/apache/bookkeeper/pull/4060" target="_blank" rel="noopener noreferrer">PR #4060</a> </li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-changes">Dependency changes<a href="#dependency-changes" class="hash-link" aria-label="Direct link to Dependency changes" title="Direct link to Dependency changes"></a></h3><p>Upgraded notable dependencies and address CVEs, including:</p><ul><li>Upgrade snappy-java to address multiple CVEs <a href="https://github.com/apache/bookkeeper/pull/3993" target="_blank" rel="noopener noreferrer">PR #3993</a> </li><li>Upgrade grpc and protobuf to address CVE-2023-32732 <a href="https://github.com/apache/bookkeeper/pull/3992" target="_blank" rel="noopener noreferrer">PR #3992</a> </li><li>Upgrade Zookeeper to 3.8.3 to address CVE-2023-44981 <a href="https://github.com/apache/bookkeeper/pull/4112" target="_blank" rel="noopener noreferrer">PR #4112</a> </li><li>Upgrade Netty to 4.1.107.Final and io_uring to 0.0.25.Final <a href="https://github.com/apache/bookkeeper/pull/4224" target="_blank" rel="noopener noreferrer">PR #4224</a> </li><li>Bump org.apache.commons:commons-compress from 1.21 to 1.26.0 <a href="https://github.com/apache/bookkeeper/pull/4214" target="_blank" rel="noopener noreferrer">PR #4214</a> </li><li>Update datasketches version from 0.8.3 to 3.2.0 <a href="https://github.com/apache/bookkeeper/pull/3264" target="_blank" rel="noopener noreferrer">PR #3264</a> </li><li>Issue 3567: Upgrade rocksdb version to avoid checksum mismatch error <a href="https://github.com/apache/bookkeeper/pull/3568" target="_blank" rel="noopener noreferrer">PR #3568</a> </li><li>fix(sec): upgrade commons-codec to 1.13 <a href="https://github.com/apache/bookkeeper/pull/3508" target="_blank" rel="noopener noreferrer">PR #3508</a> </li><li>Remove avro, hadoop-auth and jersey-json dependencies from hadoop-common to resolve CVE-2019-10202, CVE-2023-1370 and CVE-2022-45685 <a href="https://github.com/apache/bookkeeper/pull/3911" target="_blank" rel="noopener noreferrer">PR #3911</a> </li><li>Upgrade docker base image to resolve CVE-2023-0286 <a href="https://github.com/apache/bookkeeper/pull/3916" target="_blank" rel="noopener noreferrer">PR #3916</a> </li><li>Upgrade bc-fips to 1.0.2.4 to fix CVE-2022-45146 <a href="https://github.com/apache/bookkeeper/pull/3915" target="_blank" rel="noopener noreferrer">PR #3915</a> </li><li>Upgrade jetty version to 9.4.51.v20230217 <a href="https://github.com/apache/bookkeeper/pull/3937" target="_blank" rel="noopener noreferrer">PR #3937</a> </li><li>Bump guava version from 31.0.1-jre to 32.0.1-jre <a href="https://github.com/apache/bookkeeper/pull/4008" target="_blank" rel="noopener noreferrer">PR #4008</a> </li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details">Details<a href="#details" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+milestone%3A4.17.0+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+milestone%3A4.17.0+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4165">4.16.5<a href="#4165" class="hash-link" aria-label="Direct link to 4.16.5" title="Direct link to 4.16.5"></a></h2><p>Release 4.16.5 includes multiple bug fixes and few dependency updates.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.16.5 if you are using 4.16.x.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights">Highlights<a href="#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs">Bugs<a href="#bugs" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fixed creation of temporary dir in NativeUtils <a href="https://github.com/apache/bookkeeper/pull/4262" target="_blank" rel="noopener noreferrer">PR #4262</a> </li><li>Fix error stack track may expose to external user <a href="https://github.com/apache/bookkeeper/pull/4223" target="_blank" rel="noopener noreferrer">PR #4223</a></li><li>Add filename check for unTar <a href="https://github.com/apache/bookkeeper/pull/4222" target="_blank" rel="noopener noreferrer">PR #4222</a></li><li>Fix uncontrolled data used in path expression <a href="https://github.com/apache/bookkeeper/pull/4221" target="_blank" rel="noopener noreferrer">PR #4221</a></li><li>Set metrics endpoint content-type <a href="https://github.com/apache/bookkeeper/pull/4208" target="_blank" rel="noopener noreferrer">PR #4208</a></li><li>Fix checksum calculation bug when the payload is a CompositeByteBuf with readerIndex &gt; 0 <a href="https://github.com/apache/bookkeeper/pull/4205" target="_blank" rel="noopener noreferrer">PR #4205</a></li><li>Fix yaml and dockerfile <a href="https://github.com/apache/bookkeeper/pull/4186" target="_blank" rel="noopener noreferrer">PR #4186</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates">Dependency updates<a href="#dependency-updates" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Bump org.apache.commons:commons-compress from 1.21 to 1.26.0 <a href="https://github.com/apache/bookkeeper/pull/4214" target="_blank" rel="noopener noreferrer">PR #4214</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-1">Details<a href="#details-1" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.5+is%3Amerged+" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.5+is%3Amerged+</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4164">4.16.4<a href="#4164" class="hash-link" aria-label="Direct link to 4.16.4" title="Direct link to 4.16.4"></a></h2><p>Release 4.16.4 includes multiple bug fixes and improvements, also we have a few dependency updates.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.16.4 if you are using 4.16.x.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-1">Highlights<a href="#highlights-1" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-1">Bugs<a href="#bugs-1" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix calculate checkSum when using Java9IntHash <a href="https://github.com/apache/bookkeeper/pull/4140" target="_blank" rel="noopener noreferrer">PR #4140</a></li><li>Fix the autorecovery failed replicate by add entry fenced error <a href="https://github.com/apache/bookkeeper/pull/4163" target="_blank" rel="noopener noreferrer">PR #4163</a></li><li>Fixing memory leak error when using DirectEntryLogger <a href="https://github.com/apache/bookkeeper/pull/4135" target="_blank" rel="noopener noreferrer">PR #4135</a></li><li>Fix bug of negative JournalQueueSize <a href="https://github.com/apache/bookkeeper/pull/4077" target="_blank" rel="noopener noreferrer">PR #4077</a></li><li>Fix NoSuchElementException when rereplicate empty ledgers <a href="https://github.com/apache/bookkeeper/pull/4039" target="_blank" rel="noopener noreferrer">PR #4039</a></li><li>Change the method getUnderreplicatedFragments to the package private <a href="https://github.com/apache/bookkeeper/pull/4174" target="_blank" rel="noopener noreferrer">PR #4174</a></li><li>Fix auditor elector executor block problem. <a href="https://github.com/apache/bookkeeper/pull/4165" target="_blank" rel="noopener noreferrer">PR #4165</a></li><li>Fix auditor thread leak problem. <a href="https://github.com/apache/bookkeeper/pull/4162" target="_blank" rel="noopener noreferrer">PR #4162</a></li><li>Use Flaky flag to skip testBookieServerZKSessionExpireBehaviour test <a href="https://github.com/apache/bookkeeper/pull/4144" target="_blank" rel="noopener noreferrer">PR #4144</a></li><li>Add ledgersCount.incrementAndGet in setExplicitLac function <a href="https://github.com/apache/bookkeeper/pull/4138" target="_blank" rel="noopener noreferrer">PR #4138</a></li><li>Fix no known bookies after reset racks for all BKs <a href="https://github.com/apache/bookkeeper/pull/4128" target="_blank" rel="noopener noreferrer">PR #4128</a></li><li>Fix a slow gc thread shutdown when compacting <a href="https://github.com/apache/bookkeeper/pull/4127" target="_blank" rel="noopener noreferrer">PR #4127</a></li><li>Remove the unused logs in the CleanupLedgerManager.recordPromise <a href="https://github.com/apache/bookkeeper/pull/4121" target="_blank" rel="noopener noreferrer">PR #4121</a></li><li>Fix Flaky-test: HandleFailuresTest.testHandleFailureBookieNotInWriteSet <a href="https://github.com/apache/bookkeeper/pull/4110" target="_blank" rel="noopener noreferrer">PR #4110</a></li><li>Ignore the empty <code>perRegionPlacement</code> when RegionAwareEnsemblePlacementPolicy#newEnsemble <a href="https://github.com/apache/bookkeeper/pull/4106" target="_blank" rel="noopener noreferrer">PR #4106</a></li><li>Fix LedgerHandle <code>ensembleChangeCounter</code> not used. <a href="https://github.com/apache/bookkeeper/pull/4103" target="_blank" rel="noopener noreferrer">PR #4103</a></li><li>Tune the TestReplicationWorker test. <a href="https://github.com/apache/bookkeeper/pull/4093" target="_blank" rel="noopener noreferrer">PR #4093</a></li><li>Make AuditorBookieTest#waitForNewAuditor stronger. <a href="https://github.com/apache/bookkeeper/pull/4078" target="_blank" rel="noopener noreferrer">PR #4078</a></li><li>Print compaction progress <a href="https://github.com/apache/bookkeeper/pull/4071" target="_blank" rel="noopener noreferrer">PR #4071</a></li><li>Fix readEntry parameter order <a href="https://github.com/apache/bookkeeper/pull/4059" target="_blank" rel="noopener noreferrer">PR #4059</a></li><li>Skip sync the RocksDB when no changes <a href="https://github.com/apache/bookkeeper/pull/3904" target="_blank" rel="noopener noreferrer">PR #3904</a></li><li>Try to use jdk api to create hardlink when rename file when compaction. <a href="https://github.com/apache/bookkeeper/pull/3876" target="_blank" rel="noopener noreferrer">PR #3876</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-1">Dependency updates<a href="#dependency-updates-1" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade Zookeeper to 3.8.3 to address CVE-2023-44981 <a href="https://github.com/apache/bookkeeper/pull/4112" target="_blank" rel="noopener noreferrer">PR #4112</a></li><li>Update Jetty dependency <a href="https://github.com/apache/bookkeeper/pull/4141" target="_blank" rel="noopener noreferrer">PR #4141</a></li><li>Upgrade bc-fips to 1.0.2.4 to fix CVE-2022-45146 <a href="https://github.com/apache/bookkeeper/pull/3915" target="_blank" rel="noopener noreferrer">PR #3915</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-2">Details<a href="#details-2" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.4+is%3Amerged+" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.4+is%3Amerged+</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4155">4.15.5<a href="#4155" class="hash-link" aria-label="Direct link to 4.15.5" title="Direct link to 4.15.5"></a></h2><p>Release 4.15.5 includes multiple bug fixes and improvements, also we have a few dependency updates.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.5 if you are using 4.15.x.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-2">Highlights<a href="#highlights-2" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The previous release is using ARM platform compile, that means that the JNI libraries are only present for MacOS
and this will incur in a performance degradation (eg: the CRC libraries) or not working (in case of cpu affinity).</p><p>The build platform now is tagged with <code>linux/amd64</code> by this <a href="https://github.com/apache/bookkeeper/pull/4060" target="_blank" rel="noopener noreferrer">PR #4060</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-2">Bugs<a href="#bugs-2" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix no known bookies after reset racks for all BKs <a href="https://github.com/apache/bookkeeper/pull/4128" target="_blank" rel="noopener noreferrer">PR #4128</a></li><li>Fix AutoCloseableLifecycleComponent close exception log <a href="https://github.com/apache/bookkeeper/pull/4042" target="_blank" rel="noopener noreferrer">PR #4042</a></li><li>Fix NoSuchElementException when rereplicate empty ledgers <a href="https://github.com/apache/bookkeeper/pull/4039" target="_blank" rel="noopener noreferrer">PR #4039</a></li><li>Fix deletedLedgers count <a href="https://github.com/apache/bookkeeper/pull/4026" target="_blank" rel="noopener noreferrer">PR #4026</a></li><li>Fix read write request leak when executor throw <code>RejectedExecutionException</code> <a href="https://github.com/apache/bookkeeper/pull/4024" target="_blank" rel="noopener noreferrer">PR #4024</a></li><li>Recycle LongWrapper finally to avoid memory leak <a href="https://github.com/apache/bookkeeper/pull/4007" target="_blank" rel="noopener noreferrer">PR #4007</a></li><li>Fix trigger GC not work <a href="https://github.com/apache/bookkeeper/pull/3998" target="_blank" rel="noopener noreferrer">PR #3998</a></li><li>Fix arbitrary file upload vulnerability with httpServerEnabled <a href="https://github.com/apache/bookkeeper/pull/3982" target="_blank" rel="noopener noreferrer">PR #3982</a></li><li>Clear channel when channelInactive <a href="https://github.com/apache/bookkeeper/pull/3966" target="_blank" rel="noopener noreferrer">PR #3966</a></li><li>Fix npe when iterate pendingLedgersUpdates and pendingDeletedLedgers. <a href="https://github.com/apache/bookkeeper/pull/3955" target="_blank" rel="noopener noreferrer">PR #3955</a></li><li>Fix some metrics generated by prometheus client without type info <a href="https://github.com/apache/bookkeeper/pull/3927" target="_blank" rel="noopener noreferrer">PR #3927</a></li><li>Fix ledger replicated failed blocks bookie decommission process <a href="https://github.com/apache/bookkeeper/pull/3917" target="_blank" rel="noopener noreferrer">PR #3917</a></li><li>Recycle dropping read-write requests when various exceptions happened <a href="https://github.com/apache/bookkeeper/pull/3912" target="_blank" rel="noopener noreferrer">PR #3912</a></li><li>SingleDirectoryDbLedgerStorage#flushMutex does not release lock on all exception paths <a href="https://github.com/apache/bookkeeper/pull/3909" target="_blank" rel="noopener noreferrer">PR #3909</a></li><li>Fix ReclaimedSpaceViaDeletes stats incorrect problem. <a href="https://github.com/apache/bookkeeper/pull/3906" target="_blank" rel="noopener noreferrer">PR #3906</a></li><li>Fix keys leak in EntryLocationIndex when ledgersToDelete is empty <a href="https://github.com/apache/bookkeeper/pull/3903" target="_blank" rel="noopener noreferrer">PR #3903</a></li><li>Fix garbage collection blocked by runtime exception <a href="https://github.com/apache/bookkeeper/pull/3901" target="_blank" rel="noopener noreferrer">PR #3901</a></li><li>Return activeLogChannel if new create <a href="https://github.com/apache/bookkeeper/pull/3894" target="_blank" rel="noopener noreferrer">PR #3894</a></li><li>Modify incorrect rocksDB config level_compaction_dynamic_level_bytes to CFOptions <a href="https://github.com/apache/bookkeeper/pull/3860" target="_blank" rel="noopener noreferrer">PR #3860</a></li><li>Fix ReadEntryProcessor v2 SchedulingDelayStats <a href="https://github.com/apache/bookkeeper/pull/3758" target="_blank" rel="noopener noreferrer">PR #3758</a></li><li>Fix data lost when configured multiple ledger directories <a href="https://github.com/apache/bookkeeper/pull/3329" target="_blank" rel="noopener noreferrer">PR #3329</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements">Improvements<a href="#improvements" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Issue 4126: Fix a slow gc thread shutdown when compacting <a href="https://github.com/apache/bookkeeper/pull/4127" target="_blank" rel="noopener noreferrer">PR #4127</a></li><li>Remove the unused logs in the CleanupLedgerManager.recordPromise <a href="https://github.com/apache/bookkeeper/pull/4121" target="_blank" rel="noopener noreferrer">PR #4121</a></li><li>Ignore the empty <code>perRegionPlacement</code> when RegionAwareEnsemblePlacementPolicy#newEnsemble <a href="https://github.com/apache/bookkeeper/pull/4106" target="_blank" rel="noopener noreferrer">PR #4106</a></li><li>Print compaction progress <a href="https://github.com/apache/bookkeeper/pull/4071" target="_blank" rel="noopener noreferrer">PR #4071</a></li><li>Force to use linux/amd64 to build release <a href="https://github.com/apache/bookkeeper/pull/4060" target="_blank" rel="noopener noreferrer">PR #4060</a></li><li>Remove underreplicaiton callback <a href="https://github.com/apache/bookkeeper/pull/4058" target="_blank" rel="noopener noreferrer">PR #4058</a></li><li>Allow to set max operation numbers in a single rocksdb batch <a href="https://github.com/apache/bookkeeper/pull/4044" target="_blank" rel="noopener noreferrer">PR #4044</a></li><li>Change pendingDeletedLedgers as ConcurrentHashSet <a href="https://github.com/apache/bookkeeper/pull/3989" target="_blank" rel="noopener noreferrer">PR #3989</a></li><li>Avoid compaction to trigger extra flushes DbLedgerStorage <a href="https://github.com/apache/bookkeeper/pull/3959" target="_blank" rel="noopener noreferrer">PR #3959</a></li><li>Support skip invalid journal record in replying journal stage <a href="https://github.com/apache/bookkeeper/pull/3956" target="_blank" rel="noopener noreferrer">PR #3956</a></li><li>Optimize getEntryLogMetadata <a href="https://github.com/apache/bookkeeper/pull/3948" target="_blank" rel="noopener noreferrer">PR #3948</a></li><li>drop invalid entryFormat arg from shell command <a href="https://github.com/apache/bookkeeper/pull/3938" target="_blank" rel="noopener noreferrer">PR #3938</a></li><li>Enable PCBC completionObjects autoShrink to reduce memory usage and gc <a href="https://github.com/apache/bookkeeper/pull/3913" target="_blank" rel="noopener noreferrer">PR #3913</a></li><li>Prevent transit to writable mode when forceReadOnly mode is active <a href="https://github.com/apache/bookkeeper/pull/3881" target="_blank" rel="noopener noreferrer">PR #3881</a></li><li>Make read entry request recyclable <a href="https://github.com/apache/bookkeeper/pull/3842" target="_blank" rel="noopener noreferrer">PR #3842</a></li><li>Fixed the pivot selection in the group quick-sort <a href="https://github.com/apache/bookkeeper/pull/3800" target="_blank" rel="noopener noreferrer">PR #3800</a></li><li>Execute clean indexes in finally <a href="https://github.com/apache/bookkeeper/pull/3772" target="_blank" rel="noopener noreferrer">PR #3772</a></li><li>Add small files check in garbage collection <a href="https://github.com/apache/bookkeeper/pull/3631" target="_blank" rel="noopener noreferrer">PR #3631</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-2">Dependency updates<a href="#dependency-updates-2" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Update Jetty dependency <a href="https://github.com/apache/bookkeeper/pull/4141" target="_blank" rel="noopener noreferrer">PR #4141</a></li><li>Bump guava version from 31.0.1-jre to 32.0.1-jre <a href="https://github.com/apache/bookkeeper/pull/4008" target="_blank" rel="noopener noreferrer">PR #4008</a></li><li>Upgrade snappy-java to address multiple CVEs <a href="https://github.com/apache/bookkeeper/pull/3993" target="_blank" rel="noopener noreferrer">PR #3993</a></li><li>Upgrade grpc and protobuf to address CVE-2023-32732 <a href="https://github.com/apache/bookkeeper/pull/3992" target="_blank" rel="noopener noreferrer">PR #3992</a></li><li>Downgrade grpc and protobuf to avoid introducing breaking change <a href="https://github.com/apache/bookkeeper/pull/4001" target="_blank" rel="noopener noreferrer">PR #4001</a></li><li>Fix issue with binary compatibility with older grpc versions at runtime in the client <a href="https://github.com/apache/bookkeeper/pull/3997" target="_blank" rel="noopener noreferrer">PR #3997</a></li><li>Upgrade jetty version to 9.4.51.v20230217 <a href="https://github.com/apache/bookkeeper/pull/3937" target="_blank" rel="noopener noreferrer">PR #3937</a></li><li>Upgrade docker base image to resolve CVE-2023-0286 <a href="https://github.com/apache/bookkeeper/pull/3916" target="_blank" rel="noopener noreferrer">PR #3916</a></li><li>Upgrade bc-fips to 1.0.2.4 to fix CVE-2022-45146 <a href="https://github.com/apache/bookkeeper/pull/3915" target="_blank" rel="noopener noreferrer">PR #3915</a></li><li>Remove avro, hadoop-auth and jersey-json dependencies from hadoop-common to resolve CVE-2019-10202, CVE-2023-1370 and CVE-2022-45685 <a href="https://github.com/apache/bookkeeper/pull/3911" target="_blank" rel="noopener noreferrer">PR #3911</a></li><li>Sync dependency version with source version in license <a href="https://github.com/apache/bookkeeper/pull/3633" target="_blank" rel="noopener noreferrer">PR #3633</a></li><li>Bump grpc from 1.45.1 to 1.47.0, solve dependency check FP <a href="https://github.com/apache/bookkeeper/pull/3305" target="_blank" rel="noopener noreferrer">PR #3305</a></li><li>Optimize log4j dependency in Bookkeeper <a href="https://github.com/apache/bookkeeper/pull/3892" target="_blank" rel="noopener noreferrer">PR #3892</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-3">Details<a href="#details-3" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.15.5+is%3Aclosed+" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.15.5+is%3Aclosed+</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4163">4.16.3<a href="#4163" class="hash-link" aria-label="Direct link to 4.16.3" title="Direct link to 4.16.3"></a></h2><p>Rlease 4.16.3 includes multiple bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.16.3.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-3">Highlights<a href="#highlights-3" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-3">Bugs<a href="#bugs-3" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix AutoCloseableLifecycleComponent close exception log <a href="https://github.com/apache/bookkeeper/pull/4042" target="_blank" rel="noopener noreferrer">PR #4042</a></li><li>Make compatible between DefaultEntryLogger and DirectEntryLogger <a href="https://github.com/apache/bookkeeper/pull/4041" target="_blank" rel="noopener noreferrer">PR #4041</a></li><li>Fix deletedLedgers count <a href="https://github.com/apache/bookkeeper/pull/4026" target="_blank" rel="noopener noreferrer">PR #4026</a></li><li>Fix read write request leak when executor throw <code>RejectedExecutionException</code> <a href="https://github.com/apache/bookkeeper/pull/4024" target="_blank" rel="noopener noreferrer">PR #4024</a></li><li>Recycle LongWrapper finally to avoid memory leak <a href="https://github.com/apache/bookkeeper/pull/4007" target="_blank" rel="noopener noreferrer">PR #4007</a></li><li>Remove underreplicaiton callback <a href="https://github.com/apache/bookkeeper/pull/4058" target="_blank" rel="noopener noreferrer">PR #4058</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-1">Improvements<a href="#improvements-1" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Force to use linux/amd64 to build release <a href="https://github.com/apache/bookkeeper/pull/4060" target="_blank" rel="noopener noreferrer">PR #4060</a></li><li>Allow to set max operation numbers in a single rocksdb batch <a href="https://github.com/apache/bookkeeper/pull/4044" target="_blank" rel="noopener noreferrer">PR #4044</a></li><li>Change pendingDeletedLedgers as ConcurrentHashSet <a href="https://github.com/apache/bookkeeper/pull/3989" target="_blank" rel="noopener noreferrer">PR #3989</a></li><li>Enable kv logs in log4j configuration <a href="https://github.com/apache/bookkeeper/pull/3986" target="_blank" rel="noopener noreferrer">PR #3986</a></li><li>Support skip invalid journal record in replying journal stage <a href="https://github.com/apache/bookkeeper/pull/3956" target="_blank" rel="noopener noreferrer">PR #3956</a></li><li>Optimize getEntryLogMetadata <a href="https://github.com/apache/bookkeeper/pull/3948" target="_blank" rel="noopener noreferrer">PR #3948</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-3">Dependency updates<a href="#dependency-updates-3" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Bump guava version from 31.0.1-jre to 32.0.1-jre <a href="https://github.com/apache/bookkeeper/pull/4008" target="_blank" rel="noopener noreferrer">PR #4008</a></li><li>Upgrade Netty to 4.1.94.Final to address CVE-2023-34462 <a href="https://github.com/apache/bookkeeper/pull/3999" target="_blank" rel="noopener noreferrer">PR #3999</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-4">Details<a href="#details-4" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.3+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.3+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4148">4.14.8<a href="#4148" class="hash-link" aria-label="Direct link to 4.14.8" title="Direct link to 4.14.8"></a></h2><p>Release 4.14.8 includes multiple bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.8.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-4">Highlights<a href="#highlights-4" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-4">Bugs<a href="#bugs-4" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix data lost when configured multiple ledger directories <a href="https://github.com/apache/bookkeeper/pull/3329" target="_blank" rel="noopener noreferrer">PR #3329</a></li><li>Allow to set max operation numbers in a single rocksdb batch <a href="https://github.com/apache/bookkeeper/pull/4044" target="_blank" rel="noopener noreferrer">PR #4044</a></li><li>Recycle LongWrapper finally to avoid memory leak <a href="https://github.com/apache/bookkeeper/pull/4007" target="_blank" rel="noopener noreferrer">PR #4007</a></li><li>Fix arbitrary file upload vulnerability with httpServerEnabled <a href="https://github.com/apache/bookkeeper/pull/3982" target="_blank" rel="noopener noreferrer">PR #3982</a></li><li>Clear channel when channelInactive <a href="https://github.com/apache/bookkeeper/pull/3966" target="_blank" rel="noopener noreferrer">PR #3966</a></li><li>Fix npe when iterate pendingLedgersUpdates and pendingDeletedLedgers. <a href="https://github.com/apache/bookkeeper/pull/3955" target="_blank" rel="noopener noreferrer">PR #3955</a></li><li>Fix some metrics generated by prometheus client without type info <a href="https://github.com/apache/bookkeeper/pull/3927" target="_blank" rel="noopener noreferrer">PR #3927</a></li><li>Fix ledger replicated failed blocks bookie decommission process <a href="https://github.com/apache/bookkeeper/pull/3917" target="_blank" rel="noopener noreferrer">PR #3917</a></li><li>Recycle dropping read-write requests when various exceptions happened <a href="https://github.com/apache/bookkeeper/pull/3912" target="_blank" rel="noopener noreferrer">PR #3912</a></li><li>Fix SingleDirectoryDbLedgerStorage#flushMutex does not release lock on all exception paths <a href="https://github.com/apache/bookkeeper/pull/3909" target="_blank" rel="noopener noreferrer">PR #3909</a></li><li>Fix ReclaimedSpaceViaDeletes stats incorrect problem. <a href="https://github.com/apache/bookkeeper/pull/3906" target="_blank" rel="noopener noreferrer">PR #3906</a></li><li>Fix keys leak in EntryLocationIndex when ledgersToDelete is empty <a href="https://github.com/apache/bookkeeper/pull/3903" target="_blank" rel="noopener noreferrer">PR #3903</a></li><li>Fix garbage collection blocked by runtime exception <a href="https://github.com/apache/bookkeeper/pull/3901" target="_blank" rel="noopener noreferrer">PR #3901</a></li><li>Return activeLogChannel if new create <a href="https://github.com/apache/bookkeeper/pull/3894" target="_blank" rel="noopener noreferrer">PR #3894</a></li><li>Prevent transit to writable mode when forceReadOnly mode is active <a href="https://github.com/apache/bookkeeper/pull/3881" target="_blank" rel="noopener noreferrer">PR #3881</a></li><li>Execute clean indexes in finally <a href="https://github.com/apache/bookkeeper/pull/3772" target="_blank" rel="noopener noreferrer">PR #3772</a></li><li>Fix ReadEntryProcessor v2 SchedulingDelayStats <a href="https://github.com/apache/bookkeeper/pull/3758" target="_blank" rel="noopener noreferrer">PR #3758</a></li><li>Fix RegionAwareEnsemblePlacementPolicy.newEnsemble sometimes failed problem. <a href="https://github.com/apache/bookkeeper/pull/3725" target="_blank" rel="noopener noreferrer">PR #3725</a></li><li>Fix issue where checkAllLedgers could get stuck when read throttling is enabled <a href="https://github.com/apache/bookkeeper/pull/3655" target="_blank" rel="noopener noreferrer">PR #3655</a></li><li>fix duplicate typeline for prometheus type <a href="https://github.com/apache/bookkeeper/pull/3137" target="_blank" rel="noopener noreferrer">PR #3137</a></li><li>Fix deletedLedgers count <a href="https://github.com/apache/bookkeeper/pull/4026" target="_blank" rel="noopener noreferrer">PR #4026</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-2">Improvements<a href="#improvements-2" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Avoid compaction to trigger extra flushes DbLedgerStorage <a href="https://github.com/apache/bookkeeper/pull/3959" target="_blank" rel="noopener noreferrer">PR #3959</a></li><li>Add small files check in garbage collection <a href="https://github.com/apache/bookkeeper/pull/3631" target="_blank" rel="noopener noreferrer">PR #3631</a></li><li>Change pendingDeletedLedgers as ConcurrentHashSet <a href="https://github.com/apache/bookkeeper/pull/3989" target="_blank" rel="noopener noreferrer">PR #3989</a></li><li>Support skip invalid journal record in replying journal stage <a href="https://github.com/apache/bookkeeper/pull/3956" target="_blank" rel="noopener noreferrer">PR #3956</a></li><li>Use ReferenceCountUtil.release() instead of ReferenceCountUtil.safeRelease() <a href="https://github.com/apache/bookkeeper/pull/3798" target="_blank" rel="noopener noreferrer">PR #3798</a></li><li>Add logs for ensemble select failed <a href="https://github.com/apache/bookkeeper/pull/3779" target="_blank" rel="noopener noreferrer">PR #3779</a></li><li>New ensemble choose different rack first. <a href="https://github.com/apache/bookkeeper/pull/3721" target="_blank" rel="noopener noreferrer">PR #3721</a></li><li>Show result of isFenced in log <a href="https://github.com/apache/bookkeeper/pull/3678" target="_blank" rel="noopener noreferrer">PR #3678</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-4">Dependency updates<a href="#dependency-updates-4" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade rocksDB version to 6.29.4.1 <a href="https://github.com/apache/bookkeeper/pull/3947" target="_blank" rel="noopener noreferrer">PR #3947</a></li><li>Upgrade jetty version to 9.4.51.v20230217 <a href="https://github.com/apache/bookkeeper/pull/3937" target="_blank" rel="noopener noreferrer">PR #3937</a></li><li>Upgrade docker base image to resolve CVE-2023-0286 <a href="https://github.com/apache/bookkeeper/pull/3916" target="_blank" rel="noopener noreferrer">PR #3916</a></li><li>Remove avro, hadoop-auth and jersey-json dependencies from hadoop-common to resolve CVE-2019-10202, CVE-2023-1370 and CVE-2022-45685 <a href="https://github.com/apache/bookkeeper/pull/3911" target="_blank" rel="noopener noreferrer">PR #3911</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-5">Details<a href="#details-5" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.8+is%3Amerged" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.8+is%3Amerged</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4162">4.16.2<a href="#4162" class="hash-link" aria-label="Direct link to 4.16.2" title="Direct link to 4.16.2"></a></h2><p>Release 4.16.2 includes multiple bug fixes and some dependencies CVE fixes.</p><p><strong>The binaries were compiled for M1 and Apache BookKeeper users are NOT encouraged to upgrade to 4.16.2.</strong>
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-5">Highlights<a href="#highlights-5" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-5">Bugs<a href="#bugs-5" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix trigger GC not work <a href="https://github.com/apache/bookkeeper/pull/3998" target="_blank" rel="noopener noreferrer">PR #3998</a></li><li>Make slogger use current class <a href="https://github.com/apache/bookkeeper/pull/3994" target="_blank" rel="noopener noreferrer">PR #3994</a></li><li>Fix Journal without flush <a href="https://github.com/apache/bookkeeper/pull/3979" target="_blank" rel="noopener noreferrer">PR #3979</a></li><li>Fix npe when iterate pendingLedgersUpdates and pendingDeletedLedgers. <a href="https://github.com/apache/bookkeeper/pull/3955" target="_blank" rel="noopener noreferrer">PR #3955</a></li><li>Fix ledger replicated failed blocks bookie decommission process <a href="https://github.com/apache/bookkeeper/pull/3917" target="_blank" rel="noopener noreferrer">PR #3917</a></li><li>SingleDirectoryDbLedgerStorage#flushMutex does not release lock on all exception paths <a href="https://github.com/apache/bookkeeper/pull/3909" target="_blank" rel="noopener noreferrer">PR #3909</a></li><li>Fix ReclaimedSpaceViaDeletes stats incorrect problem. <a href="https://github.com/apache/bookkeeper/pull/3906" target="_blank" rel="noopener noreferrer">PR #3906</a></li><li>Fix keys leak in EntryLocationIndex when ledgersToDelete is empty <a href="https://github.com/apache/bookkeeper/pull/3903" target="_blank" rel="noopener noreferrer">PR #3903</a></li><li>Fix garbage collection blocked by runtime exception <a href="https://github.com/apache/bookkeeper/pull/3901" target="_blank" rel="noopener noreferrer">PR #3901</a></li><li>Always one orphan ledger is created <a href="https://github.com/apache/bookkeeper/pull/3813" target="_blank" rel="noopener noreferrer">PR #3813</a></li><li>Fix data lost when configured multiple ledger directories <a href="https://github.com/apache/bookkeeper/pull/3329" target="_blank" rel="noopener noreferrer">PR #3329</a></li><li>Fix memory leak of direct memory in direct memory entry logger. <a href="https://github.com/apache/bookkeeper/pull/3983" target="_blank" rel="noopener noreferrer">PR #3983</a></li><li>Fix wrong update checkAllLedgersTime when ledgerReplication disabled <a href="https://github.com/apache/bookkeeper/pull/3939" target="_blank" rel="noopener noreferrer">PR #3939</a></li><li>Fix some metrics generated by prometheus client without type info <a href="https://github.com/apache/bookkeeper/pull/3927" target="_blank" rel="noopener noreferrer">PR #3927</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-3">Improvements<a href="#improvements-3" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Unify ByteBufAllocator for the DirectIO component <a href="https://github.com/apache/bookkeeper/pull/3985" target="_blank" rel="noopener noreferrer">PR #3985</a></li><li>Fix arbitrary file upload vulnerability with httpServerEnabled <a href="https://github.com/apache/bookkeeper/pull/3982" target="_blank" rel="noopener noreferrer">PR #3982</a></li><li>Check indexBaseDir specified with ledgerBaseDir <a href="https://github.com/apache/bookkeeper/pull/3967" target="_blank" rel="noopener noreferrer">PR #3967</a></li><li>Clear channel when channelInactive <a href="https://github.com/apache/bookkeeper/pull/3966" target="_blank" rel="noopener noreferrer">PR #3966</a></li><li>Reduce unnecessary creation of ReplicationEnableCb objects <a href="https://github.com/apache/bookkeeper/pull/3960" target="_blank" rel="noopener noreferrer">PR #3960</a></li><li>Avoid compaction to trigger extra flushes DbLedgerStorage <a href="https://github.com/apache/bookkeeper/pull/3959" target="_blank" rel="noopener noreferrer">PR #3959</a></li><li>When the executor has been shut down, do not schedule task <a href="https://github.com/apache/bookkeeper/pull/3946" target="_blank" rel="noopener noreferrer">PR #3946</a></li><li>Drop invalid entryFormat arg from shell command <a href="https://github.com/apache/bookkeeper/pull/3938" target="_blank" rel="noopener noreferrer">PR #3938</a></li><li>Enable PCBC completionObjects autoShrink to reduce memory usage and gc <a href="https://github.com/apache/bookkeeper/pull/3913" target="_blank" rel="noopener noreferrer">PR #3913</a></li><li>Recycle dropping read-write requests when various exceptions happened <a href="https://github.com/apache/bookkeeper/pull/3912" target="_blank" rel="noopener noreferrer">PR #3912</a></li><li>Cleanup CbThreadFactory <a href="https://github.com/apache/bookkeeper/pull/3907" target="_blank" rel="noopener noreferrer">PR #3907</a></li><li>Return activeLogChannel if new create <a href="https://github.com/apache/bookkeeper/pull/3894" target="_blank" rel="noopener noreferrer">PR #3894</a></li><li>Prevent transit to writable mode when forceReadOnly mode is active <a href="https://github.com/apache/bookkeeper/pull/3881" target="_blank" rel="noopener noreferrer">PR #3881</a></li><li>Execute clean indexes in finally <a href="https://github.com/apache/bookkeeper/pull/3772" target="_blank" rel="noopener noreferrer">PR #3772</a></li><li>Use ChannelVoidPromise to avoid useless promise objects creation <a href="https://github.com/apache/bookkeeper/pull/3733" target="_blank" rel="noopener noreferrer">PR #3733</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-5">Dependency updates<a href="#dependency-updates-5" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade grpc and protobuf to address CVE-2023-32732 <a href="https://github.com/apache/bookkeeper/pull/3992" target="_blank" rel="noopener noreferrer">PR #3992</a></li><li>[Branch-4.16]<!-- --> Downgrade grpc and protobuf to avoid introducing breaking change <a href="https://github.com/apache/bookkeeper/pull/4001" target="_blank" rel="noopener noreferrer">PR #4001</a></li><li>Fix issue with binary compatibility with older grpc versions at runtime in the client <a href="https://github.com/apache/bookkeeper/pull/3997" target="_blank" rel="noopener noreferrer">PR #3997</a></li><li>Upgrade snappy-java to address multiple CVEs <a href="https://github.com/apache/bookkeeper/pull/3993" target="_blank" rel="noopener noreferrer">PR #3993</a></li><li>Upgrade Netty to 4.1.93.Final <a href="https://github.com/apache/bookkeeper/pull/3975" target="_blank" rel="noopener noreferrer">PR #3975</a></li><li>Upgrade jetty version to 9.4.51.v20230217 <a href="https://github.com/apache/bookkeeper/pull/3937" target="_blank" rel="noopener noreferrer">PR #3937</a></li><li>Upgrade docusaurus to 2.4.0 <a href="https://github.com/apache/bookkeeper/pull/3936" target="_blank" rel="noopener noreferrer">PR #3936</a></li><li>Upgrade docker base image to resolve CVE-2023-0286 <a href="https://github.com/apache/bookkeeper/pull/3916" target="_blank" rel="noopener noreferrer">PR #3916</a></li><li>Remove avro, hadoop-auth and jersey-json dependencies from hadoop-common to resolve CVE-2019-10202, CVE-2023-1370 and CVE-2022-45685 <a href="https://github.com/apache/bookkeeper/pull/3911" target="_blank" rel="noopener noreferrer">PR #3911</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="details-6">Details<a href="#details-6" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h4><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.2+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.2+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4161">4.16.1<a href="#4161" class="hash-link" aria-label="Direct link to 4.16.1" title="Direct link to 4.16.1"></a></h2><p>Release 4.16.1 includes one critical bug fix.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.16.1.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-6">Highlights<a href="#highlights-6" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-6">Bugs<a href="#bugs-6" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>DigestManager should not advance readerIndex <a href="https://github.com/apache/bookkeeper/pull/3919" target="_blank" rel="noopener noreferrer">PR #3919</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-7">Details<a href="#details-7" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.16.1+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4160">4.16.0<a href="#4160" class="hash-link" aria-label="Direct link to 4.16.0" title="Direct link to 4.16.0"></a></h2><p>Release 4.16.0 includes multiple important features, improvements, bug fixes and some dependencies CVE fixes.</p><p>Due to this version has one critical regression in the BookKeeper client, Apache BookKeeper users are encouraged
to skip this version and upgrade to 4.16.1.</p><p>The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes-1">Breaking Changes<a href="#breaking-changes-1" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes"></a></h3><ul><li>Change the API for org.apache.bookkeeper.stats.Counter <a href="https://github.com/apache/bookkeeper/pull/3501" target="_blank" rel="noopener noreferrer">PR #3501</a><ul><li>Change name : Counter.add --&gt; Counter.addCount</li><li>Add new method Counter.addLatency to count the time and convert the time to milliseconds</li></ul></li><li>When using V2 protocol, the bookkeeper_server_ADD_ENTRY_REQUEST and bookkeeper_server_READ_ENTRY_REQUEST stats do not work, and you can use bookkeeper_server_ADD_ENTRY and bookkeeper_server_READ_ENTRY instead. <a href="https://github.com/apache/bookkeeper/pull/3837" target="_blank" rel="noopener noreferrer">PR #3837</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="features-1">Features<a href="#features-1" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features"></a></h3><ul><li>Add Direct IO support for ledger, BP-47 (<a href="https://github.com/apache/bookkeeper/pull/3189" target="_blank" rel="noopener noreferrer">PR #3189</a>, <a href="https://github.com/apache/bookkeeper/pull/3190" target="_blank" rel="noopener noreferrer">PR #3910</a>, <a href="https://github.com/apache/bookkeeper/pull/3197" target="_blank" rel="noopener noreferrer">PR #3917</a>, <a href="https://github.com/apache/bookkeeper/pull/3253" target="_blank" rel="noopener noreferrer">PR #3253</a>, <a href="https://github.com/apache/bookkeeper/pull/3256" target="_blank" rel="noopener noreferrer">PR #3256</a>, <a href="https://github.com/apache/bookkeeper/pull/3263" target="_blank" rel="noopener noreferrer">PR #3263</a>, <a href="https://github.com/apache/bookkeeper/pull/3366" target="_blank" rel="noopener noreferrer">PR #3366</a>)</li><li>Support Intel PMem disk as journal <a href="https://github.com/apache/bookkeeper/pull/3194" target="_blank" rel="noopener noreferrer">PR #3194</a></li><li>Auto Recovery support repair not adhering placement policy ledgers <a href="https://github.com/apache/bookkeeper/pull/3359" target="_blank" rel="noopener noreferrer">PR #3359</a></li><li>Support setting separate ledger index directories instead of keep the same directory with ledger data <a href="https://github.com/apache/bookkeeper/issues/3419" target="_blank" rel="noopener noreferrer">Issue #3419</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="improvement">Improvement<a href="#improvement" class="hash-link" aria-label="Direct link to Improvement" title="Direct link to Improvement"></a></h3><ul><li>Allow to use IO uring instead of epoll <a href="https://github.com/apache/bookkeeper/pull/3595" target="_blank" rel="noopener noreferrer">PR #3595</a></li><li>Fixed the pivot selection in the group quick-sort <a href="https://github.com/apache/bookkeeper/pull/3800" target="_blank" rel="noopener noreferrer">PR #3800</a></li><li>Improvements in ArrayGroupSort <a href="https://github.com/apache/bookkeeper/pull/3807" target="_blank" rel="noopener noreferrer">PR #3807</a></li><li>Added BatchedArrayBlockingQueue <a href="https://github.com/apache/bookkeeper/pull/3838" target="_blank" rel="noopener noreferrer">PR #3838</a></li><li>Group and flush add-responses after journal sync <a href="https://github.com/apache/bookkeeper/pull/3837" target="_blank" rel="noopener noreferrer">PR #3837</a></li><li>Use JNI directly for posix_fadvise <a href="https://github.com/apache/bookkeeper/pull/3824" target="_blank" rel="noopener noreferrer">PR #3824</a></li><li>Improved efficiency in DigestManager.verify() <a href="https://github.com/apache/bookkeeper/pull/3810" target="_blank" rel="noopener noreferrer">PR #3810</a></li><li>Made PendingAddOp thread safe <a href="https://github.com/apache/bookkeeper/pull/3784" target="_blank" rel="noopener noreferrer">PR #3784</a></li><li>Single buffer for small add requests <a href="https://github.com/apache/bookkeeper/pull/3783" target="_blank" rel="noopener noreferrer">PR #3783</a></li><li>Optimize ReadResponse for small entry sizes <a href="https://github.com/apache/bookkeeper/pull/3597" target="_blank" rel="noopener noreferrer">PR #3597</a></li><li>Avoid extra buffer to prepend frame size <a href="https://github.com/apache/bookkeeper/pull/3560" target="_blank" rel="noopener noreferrer">PR #3560</a></li><li>Bring back deleteRange for RocksDB to improve location delete performance <a href="https://github.com/apache/bookkeeper/pull/3653" target="_blank" rel="noopener noreferrer">PR #3653</a></li><li>Avoid thread-local state when computing CRCs <a href="https://github.com/apache/bookkeeper/pull/3811" target="_blank" rel="noopener noreferrer">PR #3811</a></li><li>Make read entry request recyclable <a href="https://github.com/apache/bookkeeper/pull/3842" target="_blank" rel="noopener noreferrer">PR #3842</a></li><li>Use SingleThreadExecutor for OrderedExecutor and drainTo() tasks into local array <a href="https://github.com/apache/bookkeeper/pull/3546" target="_blank" rel="noopener noreferrer">PR #3546</a></li><li>Consolidate Netty channel flushes to mitigate syscall overhead <a href="https://github.com/apache/bookkeeper/pull/3383" target="_blank" rel="noopener noreferrer">PR #3383</a></li><li>Refactor Auditor to simplify the readability <a href="https://github.com/apache/bookkeeper/pull/3637" target="_blank" rel="noopener noreferrer">PR #3637</a></li><li>Reduce unnecessary loop in removeIf if map is empty <a href="https://github.com/apache/bookkeeper/pull/3512" target="_blank" rel="noopener noreferrer">PR #3512</a></li><li>Change order of doGcLedgers and extractMetaFromEntryLogs <a href="https://github.com/apache/bookkeeper/pull/3869" target="_blank" rel="noopener noreferrer">PR #3869</a></li><li>Upgrade RocksDB version to 7.9.2 <a href="https://github.com/apache/bookkeeper/pull/3795" target="_blank" rel="noopener noreferrer">PR #3795</a></li><li>Prioritize compaction of entry logs with the lowest amount of remaining usable data <a href="https://github.com/apache/bookkeeper/pull/3390" target="_blank" rel="noopener noreferrer">PR #3390</a></li><li>Added flag to control whether to transition to read-only mode when any disks full <a href="https://github.com/apache/bookkeeper/pull/3212" target="_blank" rel="noopener noreferrer">PR #3212</a></li><li>Ledger replicate supports throttle <a href="https://github.com/apache/bookkeeper/pull/2778" target="_blank" rel="noopener noreferrer">PR #2778</a></li><li>Apply the backpressure changes on the V2 requests <a href="https://github.com/apache/bookkeeper/pull/3324" target="_blank" rel="noopener noreferrer">PR #3324</a></li><li>Add small files check in garbage collection <a href="https://github.com/apache/bookkeeper/pull/3631" target="_blank" rel="noopener noreferrer">PR #3631</a></li><li>Add get cluster_info REST API <a href="https://github.com/apache/bookkeeper/pull/3710" target="_blank" rel="noopener noreferrer">PR #3710</a></li><li>Add new api resumeCompaction and suspendCompaction <a href="https://github.com/apache/bookkeeper/pull/3509" target="_blank" rel="noopener noreferrer">PR #3509</a></li><li>Add trigger entry location index rocksDB compact REST API <a href="https://github.com/apache/bookkeeper/pull/3802" target="_blank" rel="noopener noreferrer">PR #3802</a></li><li>Add Http-service to check bookie sanity state <a href="https://github.com/apache/bookkeeper/pull/3630" target="_blank" rel="noopener noreferrer">PR #3630</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="notable-fixes">Notable fixes<a href="#notable-fixes" class="hash-link" aria-label="Direct link to Notable fixes" title="Direct link to Notable fixes"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookie-1">Bookie<a href="#bookie-1" class="hash-link" aria-label="Direct link to Bookie" title="Direct link to Bookie"></a></h4><ul><li>Fix memory leak issue of reading small entries <a href="https://github.com/apache/bookkeeper/pull/3844" target="_blank" rel="noopener noreferrer">PR #3844</a></li><li>Fix memory leak when the Bookie is in read only mode <a href="https://github.com/apache/bookkeeper/pull/3746" target="_blank" rel="noopener noreferrer">PR #3746</a></li><li>Fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery <a href="https://github.com/apache/bookkeeper/pull/3672" target="_blank" rel="noopener noreferrer">PR #3672</a></li><li>Fix memory leak when operating ledger metadata <a href="https://github.com/apache/bookkeeper/pull/3662" target="_blank" rel="noopener noreferrer">PR #3662</a></li><li>Fix ByteBuf memory leak problem when setExplicitLac <a href="https://github.com/apache/bookkeeper/pull/3577" target="_blank" rel="noopener noreferrer">PR #3577</a></li><li>Fix memory leak when reading entry but the connection disconnected. <a href="https://github.com/apache/bookkeeper/pull/3528" target="_blank" rel="noopener noreferrer">PR #3528</a></li><li>Fix the readResponse byteBuf potential memory leak problem. <a href="https://github.com/apache/bookkeeper/pull/3525" target="_blank" rel="noopener noreferrer">PR #3525</a></li><li>Modify incorrect rocksDB config level_compaction_dynamic_level_bytes to CFOptions <a href="https://github.com/apache/bookkeeper/pull/3860" target="_blank" rel="noopener noreferrer">PR #3860</a></li><li>Optimize masterKeyCache StorageNotificationListener <a href="https://github.com/apache/bookkeeper/pull/3736" target="_blank" rel="noopener noreferrer">PR #3736</a></li><li>Fix RegionAwareEnsemblePlacementPolicy.newEnsemble sometimes failed problem. <a href="https://github.com/apache/bookkeeper/pull/3725" target="_blank" rel="noopener noreferrer">PR #3725</a></li><li>New ensemble choose different rack first. <a href="https://github.com/apache/bookkeeper/pull/3721" target="_blank" rel="noopener noreferrer">PR #3721</a></li><li>Fix RegionAwareEnsemblePlacementPolicy#onBookieRackChange didn&#x27;t update perRegionPlacement. <a href="https://github.com/apache/bookkeeper/pull/3666" target="_blank" rel="noopener noreferrer">PR #3666</a></li><li>When call openLedgerOp, make the timeout ex is a separate error code <a href="https://github.com/apache/bookkeeper/pull/3562" target="_blank" rel="noopener noreferrer">PR #3562</a></li><li>Using a separate thread pool to execute openWithMetadata <a href="https://github.com/apache/bookkeeper/pull/3548" target="_blank" rel="noopener noreferrer">PR #3548</a></li><li>Change masterKeyCache to dynamic size <a href="https://github.com/apache/bookkeeper/pull/3522" target="_blank" rel="noopener noreferrer">PR #3522</a></li><li>Fix group ForceWrite not take effect with forceWriteMarkerSent in while loop of ForceWriteThread <a href="https://github.com/apache/bookkeeper/pull/3454" target="_blank" rel="noopener noreferrer">PR #3454</a></li><li>WriteLacResponse should be processed in the same thread as other requests <a href="https://github.com/apache/bookkeeper/pull/3452" target="_blank" rel="noopener noreferrer">PR #3452</a></li><li>Update default value of allocatorPoolingConcurrency <a href="https://github.com/apache/bookkeeper/pull/3001" target="_blank" rel="noopener noreferrer">PR #3001</a></li><li>Fix the infinite waiting for shutdown due to throttler limit <a href="https://github.com/apache/bookkeeper/pull/2942" target="_blank" rel="noopener noreferrer">PR #2942</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="client-1">Client<a href="#client-1" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client"></a></h4><ul><li>LedgerHandle: do not complete metadata operation on the ZookKeeper/Metadata callback thread <a href="https://github.com/apache/bookkeeper/pull/3516" target="_blank" rel="noopener noreferrer">PR #3516</a></li><li>LedgerOpenOp: Do not call blocking close() in the callback <a href="https://github.com/apache/bookkeeper/pull/3513" target="_blank" rel="noopener noreferrer">PR #3513</a></li><li>Rename success with writableResult and update final writableResult about wait writeSet <a href="https://github.com/apache/bookkeeper/pull/3505" target="_blank" rel="noopener noreferrer">PR #3505</a></li><li>Fix the V2 AddRequest object leak issue <a href="https://github.com/apache/bookkeeper/pull/3323" target="_blank" rel="noopener noreferrer">PR #3323</a></li><li>Fix the PendingAddOp is not recycled when LedgerHandler closed <a href="https://github.com/apache/bookkeeper/pull/3321" target="_blank" rel="noopener noreferrer">PR #3321</a></li><li>Make sure the LedgerHandle close callback can be completed when encounter exception <a href="https://github.com/apache/bookkeeper/pull/2913" target="_blank" rel="noopener noreferrer">PR #2913</a></li><li>Change PCBC limitStatsLogging default value to true <a href="https://github.com/apache/bookkeeper/pull/3719" target="_blank" rel="noopener noreferrer">PR #3719</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="autorecovery-1">AutoRecovery<a href="#autorecovery-1" class="hash-link" aria-label="Direct link to AutoRecovery" title="Direct link to AutoRecovery"></a></h4><ul><li>Fix issue where checkAllLedgers could get stuck when read throttling is enabled <a href="https://github.com/apache/bookkeeper/pull/3655" target="_blank" rel="noopener noreferrer">PR #3655</a></li><li>Shut down ReplicationWorker and Auditor on non-recoverable ZK error <a href="https://github.com/apache/bookkeeper/pull/3374" target="_blank" rel="noopener noreferrer">PR #3374</a></li><li>Fix autoRecovery memory leak. <a href="https://github.com/apache/bookkeeper/pull/3361" target="_blank" rel="noopener noreferrer">PR #3361</a></li><li>Fix autoRecovery does not process under-replicated empty ledgers <a href="https://github.com/apache/bookkeeper/pull/3239" target="_blank" rel="noopener noreferrer">PR #3239</a></li><li>Fix bug where checkAllLedgers gets stuck when read throttling is enabled <a href="https://github.com/apache/bookkeeper/pull/3214" target="_blank" rel="noopener noreferrer">PR #3214</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="others-1">Others<a href="#others-1" class="hash-link" aria-label="Direct link to Others" title="Direct link to Others"></a></h4><ul><li>Support build in the arch64 linux platform <a href="https://github.com/apache/bookkeeper/pull/3828" target="_blank" rel="noopener noreferrer">PR #3828</a></li><li>Support update ledger metadata option bk-cli <a href="https://github.com/apache/bookkeeper/pull/3821" target="_blank" rel="noopener noreferrer">PR #3821</a></li><li>Make <code>jvm_memory_direct_bytes_used</code> metrics compatible with jdk8. <a href="https://github.com/apache/bookkeeper/pull/3677" target="_blank" rel="noopener noreferrer">PR #3677</a></li><li>Speed up the rebuilding of RocksDB index <a href="https://github.com/apache/bookkeeper/pull/3458" target="_blank" rel="noopener noreferrer">PR #3458</a></li><li>Allow run LocalBookkeeper directly in <code>bookkeeper-server</code> module or on IDE <a href="https://github.com/apache/bookkeeper/pull/3255" target="_blank" rel="noopener noreferrer">PR #3255</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-changes-1">Dependency changes<a href="#dependency-changes-1" class="hash-link" aria-label="Direct link to Dependency changes" title="Direct link to Dependency changes"></a></h3><p>Upgraded notable dependencies and address CVEs, including:</p><ul><li>netty</li><li>RocksDB</li><li>snakeyaml</li><li>zookeeper</li><li>Docker base image</li><li>jackson</li><li>protobuf</li><li>hadoop</li><li>vertx</li><li>log4j2</li><li>Jetty</li><li>groovy</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-8">Details<a href="#details-8" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+milestone%3A4.16.0+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+milestone%3A4.16.0+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4154">4.15.4<a href="#4154" class="hash-link" aria-label="Direct link to 4.15.4" title="Direct link to 4.15.4"></a></h2><p>Release 4.15.4 includes multiple bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.4.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-7">Highlights<a href="#highlights-7" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-7">Bugs<a href="#bugs-7" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix QueueEntry recycle problem <a href="https://github.com/apache/bookkeeper/pull/3747" target="_blank" rel="noopener noreferrer">PR #3747</a></li><li>Fix memory leak when the Bookie is in read only mode <a href="https://github.com/apache/bookkeeper/pull/3746" target="_blank" rel="noopener noreferrer">PR #3746</a></li><li>Fix RegionAwareEnsemblePlacementPolicy.newEnsemble sometimes failed problem <a href="https://github.com/apache/bookkeeper/pull/3725" target="_blank" rel="noopener noreferrer">PR #3725</a></li><li>Not wrap IOException twice form checkpoint <a href="https://github.com/apache/bookkeeper/pull/3683" target="_blank" rel="noopener noreferrer">PR #3683</a></li><li>Make <code>jvm_memory_direct_bytes_used</code> metrics compatible with jdk8 <a href="https://github.com/apache/bookkeeper/pull/3677" target="_blank" rel="noopener noreferrer">PR #3677</a></li><li>Fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery <a href="https://github.com/apache/bookkeeper/pull/3672" target="_blank" rel="noopener noreferrer">PR #3672</a></li><li>Fix RegionAwareEnsemblePlacementPolicy update rack info problem <a href="https://github.com/apache/bookkeeper/pull/3666" target="_blank" rel="noopener noreferrer">PR #3666</a></li><li>Exit bookkeeper shell correctly even if fails to run for some reason <a href="https://github.com/apache/bookkeeper/pull/3663" target="_blank" rel="noopener noreferrer">PR #3663</a></li><li>Fix memory leak when operating ledger metadata <a href="https://github.com/apache/bookkeeper/pull/3662" target="_blank" rel="noopener noreferrer">PR #3662</a></li><li>Check client if closed when complete callback <a href="https://github.com/apache/bookkeeper/pull/3661" target="_blank" rel="noopener noreferrer">PR #3661</a></li><li>Fix issue where checkAllLedgers could get stuck when read throttling is enabled <a href="https://github.com/apache/bookkeeper/pull/3655" target="_blank" rel="noopener noreferrer">PR #3655</a></li><li>Fix GetBookieInfo failed event stats <a href="https://github.com/apache/bookkeeper/pull/3622" target="_blank" rel="noopener noreferrer">PR #3622</a></li><li>Apply recycle logic during add entry creation but ledger close to LedgerHandleAdv <a href="https://github.com/apache/bookkeeper/pull/3621" target="_blank" rel="noopener noreferrer">PR #3621</a></li><li>BookieImpl remove wait until journal quits <a href="https://github.com/apache/bookkeeper/pull/3603" target="_blank" rel="noopener noreferrer">PR #3603</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-4">Improvements<a href="#improvements-4" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Support build in the aarch64 linux platform <a href="https://github.com/apache/bookkeeper/pull/3828" target="_blank" rel="noopener noreferrer">PR #3828</a></li><li>Use ReferenceCountUtil.release() instead of ReferenceCountUtil.safeRelease() <a href="https://github.com/apache/bookkeeper/pull/3797" target="_blank" rel="noopener noreferrer">PR #3797</a></li><li>Added api/v1/bookie/cluster_info REST API <a href="https://github.com/apache/bookkeeper/pull/3713" target="_blank" rel="noopener noreferrer">PR #3713</a></li><li>Expose registrationClient in DefaultBookieAddressResolver <a href="https://github.com/apache/bookkeeper/pull/3724" target="_blank" rel="noopener noreferrer">PR #3724</a></li><li>New ensemble choose different rack first <a href="https://github.com/apache/bookkeeper/pull/3721" target="_blank" rel="noopener noreferrer">PR #3721</a></li><li>Improve bk_server.conf docs <a href="https://github.com/apache/bookkeeper/pull/3715" target="_blank" rel="noopener noreferrer">PR #3715</a></li><li>Show result of isFenced in log <a href="https://github.com/apache/bookkeeper/pull/3678" target="_blank" rel="noopener noreferrer">PR #3678</a></li><li>Include bkperf into bk all package <a href="https://github.com/apache/bookkeeper/pull/3632" target="_blank" rel="noopener noreferrer">PR #3632</a></li><li>Add journal file path that caused failure in multi-journal config <a href="https://github.com/apache/bookkeeper/pull/3623" target="_blank" rel="noopener noreferrer">PR #3623</a></li><li>Avoid extra buffer to prepend frame size <a href="https://github.com/apache/bookkeeper/pull/3560" target="_blank" rel="noopener noreferrer">PR #3560</a></li><li>Using a separate thread pool to execute openWithMetadata <a href="https://github.com/apache/bookkeeper/pull/3548" target="_blank" rel="noopener noreferrer">PR #3548</a></li><li>LedgerHandle: do not complete metadata operation on the ZookKeeper/Metadata callback thread <a href="https://github.com/apache/bookkeeper/pull/3516" target="_blank" rel="noopener noreferrer">PR #3516</a></li><li>ledgerFragment check and results keep order <a href="https://github.com/apache/bookkeeper/pull/3504" target="_blank" rel="noopener noreferrer">PR #3504</a></li><li>Simplified No network topology script is found default log stack output <a href="https://github.com/apache/bookkeeper/pull/3496" target="_blank" rel="noopener noreferrer">PR #3496</a></li><li>Support apple m1 build <a href="https://github.com/apache/bookkeeper/pull/3175" target="_blank" rel="noopener noreferrer">PR #3175</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-6">Dependency updates<a href="#dependency-updates-6" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Bump vertx-web from 4.3.2 to 4.3.8 <a href="https://github.com/apache/bookkeeper/pull/3775" target="_blank" rel="noopener noreferrer">PR #3775</a></li><li>Upgrade docker image version to fix CVEs <a href="https://github.com/apache/bookkeeper/pull/3640" target="_blank" rel="noopener noreferrer">PR #3640</a></li><li>Bump jcommander from 1.78 to 1.82 <a href="https://github.com/apache/bookkeeper/pull/3476" target="_blank" rel="noopener noreferrer">PR #3476</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-9">Details<a href="#details-9" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?page=1&amp;q=is%3Apr+label%3Arelease%2F4.15.4+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?page=1&amp;q=is%3Apr+label%3Arelease%2F4.15.4+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4147">4.14.7<a href="#4147" class="hash-link" aria-label="Direct link to 4.14.7" title="Direct link to 4.14.7"></a></h2><p>Release 4.14.7 includes multiple bug fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.7.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-8">Highlights<a href="#highlights-8" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-8">Bugs<a href="#bugs-8" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Revert PR#3653 and make delete entries batch size configurable <a href="https://github.com/apache/bookkeeper/pull/3768" target="_blank" rel="noopener noreferrer">PR #3768</a></li><li>Fix memory leak when the Bookie is in read only mode <a href="https://github.com/apache/bookkeeper/pull/3746" target="_blank" rel="noopener noreferrer">PR #3746</a></li><li>Fix QueueEntry recycle problem. <a href="https://github.com/apache/bookkeeper/pull/3747" target="_blank" rel="noopener noreferrer">PR #3747</a></li><li>Expose registrationClient in DefaultBookieAddressResolver. <a href="https://github.com/apache/bookkeeper/pull/3724" target="_blank" rel="noopener noreferrer">PR #3724</a></li><li>Added api/v1/bookie/cluster_info REST API <a href="https://github.com/apache/bookkeeper/pull/3714" target="_blank" rel="noopener noreferrer">PR #3714</a></li><li>Check if channel closed before processing read request <a href="https://github.com/apache/bookkeeper/pull/3486" target="_blank" rel="noopener noreferrer">PR #3486</a></li><li>Add missed call to onReadRequestFinish() when read request rejected <a href="https://github.com/apache/bookkeeper/pull/3482" target="_blank" rel="noopener noreferrer">PR #3482</a></li><li>Avoid extra buffer to prepend frame size <a href="https://github.com/apache/bookkeeper/pull/3560" target="_blank" rel="noopener noreferrer">PR #3560</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-10">Details<a href="#details-10" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.7+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.7+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4146">4.14.6<a href="#4146" class="hash-link" aria-label="Direct link to 4.14.6" title="Direct link to 4.14.6"></a></h2><p>Release 4.14.6 includes multiple bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.6.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-9">Highlights<a href="#highlights-9" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-9">Bugs<a href="#bugs-9" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix memory leak when reading entry but the connection disconnected. <a href="https://github.com/apache/bookkeeper/pull/3528" target="_blank" rel="noopener noreferrer">PR #3528</a></li><li>When call openLedgerOp, make the timeout ex is a separate error code <a href="https://github.com/apache/bookkeeper/pull/3562" target="_blank" rel="noopener noreferrer">PR #3562</a></li><li>Apply recycle logic during add entry creation but ledger close to LedgerHandleAdv <a href="https://github.com/apache/bookkeeper/pull/3621" target="_blank" rel="noopener noreferrer">PR #3621</a></li><li>Fix autoRecovery memory leak. <a href="https://github.com/apache/bookkeeper/pull/3361" target="_blank" rel="noopener noreferrer">PR #3361</a></li><li>Fix potential memory leak. <a href="https://github.com/apache/bookkeeper/pull/3530" target="_blank" rel="noopener noreferrer">PR #3530</a></li><li>Fix the V2 AddRequest object leak issue <a href="https://github.com/apache/bookkeeper/pull/3323" target="_blank" rel="noopener noreferrer">PR #3323</a></li><li>Fix ByteBuf memory leak problem when setExplicitLac <a href="https://github.com/apache/bookkeeper/pull/3617" target="_blank" rel="noopener noreferrer">PR #3617</a></li><li>Fix the problem that the abnormal file causes the bookie GC fail <a href="https://github.com/apache/bookkeeper/pull/3611" target="_blank" rel="noopener noreferrer">PR #3611</a></li><li>Fix the deadlock when only using io thread to handle request <a href="https://github.com/apache/bookkeeper/pull/3480" target="_blank" rel="noopener noreferrer">PR #3480</a></li><li>Fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery <a href="https://github.com/apache/bookkeeper/pull/3672" target="_blank" rel="noopener noreferrer">PR #3672</a></li><li>Fix memory leak when operating ledger metadata <a href="https://github.com/apache/bookkeeper/pull/3662" target="_blank" rel="noopener noreferrer">PR #3662</a></li><li>LedgerHandle: do not complete metadata operation on the ZookKeeper/Metadata callback thread <a href="https://github.com/apache/bookkeeper/pull/3516" target="_blank" rel="noopener noreferrer">PR #3516</a></li><li>Ledger replicate supports throttle <a href="https://github.com/apache/bookkeeper/pull/2778" target="_blank" rel="noopener noreferrer">PR #2778</a></li><li>CheckAllLedgers in Auditor supports read throttle <a href="https://github.com/apache/bookkeeper/pull/2973" target="_blank" rel="noopener noreferrer">PR #2973</a></li><li>Rename success with writableResult and update final writableResult about wait writeSet <a href="https://github.com/apache/bookkeeper/pull/3505" target="_blank" rel="noopener noreferrer">PR #3505</a></li><li>LedgerFragment check and results keep order <a href="https://github.com/apache/bookkeeper/pull/3504" target="_blank" rel="noopener noreferrer">PR #3504</a></li><li>Improve the throttle function <a href="https://github.com/apache/bookkeeper/pull/2991" target="_blank" rel="noopener noreferrer">PR #2991</a></li><li>Fix close ledgerAuditorManager repeatedly <a href="https://github.com/apache/bookkeeper/pull/3503" target="_blank" rel="noopener noreferrer">PR #3503</a></li><li>AutoRecovery - Do not call shutdown() on the main ZookKeeper client thread <a href="https://github.com/apache/bookkeeper/pull/3487" target="_blank" rel="noopener noreferrer">PR #3487</a></li><li>WriteLacResponse should be processed in the same thread as other requests for the same ledgerId <a href="https://github.com/apache/bookkeeper/pull/3452" target="_blank" rel="noopener noreferrer">PR #3452</a></li><li>Shutdown ReplicationWorker and Auditor on non-recoverable ZK error <a href="https://github.com/apache/bookkeeper/pull/3374" target="_blank" rel="noopener noreferrer">PR #3374</a></li><li>Enhance future sync wait. <a href="https://github.com/apache/bookkeeper/pull/3336" target="_blank" rel="noopener noreferrer">PR #3336</a></li><li>Pre break loop when self create layoutZNode succeed. <a href="https://github.com/apache/bookkeeper/pull/3335" target="_blank" rel="noopener noreferrer">PR #3335</a></li><li>Fix the PendingAddOp is not recycled when LedgerHandler closed <a href="https://github.com/apache/bookkeeper/pull/3321" target="_blank" rel="noopener noreferrer">PR #3321</a></li><li>Fix autorecovery does not process underreplicated empty ledgers <a href="https://github.com/apache/bookkeeper/pull/3239" target="_blank" rel="noopener noreferrer">PR #3239</a></li><li>Fix RegionAwareEnsemblePlacementPolicy update rack info problem. <a href="https://github.com/apache/bookkeeper/pull/3666" target="_blank" rel="noopener noreferrer">PR #3666</a></li><li>Fix bug where checkAllLedgers gets stuck when read throttling is enabled <a href="https://github.com/apache/bookkeeper/pull/3214" target="_blank" rel="noopener noreferrer">PR #3214</a></li><li>Fix checkAllLedgersDuration compute <a href="https://github.com/apache/bookkeeper/pull/2970" target="_blank" rel="noopener noreferrer">PR #2970</a></li><li>Zk client config update and bugfix for ZKMetadataClientDriver <a href="https://github.com/apache/bookkeeper/pull/2958" target="_blank" rel="noopener noreferrer">PR #2958</a></li><li>Make sure the LedgerHandle close callback can be completed when encounter exception <a href="https://github.com/apache/bookkeeper/pull/2913" target="_blank" rel="noopener noreferrer">PR #2913</a></li><li>Make <code>jvm_memory_direct_bytes_used</code> metrics compatible with jdk8. <a href="https://github.com/apache/bookkeeper/pull/3677" target="_blank" rel="noopener noreferrer">PR #3677</a></li><li>Reorder the sequence of the bookkeeper server shutdown so that there are no read/ write ops while shutting down the bookie <a href="https://github.com/apache/bookkeeper/pull/2888" target="_blank" rel="noopener noreferrer">PR #2888</a></li><li>Fix readlogmetadata failed bug and export entrylog file usage to output <a href="https://github.com/apache/bookkeeper/pull/2349" target="_blank" rel="noopener noreferrer">PR #2349</a></li><li>MinorCompactionInterval should be greater than gcWaitTime <a href="https://github.com/apache/bookkeeper/pull/2116" target="_blank" rel="noopener noreferrer">PR #2116</a></li><li>Skipping placementPolicyCheck when ledger replication disabled <a href="https://github.com/apache/bookkeeper/pull/3561" target="_blank" rel="noopener noreferrer">PR #3561</a></li><li>Skip replicasCheck when replication disabled <a href="https://github.com/apache/bookkeeper/pull/3563" target="_blank" rel="noopener noreferrer">PR #3563</a></li><li>Fix GetBookieInfo failed event stats <a href="https://github.com/apache/bookkeeper/pull/3622" target="_blank" rel="noopener noreferrer">PR #3622</a></li><li>Add journal file path that caused failure in multi-journal config <a href="https://github.com/apache/bookkeeper/pull/3634" target="_blank" rel="noopener noreferrer">PR #3634</a></li><li>Include bkperf into bk all package <a href="https://github.com/apache/bookkeeper/pull/3632" target="_blank" rel="noopener noreferrer">PR #3632</a></li><li>Fix maven javadoc generate issues <a href="https://github.com/apache/bookkeeper/pull/3615" target="_blank" rel="noopener noreferrer">PR #3615</a></li><li>Switch to rely on SslEngine for Hostname Verification <a href="https://github.com/apache/bookkeeper/pull/3310" target="_blank" rel="noopener noreferrer">PR #3310</a></li><li>Simplified No network topology script is found default log stack output <a href="https://github.com/apache/bookkeeper/pull/3496" target="_blank" rel="noopener noreferrer">PR #3496</a></li><li>Fix jvm_memory_direct_bytes_used metrics when using jdk11+ <a href="https://github.com/apache/bookkeeper/pull/3252" target="_blank" rel="noopener noreferrer">PR #3252</a></li><li>Fix the 3144 revert issue <a href="https://github.com/apache/bookkeeper/pull/3283" target="_blank" rel="noopener noreferrer">PR #3283</a></li><li>Avoid init WriteSet when waitForWriteSetMs &lt; 0. <a href="https://github.com/apache/bookkeeper/pull/3325" target="_blank" rel="noopener noreferrer">PR #3325</a></li><li>Tuning PendingReadOp.java seq <a href="https://github.com/apache/bookkeeper/pull/3330" target="_blank" rel="noopener noreferrer">PR #3330</a></li><li>Optimize log for failed to write entry <a href="https://github.com/apache/bookkeeper/pull/3463" target="_blank" rel="noopener noreferrer">PR #3463</a></li><li>Reduce unnecessary loop in removeIf if map is empty <a href="https://github.com/apache/bookkeeper/pull/3512" target="_blank" rel="noopener noreferrer">PR #3512</a></li><li>Deduplicate error log for SSLException <a href="https://github.com/apache/bookkeeper/pull/3320" target="_blank" rel="noopener noreferrer">PR #3320</a></li><li>Fix underReplicatedLedgerTotalSize calculate problem. <a href="https://github.com/apache/bookkeeper/pull/3337" target="_blank" rel="noopener noreferrer">PR #3337</a></li><li>Fix wrong ledger id parse radix for index relocation file in IndexPersistenceMgr <a href="https://github.com/apache/bookkeeper/pull/2944" target="_blank" rel="noopener noreferrer">PR #2944</a></li><li>Fix bookie CI test not run <a href="https://github.com/apache/bookkeeper/pull/3367" target="_blank" rel="noopener noreferrer">PR #3367</a></li><li>Update doc about flushInterval config <a href="https://github.com/apache/bookkeeper/pull/3601" target="_blank" rel="noopener noreferrer">PR #3601</a></li><li>Show content of map <a href="https://github.com/apache/bookkeeper/pull/3538" target="_blank" rel="noopener noreferrer">PR #3538</a></li><li>Add example for multiple server list in metadataServiceUri configuration <a href="https://github.com/apache/bookkeeper/pull/3580" target="_blank" rel="noopener noreferrer">PR #3580</a></li><li>Replace sleep with await to avoid flaky test in SlowBookieTest <a href="https://github.com/apache/bookkeeper/pull/3581" target="_blank" rel="noopener noreferrer">PR #3581</a></li><li>Add javadoc comments for test classes <a href="https://github.com/apache/bookkeeper/pull/3587" target="_blank" rel="noopener noreferrer">PR #3587</a></li><li>Correct link class name <a href="https://github.com/apache/bookkeeper/pull/3594" target="_blank" rel="noopener noreferrer">PR #3594</a></li><li>Fix typo in bk_server.conf <a href="https://github.com/apache/bookkeeper/pull/3574" target="_blank" rel="noopener noreferrer">PR #3574</a></li><li>Fix flaky test testAutoRecoverySessionLoss <a href="https://github.com/apache/bookkeeper/pull/3576" target="_blank" rel="noopener noreferrer">PR #3576</a></li><li>Fix flaky tests in AuditorReplicasCheckTest <a href="https://github.com/apache/bookkeeper/pull/3551" target="_blank" rel="noopener noreferrer">PR #3551</a></li><li>Fix the tls failed test <a href="https://github.com/apache/bookkeeper/pull/3448" target="_blank" rel="noopener noreferrer">PR #3448</a></li><li>Backport BookieBackpressureForV2Test to branch-4.14 <a href="https://github.com/apache/bookkeeper/pull/3443" target="_blank" rel="noopener noreferrer">PR #3443</a></li><li>Fix Flaky-test: testBookieContinueWritingIfMultipleLedgersPresent <a href="https://github.com/apache/bookkeeper/pull/3421" target="_blank" rel="noopener noreferrer">PR #3421</a></li><li>BookieAutoRecoveryTest.testEmptyLedgerLosesQuorumEventually fix flaky test, ensure that the Auditor is alive <a href="https://github.com/apache/bookkeeper/pull/3149" target="_blank" rel="noopener noreferrer">PR #3149</a></li><li>Close journal channel in testJunkEndedJournal <a href="https://github.com/apache/bookkeeper/pull/3307" target="_blank" rel="noopener noreferrer">PR #3307</a></li><li>Fix stream storage flaky tests, statelib test times out <a href="https://github.com/apache/bookkeeper/pull/2883" target="_blank" rel="noopener noreferrer">PR #2883</a></li><li>Fix flaky AutoRecoveryMainTest <a href="https://github.com/apache/bookkeeper/pull/2881" target="_blank" rel="noopener noreferrer">PR #2881</a></li><li>Support apple m1 build <a href="https://github.com/apache/bookkeeper/pull/3175" target="_blank" rel="noopener noreferrer">PR #3175</a></li><li>Refactor ByteBuf release method in module distributedlog-core/distributedlog-protocol <a href="https://github.com/apache/bookkeeper/pull/3693" target="_blank" rel="noopener noreferrer">PR #3693</a></li><li>Refactor ByteBuf release method in module distributedlog-core <a href="https://github.com/apache/bookkeeper/pull/3691" target="_blank" rel="noopener noreferrer">PR #3691</a></li><li>Refactor ByteBuf release method in tools <a href="https://github.com/apache/bookkeeper/pull/3687" target="_blank" rel="noopener noreferrer">PR #3687</a></li><li>Refactor ByteBuf release method in stream/statelib <a href="https://github.com/apache/bookkeeper/pull/3689" target="_blank" rel="noopener noreferrer">PR #3689</a></li><li>Refactor ByteBuf release method in DefaultEntryLogger <a href="https://github.com/apache/bookkeeper/pull/3673" target="_blank" rel="noopener noreferrer">PR #3673</a></li><li>Refactor ByteBuf release method in InterleavedLedgerStorage <a href="https://github.com/apache/bookkeeper/pull/3674" target="_blank" rel="noopener noreferrer">PR #3674</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-5">Improvements<a href="#improvements-5" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Bring back deleteRange for RocksDB to improve location delete performance <a href="https://github.com/apache/bookkeeper/pull/3653" target="_blank" rel="noopener noreferrer">PR #3653</a></li><li>Consolidate Netty channel flushes to mitigate syscall overhead <a href="https://github.com/apache/bookkeeper/pull/3383" target="_blank" rel="noopener noreferrer">PR #3383</a></li><li>Using a separate thread pool to execute openWithMetadata <a href="https://github.com/apache/bookkeeper/pull/3548" target="_blank" rel="noopener noreferrer">PR #3548</a></li><li>Replace unsafe NoEntryException with IOException <a href="https://github.com/apache/bookkeeper/pull/2909" target="_blank" rel="noopener noreferrer">PR #2909</a></li><li>Update default value of allocatorPoolingConcurrency <a href="https://github.com/apache/bookkeeper/pull/3001" target="_blank" rel="noopener noreferrer">PR #3001</a></li><li>Apply the backpressure changes on the V2 requests <a href="https://github.com/apache/bookkeeper/pull/3324" target="_blank" rel="noopener noreferrer">PR #3324</a></li><li>LedgerOpenOp: Do not call blocking close() in the callback <a href="https://github.com/apache/bookkeeper/pull/3513" target="_blank" rel="noopener noreferrer">PR #3513</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-changes">Metrics changes<a href="#metrics-changes" class="hash-link" aria-label="Direct link to Metrics changes" title="Direct link to Metrics changes"></a></h4><ul><li>Add rocksDB read latency and read from storage latency for entry reading <a href="https://github.com/apache/bookkeeper/pull/3647" target="_blank" rel="noopener noreferrer">PR #3647</a></li><li>Add latency stats for entry location index lookup so that possible RocksDB bottleneck can be detected <a href="https://github.com/apache/bookkeeper/pull/3444" target="_blank" rel="noopener noreferrer">PR #3444</a></li><li>Add stats for throttled-write <a href="https://github.com/apache/bookkeeper/pull/3102" target="_blank" rel="noopener noreferrer">PR #3102</a></li><li>Add writeThreadQueuedLatency <a href="https://github.com/apache/bookkeeper/pull/3363" target="_blank" rel="noopener noreferrer">PR #3363</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-7">Dependency updates<a href="#dependency-updates-7" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade docker image version to fix CVEs <a href="https://github.com/apache/bookkeeper/pull/3640" target="_blank" rel="noopener noreferrer">PR #3640</a></li><li>Upgrade dependencies for CVE-2022-3171 and CVE-2022-42003 <a href="https://github.com/apache/bookkeeper/pull/3579" target="_blank" rel="noopener noreferrer">PR #3579</a></li><li>Bump jcommander from 1.78 to 1.82 <a href="https://github.com/apache/bookkeeper/pull/3476" target="_blank" rel="noopener noreferrer">PR #3476</a></li><li>Upgrade hadoop version to 3.2.4 <a href="https://github.com/apache/bookkeeper/pull/3485" target="_blank" rel="noopener noreferrer">PR #3485</a></li><li>Upgrade Jetty to 9.4.48.v20220622 to get rid of CVE-2022-2047 <a href="https://github.com/apache/bookkeeper/pull/3404" target="_blank" rel="noopener noreferrer">PR #3404</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-11">Details<a href="#details-11" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.6+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.14.6+is%3Aclosed</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4153">4.15.3<a href="#4153" class="hash-link" aria-label="Direct link to 4.15.3" title="Direct link to 4.15.3"></a></h2><p>Release 4.15.3 includes multiple bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.3.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="notice">Notice<a href="#notice" class="hash-link" aria-label="Direct link to Notice" title="Direct link to Notice"></a></h3><ul><li><p>4.15.0 introduced a breaking change in the RocksDB configuration in 4.15.0. Release 4.15.3 allows users to safely upgrade from 4.14.x without losing the RocksDB runtime configuration
For more details, refer to <a href="https://lists.apache.org/thread/drh4p5prxbcs8gszhxnd1xsv0g48vvbt" target="_blank" rel="noopener noreferrer">https://lists.apache.org/thread/drh4p5prxbcs8gszhxnd1xsv0g48vvbt</a>
See <a href="https://github.com/apache/bookkeeper/pull/3523" target="_blank" rel="noopener noreferrer">PR #3523</a></p></li><li><p>Timeout exceptions are now handled in a better way during reads.
See <a href="https://github.com/apache/bookkeeper/pull/3562" target="_blank" rel="noopener noreferrer">PR #3562</a></p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-10">Highlights<a href="#highlights-10" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-8">Dependency updates<a href="#dependency-updates-8" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade dependencies for CVE-2022-3171 and CVE-2022-42003. <a href="https://github.com/apache/bookkeeper/pull/3579" target="_blank" rel="noopener noreferrer">PR #3579</a></li><li>Bump jackson version to 2.13.4 . <a href="https://github.com/apache/bookkeeper/pull/3518" target="_blank" rel="noopener noreferrer">PR #3518</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-10">Bugs<a href="#bugs-10" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix ByteBuf memory leak problem when setExplicitLac. <a href="https://github.com/apache/bookkeeper/pull/3577" target="_blank" rel="noopener noreferrer">PR #3557</a></li><li>Flush time started moved to after lock. <a href="https://github.com/apache/bookkeeper/pull/3570" target="_blank" rel="noopener noreferrer">PR #3570</a></li><li>Skip replicasCheck when replication disabled. <a href="https://github.com/apache/bookkeeper/pull/3563" target="_blank" rel="noopener noreferrer">PR #3563</a></li><li>Skipping placementPolicyCheck when ledger replication disabled. <a href="https://github.com/apache/bookkeeper/pull/3561" target="_blank" rel="noopener noreferrer">PR #3561</a></li><li>Fix the deadlock when only using io thread to handle request. <a href="https://github.com/apache/bookkeeper/pull/3480" target="_blank" rel="noopener noreferrer">PR #3480</a></li><li>Fix memory leak when reading entry but the connection disconnected. <a href="https://github.com/apache/bookkeeper/pull/3528" target="_blank" rel="noopener noreferrer">PR #3528</a></li><li>Fix byteBuf potential memory leak problem. <a href="https://github.com/apache/bookkeeper/pull/3525" target="_blank" rel="noopener noreferrer">PR #3525</a></li><li>LedgerOpenOp: Do not call blocking close() in the callback. <a href="https://github.com/apache/bookkeeper/pull/3513" target="_blank" rel="noopener noreferrer">PR #3513</a></li><li>Rename success with writableResult and update final writableResult about wait writeSet. <a href="https://github.com/apache/bookkeeper/pull/3505" target="_blank" rel="noopener noreferrer">PR #3505</a></li><li>Avoid closing the ledgerAuditorManager twice in the close method. <a href="https://github.com/apache/bookkeeper/pull/3503" target="_blank" rel="noopener noreferrer">PR #3503</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-6">Improvements<a href="#improvements-6" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>When call openLedgerOp, make the timeout ex is a separate error code. <a href="https://github.com/apache/bookkeeper/pull/3562" target="_blank" rel="noopener noreferrer">PR #3562</a></li><li>Make the rocksDB configuration compatible with previous versions. <a href="https://github.com/apache/bookkeeper/pull/3523" target="_blank" rel="noopener noreferrer">PR #3523</a></li><li>Reduce unnecessary loop in removeIf if map is empty. <a href="https://github.com/apache/bookkeeper/pull/3512" target="_blank" rel="noopener noreferrer">PR #3512</a></li><li>Update default value of allocatorPoolingConcurrency. <a href="https://github.com/apache/bookkeeper/pull/3001" target="_blank" rel="noopener noreferrer">PR #3001</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4152">4.15.2<a href="#4152" class="hash-link" aria-label="Direct link to 4.15.2" title="Direct link to 4.15.2"></a></h2><p>Release 4.15.2 contains various bug fixes and some dependencies CVE fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.2.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-11">Highlights<a href="#highlights-11" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-9">Dependency updates<a href="#dependency-updates-9" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Bump snakeyaml from 1.31 to 1.32 to solve CVE-2022-38752. <a href="https://github.com/apache/bookkeeper/pull/3491" target="_blank" rel="noopener noreferrer">PR #3491</a></li><li>upgrade hadoop version to 3.2.4. <a href="https://github.com/apache/bookkeeper/pull/3485" target="_blank" rel="noopener noreferrer">PR #3485</a></li><li>[security]<!-- --> Upgrade Jetty to 9.4.48.v20220622 to get rid of CVE-2022-2047. <a href="https://github.com/apache/bookkeeper/pull/3404" target="_blank" rel="noopener noreferrer">PR #3404</a></li><li>Bump dependency check to 7.1.2 to avoid FP. <a href="https://github.com/apache/bookkeeper/pull/3470" target="_blank" rel="noopener noreferrer">PR #3470</a></li><li>Bump snakeyaml from 1.30 to 1.31 to solve CVE-2022-25857. <a href="https://github.com/apache/bookkeeper/pull/3469" target="_blank" rel="noopener noreferrer">PR #3469</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-11">Bugs<a href="#bugs-11" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>AutoRecovery - Do not call shutdown() on the main ZookKeeper client thread. <a href="https://github.com/apache/bookkeeper/pull/3487" target="_blank" rel="noopener noreferrer">PR #3487</a></li><li>Check if channel closed before processing read request. <a href="https://github.com/apache/bookkeeper/pull/3486" target="_blank" rel="noopener noreferrer">PR #3486</a></li><li>Add missed call to onReadRequestFinish() when read request rejected. <a href="https://github.com/apache/bookkeeper/pull/3482" target="_blank" rel="noopener noreferrer">PR #3482</a></li><li>Fix the deadlock when only using io thread to handle request. <a href="https://github.com/apache/bookkeeper/pull/3480" target="_blank" rel="noopener noreferrer">PR #3480</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-changes-1">Metrics changes<a href="#metrics-changes-1" class="hash-link" aria-label="Direct link to Metrics changes" title="Direct link to Metrics changes"></a></h4><ul><li>Add latency stats for entry location index lookup so that possible RocksDB bottleneck can be detected. <a href="https://github.com/apache/bookkeeper/pull/3444" target="_blank" rel="noopener noreferrer">PR #3444</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4151">4.15.1<a href="#4151" class="hash-link" aria-label="Direct link to 4.15.1" title="Direct link to 4.15.1"></a></h2><p>Release 4.15.1 contains performance and stability improvements, new metrics, and various bug fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.1.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-12">Highlights<a href="#highlights-12" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-12">Bugs<a href="#bugs-12" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>Fix AutoRecovery memory leak. <a href="https://github.com/apache/bookkeeper/pull/3361" target="_blank" rel="noopener noreferrer">PR #3361</a></li><li>Fix: NPE in RackawareEnsemblePlacementPolicyImpl logged by AutoRecovery. <a href="https://github.com/apache/bookkeeper/pull/3350" target="_blank" rel="noopener noreferrer">PR #3350</a></li><li>Fix underReplicatedLedgerTotalSize calculate problem. <a href="https://github.com/apache/bookkeeper/pull/3337" target="_blank" rel="noopener noreferrer">PR #3337</a></li><li>Fix JVM exited when running localbookie with jdk17. <a href="https://github.com/apache/bookkeeper/pull/3334" target="_blank" rel="noopener noreferrer">PR #3334</a></li><li>Fix the V2 AddRequest object leak issue. <a href="https://github.com/apache/bookkeeper/pull/3323" target="_blank" rel="noopener noreferrer">PR #3323</a></li><li>Fix the PendingAddOp is not recycled when LedgerHandler closed. <a href="https://github.com/apache/bookkeeper/pull/3321" target="_blank" rel="noopener noreferrer">PR #3321</a></li><li>Bookie can&#x27;t start after rebooting due the cookie mistmatch. <a href="https://github.com/apache/bookkeeper/pull/3308" target="_blank" rel="noopener noreferrer">PR #3308</a></li><li>Close journal channel in testJunkEndedJournal. <a href="https://github.com/apache/bookkeeper/pull/3307" target="_blank" rel="noopener noreferrer">PR #3307</a></li><li>Fix jvm_memory_direct_bytes_used metrics when using jdk11+. <a href="https://github.com/apache/bookkeeper/pull/3252" target="_blank" rel="noopener noreferrer">PR #3252</a></li><li>AutoRecovery does not process underreplicated empty ledgers. <a href="https://github.com/apache/bookkeeper/pull/3239" target="_blank" rel="noopener noreferrer">PR #3239</a></li><li>Fix wrong ledger id parse radix for index relocation file in IndexPersistenceMgr. <a href="https://github.com/apache/bookkeeper/pull/2944" target="_blank" rel="noopener noreferrer">PR #2944</a></li><li>Fix the infinite waiting for shutdown due to throttler limit. <a href="https://github.com/apache/bookkeeper/pull/2942" target="_blank" rel="noopener noreferrer">PR #2942</a></li><li>Make sure the LedgerHandle close callback can be completed when encounter exception. <a href="https://github.com/apache/bookkeeper/pull/2913" target="_blank" rel="noopener noreferrer">PR #2913</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-7">Improvements<a href="#improvements-7" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>If ensembleList is empty, return PlacementPolicyAdherence.FAIL. <a href="https://github.com/apache/bookkeeper/pull/3369" target="_blank" rel="noopener noreferrer">PR #3369</a></li><li>reduce unnecessary checkpoints. <a href="https://github.com/apache/bookkeeper/pull/3341" target="_blank" rel="noopener noreferrer">PR #3341</a></li><li>Pre break loop when self create layoutZNode succeed. <a href="https://github.com/apache/bookkeeper/pull/3335" target="_blank" rel="noopener noreferrer">PR #3335</a></li><li>Avoid init WriteSet when waitForWriteSetMs &lt; 0. <a href="https://github.com/apache/bookkeeper/pull/3325" target="_blank" rel="noopener noreferrer">PR #3325</a></li><li>Tuning PendingReadOp.java seq. <a href="https://github.com/apache/bookkeeper/pull/3330" target="_blank" rel="noopener noreferrer">PR #3330</a></li><li>Apply the backpressure changes on the V2 requests. <a href="https://github.com/apache/bookkeeper/pull/3324" target="_blank" rel="noopener noreferrer">PR #3324</a></li><li>Deduplicate error log for SSLException. <a href="https://github.com/apache/bookkeeper/pull/3320" target="_blank" rel="noopener noreferrer">PR #3320</a></li><li>Switch to rely on SslEngine for Hostname Verification. <a href="https://github.com/apache/bookkeeper/pull/3310" target="_blank" rel="noopener noreferrer">PR #3310</a></li><li>Try to use Java9 CRC32C when JNI based CRC is not available. <a href="https://github.com/apache/bookkeeper/pull/3309" target="_blank" rel="noopener noreferrer">PR #3309</a></li><li>Enhance future sync wait. <a href="https://github.com/apache/bookkeeper/pull/3336" target="_blank" rel="noopener noreferrer">PR #3336</a></li><li>validate diskUsageThreshold and diskUsageLwmThreshold. <a href="https://github.com/apache/bookkeeper/pull/3285" target="_blank" rel="noopener noreferrer">PR #3285</a></li><li>Replace unsafe NoEntryException with IOException. <a href="https://github.com/apache/bookkeeper/pull/2909" target="_blank" rel="noopener noreferrer">PR #2909</a></li><li>let bookie quit if journal thread exit. <a href="https://github.com/apache/bookkeeper/pull/2887" target="_blank" rel="noopener noreferrer">PR #2887</a></li><li>Ledger replicate supports throttle. <a href="https://github.com/apache/bookkeeper/pull/2778" target="_blank" rel="noopener noreferrer">PR #2778</a></li><li>minorCompactionInterval should be greater than gcWaitTime. <a href="https://github.com/apache/bookkeeper/pull/2116" target="_blank" rel="noopener noreferrer">PR #2116</a></li><li>Optimize concurrent collection&#x27;s shrink logic. <a href="https://github.com/apache/bookkeeper/pull/3417" target="_blank" rel="noopener noreferrer">PR #3417</a></li><li>Make BookieFileChannel interface public. <a href="https://github.com/apache/bookkeeper/pull/3396" target="_blank" rel="noopener noreferrer">PR #3396</a></li><li>Prioritize compaction of entry logs with the lowest amount of remaining usable data. <a href="https://github.com/apache/bookkeeper/pull/3390" target="_blank" rel="noopener noreferrer">PR #3390</a></li><li>Switch back ordered executor to LinkedBlockingQueue. <a href="https://github.com/apache/bookkeeper/pull/3384" target="_blank" rel="noopener noreferrer">PR #3384</a></li><li>Consolidate Netty channel flushes to mitigate syscall overhead. <a href="https://github.com/apache/bookkeeper/pull/3383" target="_blank" rel="noopener noreferrer">PR #3383</a></li><li>Shut down ReplicationWorker and Auditor on non-recoverable ZK error. <a href="https://github.com/apache/bookkeeper/pull/3374" target="_blank" rel="noopener noreferrer">PR #3374</a></li><li>BP-41 Add flag to enable/disable BookieAddressResolver. <a href="https://github.com/apache/bookkeeper/pull/3356" target="_blank" rel="noopener noreferrer">PR #3356</a></li><li>release the bookie from QuarantinedBookies when health check is disabled. <a href="https://github.com/apache/bookkeeper/pull/3349" target="_blank" rel="noopener noreferrer">PR #3349</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-changes-2">Metrics changes<a href="#metrics-changes-2" class="hash-link" aria-label="Direct link to Metrics changes" title="Direct link to Metrics changes"></a></h4><ul><li>add journalCbQueueLatency. <a href="https://github.com/apache/bookkeeper/pull/3364" target="_blank" rel="noopener noreferrer">PR #3364</a></li><li>add writeThreadQueuedLatency. <a href="https://github.com/apache/bookkeeper/pull/3363" target="_blank" rel="noopener noreferrer">PR #3363</a></li><li>add metric cbThreadPoolQueueSize. <a href="https://github.com/apache/bookkeeper/pull/3424" target="_blank" rel="noopener noreferrer">PR #3424</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-10">Dependency updates<a href="#dependency-updates-10" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>Upgrade log4j2 to 2.18.0. <a href="https://github.com/apache/bookkeeper/pull/3434" target="_blank" rel="noopener noreferrer">PR #3434</a></li><li>upgrade groovy from 2.5.17 to 3.0.11 to fix CVE-2019-11358(7.5). <a href="https://github.com/apache/bookkeeper/pull/3346" target="_blank" rel="noopener noreferrer">PR #3346</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-12">Details<a href="#details-12" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.15.1+is%3Aclosed+is%3Amerged" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pulls?q=is%3Apr+label%3Arelease%2F4.15.1+is%3Aclosed+is%3Amerged</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4150">4.15.0<a href="#4150" class="hash-link" aria-label="Direct link to 4.15.0" title="Direct link to 4.15.0"></a></h2><p>Release 4.15 includes many upgrades to third party libraries marked with CVEs,
adds more configuration options, extends REST API,
adds an option to run without journal, improves memory utilization and stability, and more!</p><p>Apache BookKeeper users are encouraged to upgrade to 4.15.0. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes-2">Breaking Changes<a href="#breaking-changes-2" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes"></a></h3><ul><li><p><code>BookieServer</code> API changed and the code that creates its instances will require addition
of the <code>UncleanShutdownDetection</code> parameter.
See <a href="https://github.com/apache/bookkeeper/pull/2936" target="_blank" rel="noopener noreferrer">PR 2936</a> for details and examples.</p></li><li><p><code>Bookie</code> class now is an interface with implementation in <code>BookieImpl</code>.
Code that uses it may need changes.
For details please refer to <a href="https://github.com/apache/bookkeeper/pull/2717" target="_blank" rel="noopener noreferrer">PR 2717</a>.</p></li><li><p><code>LedgerUnderreplicationManager</code> interface added a new method.
Code that implements the interface will need changes.
See <a href="https://github.com/apache/bookkeeper/pull/2805" target="_blank" rel="noopener noreferrer">PR 2805</a> for details.</p></li><li><p><code>MetadataBookieDriver</code> interface added a new method and removed an old one.
<code>RegistrationManager</code> interface added a new method.
<code>ByteBufAllocatorWithOomHandler</code> interface is added and used instead of
the <code>ByteBufAllocator</code> in multiple places.
Code that implements the interfaces will need changes.
See <a href="https://github.com/apache/bookkeeper/pull/2901" target="_blank" rel="noopener noreferrer">PR 2901</a> for details.</p></li><li><p>RocksDB configuration moves to the independent configuration files.
We used to place the RocksDB configuration properties in the <code>bk_server.conf</code>. Now it moved to the independent files
<code>entry_location_rocksdb.conf</code> and <code>ledger_metadata_rocksdb.conf</code>.
The existing configuration in the <code>bk_server.conf</code> for the RocksDB will invalidate.
See <a href="https://github.com/apache/bookkeeper/pull/3056" target="_blank" rel="noopener noreferrer">PR 3056</a> for details.</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-13">Highlights<a href="#highlights-13" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h4><ul><li><a href="https://github.com/apache/bookkeeper/pull/2708" target="_blank" rel="noopener noreferrer">ledgerMetadataVersion</a>:
BookKeeper-Client config to write ledger metadata with configured version.</li><li><a href="https://github.com/apache/bookkeeper/pull/2761" target="_blank" rel="noopener noreferrer">clientTcpUserTimeoutMillis</a>:
Added TCP_USER_TIMEOUT to Epoll channel config.</li><li><a href="https://github.com/apache/bookkeeper/pull/2802" target="_blank" rel="noopener noreferrer">auditorMaxNumberOfConcurrentOpenLedgerOperations and auditorAcquireConcurrentOpenLedgerOperationsTimeOutMSec</a>
Add auditor get ledger throttle to avoid auto recovery zk session.</li><li><a href="https://github.com/apache/bookkeeper/pull/2824" target="_blank" rel="noopener noreferrer">dbStorage_rocksDB_format_version</a>
make rocksdb format version configurable.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="features-2">Features<a href="#features-2" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features"></a></h4><ul><li>Running without journal. See <a href="https://github.com/apache/bookkeeper/pull/2706" target="_blank" rel="noopener noreferrer">BP-46</a> for details.</li><li>A REST API to get or update bookie readOnly state. <a href="https://github.com/apache/bookkeeper/pull/2799" target="_blank" rel="noopener noreferrer">Details</a></li><li>Separate config files for Rocks DB. <a href="https://github.com/apache/bookkeeper/pull/3056/" target="_blank" rel="noopener noreferrer">Details</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-8">Improvements<a href="#improvements-8" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>Build and tests work on JDK 17</li><li>CLI: listunderreplicated command has an option to return count without printing all ledgers <a href="https://github.com/apache/bookkeeper/pull/3228" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3228</a></li><li>Stream Storage: support an optional time to live (TTL) on a per table basis <a href="https://github.com/apache/bookkeeper/pull/2775" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2775</a></li><li>Added dDb ledger index rebuild operation and CLI commands <a href="https://github.com/apache/bookkeeper/pull/2774" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2774</a></li><li>Support multi ledger directories for rocksdb backend entryMetadataMap <a href="https://github.com/apache/bookkeeper/pull/2965" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2965</a></li><li>Improved memory utilization<ul><li>support shrink for ConcurrentLong map or set <a href="https://github.com/apache/bookkeeper/pull/3074" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3074</a></li><li>reduce unnecessary expansions for ConcurrentLong map and set <a href="https://github.com/apache/bookkeeper/pull/3072" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3072</a></li></ul></li><li>read speed rate limiter for scanning entry log file in entryMetadataMap rebuild <a href="https://github.com/apache/bookkeeper/pull/2963" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2963</a></li><li>Other improvements in areas such as test, documentation, CI, metrics, logging, and CLI tools.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="notable-fixes-1">Notable fixes<a href="#notable-fixes-1" class="hash-link" aria-label="Direct link to Notable fixes" title="Direct link to Notable fixes"></a></h4><ul><li>Bookkeeper client might not close the channel for several minutes after a Bookie crashes <a href="https://github.com/apache/bookkeeper/issues/2482" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/2482</a></li><li>Stream storage: Ensure progress while restoring from checkpoint. <a href="https://github.com/apache/bookkeeper/pull/2764" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2764</a></li><li>Entry Log GC may get blocked when using entryLogPerLedgerEnabled option <a href="https://github.com/apache/bookkeeper/pull/2779" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2779</a></li><li>Fix region aware placement policy use disk weight <a href="https://github.com/apache/bookkeeper/pull/2981" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2981</a></li><li>Some cases that could cause RocksDB segfault</li><li>DistributedLogManager can skip over a segment on read. <a href="https://github.com/apache/bookkeeper/pull/3064" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3064</a></li><li>Backpressure: check all bookies of writeset are writable <a href="https://github.com/apache/bookkeeper/pull/3055" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3055</a></li><li>Fix Journal.ForceWriteThread.forceWriteRequests.put deadlock <a href="https://github.com/apache/bookkeeper/pull/2962" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2962</a></li><li>PendingReadOp: Fix ledgerEntryImpl reuse problem <a href="https://github.com/apache/bookkeeper/pull/3110" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3110</a></li><li>Region/rack aware placement policy: replace bookie bug <a href="https://github.com/apache/bookkeeper/pull/2642" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/2642</a></li><li>ReplicationWorker: numLedgersReplicated metric does not update <a href="https://github.com/apache/bookkeeper/pull/3218" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3218</a></li><li>Force GC doesn&#x27;t work under forceAllowCompaction when disk is full <a href="https://github.com/apache/bookkeeper/pull/3205" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/3205</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-changes">Dependencies changes<a href="#dependencies-changes" class="hash-link" aria-label="Direct link to Dependencies changes" title="Direct link to Dependencies changes"></a></h4><p>Upgraded dependencies to address CVEs include:</p><ul><li>vertx</li><li>freebuilder</li><li>libthrift</li><li>netty</li><li>bouncycastle</li><li>commonsIO</li><li>jetty</li><li>log4j</li><li>grpc</li><li>protobuf</li><li>snakeyaml</li><li>RocksDB</li><li>jackson</li><li>jackson-databind</li><li>Zookeeper</li><li>http-core</li><li>dropwizard metrics</li></ul><p>Dependency on log4j v.1 is removed.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-13">Details<a href="#details-13" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.15.0" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.15.0</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4145">4.14.5<a href="#4145" class="hash-link" aria-label="Direct link to 4.14.5" title="Direct link to 4.14.5"></a></h2><p>Release 4.14.5 includes multiple stability, performance, and security fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.5.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-14">Highlights<a href="#highlights-14" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-13">Bugs<a href="#bugs-13" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/3110]<!-- --> PendingReadOp: Fix ledgerEntryImpl reuse problem</li><li>[https://github.com/apache/bookkeeper/pull/3060]<!-- --> Catch onBookieRackChange exception</li><li>[https://github.com/apache/bookkeeper/pull/2981]<!-- --> Fix region aware placement policy use disk weight not work</li><li>[https://github.com/apache/bookkeeper/pull/2642]<!-- --> fix region/rack aware placement police replace bookie bug</li><li>[https://github.com/apache/bookkeeper/pull/3011]<!-- --> Auditor should get the LegdgerManagerFactory from the client instance</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-9">Improvements<a href="#improvements-9" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/3144]<!-- --> Revert rocksdb compaction on checkpoint to reduce cpu intensive</li><li>[https://github.com/apache/bookkeeper/pull/3117]<!-- --> Log NoLedgerException at debug level</li><li>[https://github.com/apache/bookkeeper/pull/2799]<!-- --> Add a REST API to get or update bookie readOnly state</li><li>[https://github.com/apache/bookkeeper/pull/2790]<!-- --> only update topology when bookie rack changed</li><li>[https://github.com/apache/bookkeeper/pull/2769]<!-- --> Support specifying bookie http port as a command argument</li><li>[https://github.com/apache/bookkeeper/pull/2757]<!-- --> Change log level from error to warn in getReadLacResponse</li><li>[https://github.com/apache/bookkeeper/pull/3096]<!-- --> Set BOOKIE_HTTP_PORT to make it optional in docker run</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-11">Dependency updates<a href="#dependency-updates-11" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/3167]<!-- --> Replace Log4J with Reload4J</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-14">Details<a href="#details-14" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.5" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.5</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4144">4.14.4<a href="#4144" class="hash-link" aria-label="Direct link to 4.14.4" title="Direct link to 4.14.4"></a></h2><p>Release 4.14.4 includes multiple stability, performance, and security fixes.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.4.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-15">Highlights<a href="#highlights-15" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-10">Improvements<a href="#improvements-10" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2952]<!-- --> Allow to easily override zkServers with metadataServiceUri</li><li>[https://github.com/apache/bookkeeper/pull/2935]<!-- --> ReplicationWorker should not try to create a ZK based LedgerManagerFactory</li><li>[https://github.com/apache/bookkeeper/pull/2870]<!-- --> Add skip unrecoverable ledger option for bookkeeper shell recover command</li><li>[https://github.com/apache/bookkeeper/pull/2847]<!-- --> ISSUE #2846 Allow to run on java 17</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-12">Dependency updates<a href="#dependency-updates-12" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2934]<!-- --> Upgrade to Grpc 1.42.1</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-15">Details<a href="#details-15" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.4" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.4</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4143">4.14.3<a href="#4143" class="hash-link" aria-label="Direct link to 4.14.3" title="Direct link to 4.14.3"></a></h2><p>Release 4.14.3 includes multiple stability, performance, and security fixes along with the fix for Prometheus metrics.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.3.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-16">Highlights<a href="#highlights-16" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="improvements-11">Improvements<a href="#improvements-11" class="hash-link" aria-label="Direct link to Improvements" title="Direct link to Improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2768]<!-- --> Add metrics and internal command for AutoRecovery</li><li>[https://github.com/apache/bookkeeper/pull/2788]<!-- --> Fix npe when pulsar ZkBookieRackAffinityMapping getBookieAddressResolver</li><li>[https://github.com/apache/bookkeeper/pull/2794]<!-- --> Heap memory leak problem when ledger replication failed</li><li>[https://github.com/apache/bookkeeper/pull/2802]<!-- --> Add auditor get ledger throttle to avoid auto recovery zk session expire</li><li>[https://github.com/apache/bookkeeper/pull/2813]<!-- --> Add ensemble check to over-replicated ledger GC</li><li>[https://github.com/apache/bookkeeper/pull/2832]<!-- --> Fix semaphore leak when EntryMemTable#addEntry accepts the same entries</li><li>[https://github.com/apache/bookkeeper/pull/2833]<!-- --> Eliminate direct ZK access in ScanAndCompareGarbageCollector</li><li>[https://github.com/apache/bookkeeper/pull/2842]<!-- --> Remove direct ZK access for Auditor</li><li>[https://github.com/apache/bookkeeper/pull/2844]<!-- --> Add error handling to readLedgerMetadata in over-replicated ledger GC</li><li>[https://github.com/apache/bookkeeper/pull/2845]<!-- --> A empty implmentation of newLedgerAuditorManager in EtcdLedgerManagerFactory to fix build</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-13">Dependency updates<a href="#dependency-updates-13" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2792]<!-- --> Upgraded dependencies with CVEs</li><li>[https://github.com/apache/bookkeeper/pull/2793]<!-- --> Upgrade httpclient from 4.5.5 to 4.5.13 to address CVE-2020-13956</li><li>[https://github.com/apache/bookkeeper/pull/2811]<!-- --> Upgrade Netty to 4.1.68.Final</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-16">Details<a href="#details-16" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.3" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.3</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4142">4.14.2<a href="#4142" class="hash-link" aria-label="Direct link to 4.14.2" title="Direct link to 4.14.2"></a></h2><p>Release 4.14.2 fixes an issue with Prometheus metrics that was
found in 4.14.0.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.2.
The technical details of this release are summarized below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-14">Bugs<a href="#bugs-14" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li><p>[https://github.com/apache/bookkeeper/pull/2740]<!-- --> Fix Bouncy Castle fips incompatible issue</p><p>In #2631, the default BouncyCastle was changed from non-fips into fips version. But the default version of BouncyCastle in Pulsar is the non-fips one(aimed to make it compatible with the old version of Pulsar).</p><p>Bouncy Castle provides both FIPS and non-FIPS versions, but in a JVM, it can not include both of the 2 versions(non-Fips and Fips), and we have to exclude the current version before including the other. This makes the backward compatible a little hard, and that&#x27;s why Pulsar has to involve an individual module for Bouncy Castle.</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2762]<!-- --> Upgrade libthrift to 0.14.2 to address multiple CVEs</p><p>The current libthrift version 0.12.0 has multiple vulnerabilities: CVE-2019-0205 , CVE-2019-0210 , CVE-2020-13949</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2735]<!-- --> Exclude grpc-okhttp dependency</p><p>The okhttp dependency version 2.7.4 is old and vulnerable. This dependency isn&#x27;t needed and it causes Bookkeeper to be flagged for security vulnerabilities.</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2734]<!-- --> Upgrade Freebuilder version and fix the dependency</p><ul><li><p>Freebuilder 1.14.9 contains an outdate jquery js file which causes the library to be flagged as vulnerable with the highest threat level in Sonatype IQ vulnerability scanner. This also flags Bookkeeper as vulnerable with the highest threat level although it is a false positive and not an actual threat.</p></li><li><p>Freebuilder shouldn&#x27;t be exposed as a transitive dependency</p><ul><li>it&#x27;s an annotation processor which should be defined<ul><li><a href="https://github.com/inferred/FreeBuilder#maven" target="_blank" rel="noopener noreferrer">optional in maven</a></li><li><a href="https://github.com/inferred/FreeBuilder#gradle" target="_blank" rel="noopener noreferrer">compileOnly in gradle</a></li></ul></li></ul></li></ul></li><li><p>[https://github.com/apache/bookkeeper/pull/2693]<!-- --> Upgrade vertx to 4.3.2, addresses CVE-2018-12541</p><p>The current vertx version is 3.5.3 which has a vulnerability, CVE-2018-12541 .</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-17">Details<a href="#details-17" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.2" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.2</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4141">4.14.1<a href="#4141" class="hash-link" aria-label="Direct link to 4.14.1" title="Direct link to 4.14.1"></a></h2><p>Release 4.14.1 fixes an issue with Prometheus metrics that was
found in 4.14.0.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.1.
The technical details of this release are summarized below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bugs-15">Bugs<a href="#bugs-15" class="hash-link" aria-label="Direct link to Bugs" title="Direct link to Bugs"></a></h4><ul><li><p>[https://github.com/apache/bookkeeper/pull/2718]<!-- --> Fix prometheus metric provider bug and add test to cover label scope</p><p>After add label for prometheus metric by #2650, it will cause prometheus metric format check failed when no label specified for a statsLogger. The metric list as follow.</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-18">Details<a href="#details-18" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.1</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4140">4.14.0<a href="#4140" class="hash-link" aria-label="Direct link to 4.14.0" title="Direct link to 4.14.0"></a></h2><p>Release 4.14 adds FIPS compliance, improves compaction logic and the Stream Storage,
improves data reliability in the recovery scenarios,
fixes multiple bugs and brings critical dependencies up-to-date.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.14.0.
The technical details of this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-17">Highlights<a href="#highlights-17" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookkeeper-is-fips-compliant-by-default-now">Bookkeeper is FIPS compliant by default now<a href="#bookkeeper-is-fips-compliant-by-default-now" class="hash-link" aria-label="Direct link to Bookkeeper is FIPS compliant by default now" title="Direct link to Bookkeeper is FIPS compliant by default now"></a></h4><ul><li><p>[https://github.com/apache/bookkeeper/pull/2631]<!-- --> Make Bookkeeper FIPS compliant by default</p><p>FIPS is &#x27;Federal Information Processing Standard&#x27;.
It&#x27;s a set of guidelines for security functions such as encryption/decryption/RNG etc.
Applications running in FIPS mode are said to be more secure as they adhere to more stringent standards.</p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="data-reliability">Data reliability<a href="#data-reliability" class="hash-link" aria-label="Direct link to Data reliability" title="Direct link to Data reliability"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2616]<!-- --> Add fencing to recovery reads to avoid data loss issue</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="table-service-stream-storage-reliability-improvements">Table Service (stream storage) reliability improvements<a href="#table-service-stream-storage-reliability-improvements" class="hash-link" aria-label="Direct link to Table Service (stream storage) reliability improvements" title="Direct link to Table Service (stream storage) reliability improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2686]<!-- --> Improved handling of RocksDB tombstones</li><li>[https://github.com/apache/bookkeeper/pull/2641]<!-- --> Checksum validation for SST files</li><li>[https://github.com/apache/bookkeeper/pull/2635]<!-- --> Better handling of corrupted checkpoints</li><li>[https://github.com/apache/bookkeeper/pull/2643]<!-- --> Adjusted default rocksDbBlockCache size to 10%/numberOfLedgers of direct memory</li><li>[https://github.com/apache/bookkeeper/pull/2698]<!-- --> RocksDB log path is configurable now</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-logic-improvements">Compaction logic improvements<a href="#compaction-logic-improvements" class="hash-link" aria-label="Direct link to Compaction logic improvements" title="Direct link to Compaction logic improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2675]<!-- --> forceAllowCompaction to run only when force is set or configured interval</li><li>[https://github.com/apache/bookkeeper/pull/2670]<!-- --> Allow a customer to set a limit on the duration of the major and minor compaction runs</li><li>[https://github.com/apache/bookkeeper/pull/2645]<!-- --> Fix: The compaction status report is off by 1</li><li>[https://github.com/apache/bookkeeper/pull/2626]<!-- --> Allow force compact entry log when entry log compaction is disabled</li><li>[https://github.com/apache/bookkeeper/pull/2627]<!-- --> Allow DBLedgerStorage to force GC by disk listener</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-14">Dependency updates<a href="#dependency-updates-14" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2696]<!-- --> SECURITY: Upgraded Netty to 4.1.63.Final</li><li>[https://github.com/apache/bookkeeper/pull/2701]<!-- --> SECURITY: Removed jackson-mapper-asl dependency to resolve multiple CVEs</li><li>[https://github.com/apache/bookkeeper/pull/2697]<!-- --> Upgraded Lombok to 1.18.20 (required for Java 16 support)</li><li>[https://github.com/apache/bookkeeper/pull/2686]<!-- --> Upgraded rocksdb to 6.16.4</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="other-improvements-and-fixes">Other improvements and fixes<a href="#other-improvements-and-fixes" class="hash-link" aria-label="Direct link to Other improvements and fixes" title="Direct link to Other improvements and fixes"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2658]<!-- --> Fix: always select the same region set bug for RegionAwareEnsemblePlacementPolicy</li><li>[https://github.com/apache/bookkeeper/pull/2650]<!-- --> Allow to attach labels to metrics</li><li>[https://github.com/apache/bookkeeper/pull/2401]<!-- --> Allow to bypass journal for writes</li><li>[https://github.com/apache/bookkeeper/pull/2710]<!-- --> Imposed a memory limit on the bookie journal</li><li>[https://github.com/apache/bookkeeper/pull/2664]<!-- --> Bookkeeper client throttling logic is based upon entryId instead of ledgerId</li><li>[https://github.com/apache/bookkeeper/pull/2694]<!-- --> Performance: unnecessary copy to heap from CompositeByteBuf</li><li>[https://github.com/apache/bookkeeper/pull/2654]<!-- --> Ensure that only entries of the current ensemble are included in the ledger recovery process</li><li>[https://github.com/apache/bookkeeper/pull/2646]<!-- --> Auto-throttle read operations</li><li>[https://github.com/apache/bookkeeper/pull/2647]<!-- --> Limit read-ahead bytes to the size of the read cache</li><li>[https://github.com/apache/bookkeeper/pull/2632]<!-- --> Fixed NetworkTopologyImpl#getLeaves returning set with null value in case of non existing scope</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="other">Other<a href="#other" class="hash-link" aria-label="Direct link to Other" title="Direct link to Other"></a></h4><p>Documentation, build, CI, tests improvements</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-19">Details<a href="#details-19" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.0" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.14.0</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4130">4.13.0<a href="#4130" class="hash-link" aria-label="Direct link to 4.13.0" title="Direct link to 4.13.0"></a></h2><p>Release 4.13 improves reliability of the Stream Storage,
brings additional configuration options for the Stream Storage and Prometheus HTTP Server,
fixes multiple bugs and brings critical dependencies up-to-date.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.13.0. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-18">Highlights<a href="#highlights-18" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="table-service-stream-storage-reliability-improvements-1">Table Service (stream storage) reliability improvements<a href="#table-service-stream-storage-reliability-improvements-1" class="hash-link" aria-label="Direct link to Table Service (stream storage) reliability improvements" title="Direct link to Table Service (stream storage) reliability improvements"></a></h4><ul><li>[https://github.com/apache/pulsar/pull/9481]<!-- --> Rocksdb DLCheckpoint SST file corruption in statestore</li><li>[https://github.com/apache/bookkeeper/pull/2564]<!-- --> Fix SST file corruption</li><li>[https://github.com/apache/bookkeeper/pull/2566]<!-- --> Handling checkpoint corruption in case of bookie crash</li><li>[https://github.com/apache/bookkeeper/issues/2567]<!-- --> Save latest revision information in statestore</li><li>[https://github.com/apache/bookkeeper/pull/2568]<!-- --> Save last revision in rocksdb</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="other-improvements">Other improvements<a href="#other-improvements" class="hash-link" aria-label="Direct link to Other improvements" title="Direct link to Other improvements"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2560]<!-- --> Allow stream storage to use hostname instead of IP address</li><li>[https://github.com/apache/bookkeeper/pull/2597]<!-- --> Skip unavailable bookies during verifyLedgerFragment</li><li>[https://github.com/apache/bookkeeper/pull/2543]<!-- --> Allow to configure Prometheus HTTP Server bind address</li><li>various fixes of the tests, documentation, etc.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-updates-15">Dependency updates<a href="#dependency-updates-15" class="hash-link" aria-label="Direct link to Dependency updates" title="Direct link to Dependency updates"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2580]<!-- --> Upgrade protobuf to 3.14.0</li><li>[https://github.com/apache/bookkeeper/pull/2582]<!-- --> Upgrading GRPC version to 1.33, Netty to 4.1.50Final and ETCD client driver</li><li>[https://github.com/apache/bookkeeper/pull/2602]<!-- --> Upgrading dropwizard to 3.2.5</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-20">Details<a href="#details-20" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.13.0" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.13.0</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4121">4.12.1<a href="#4121" class="hash-link" aria-label="Direct link to 4.12.1" title="Direct link to 4.12.1"></a></h2><p>This is the 24th release of Apache BookKeeper, it contains a few bugfixes, new features and dependency upgrades</p><p>Apache BookKeeper users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.12.1</a>. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="news-and-noteworthy">News and noteworthy<a href="#news-and-noteworthy" class="hash-link" aria-label="Direct link to News and noteworthy" title="Direct link to News and noteworthy"></a></h3><ul><li>[https://github.com/apache/bookkeeper/pull/2519]<!-- --> Allow DNSToSwitchMapping to access BookieAddressResolver</li><li>[https://github.com/apache/bookkeeper/pull/2493]<!-- --> Opportunistic Striping</li><li>[https://github.com/apache/bookkeeper/pull/2398]<!-- --> getBookieInfo is stuck if no bookie is up</li><li>[https://github.com/apache/bookkeeper/pull/2491]<!-- --> Upgrade to Curator 5.1</li><li>[https://github.com/apache/bookkeeper/pull/2523]<!-- --> Update jcommander from 1.48 to 1.78</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-21">Details<a href="#details-21" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.12.1+" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.12.1+</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4120">4.12.0<a href="#4120" class="hash-link" aria-label="Direct link to 4.12.0" title="Direct link to 4.12.0"></a></h2><p>This is the 23rd release of Apache BookKeeper, it is a great milestone for the project, and we are introducing a few breaking changes on the API.
There are not changes on the wire protocol, on metadata and on persisted data on disks by default, so the new version is totally compatible with the previous ones.
With BookKeeper 4.12.0 we are making a step toward better deployment on environments with dynamic network addresses with BP-41.
We are also enhancing the new Client API by adding features that were still missing, like the ability of queryng for ledger metadata.</p><p>Apache BookKeeper users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.12.0</a>. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="news-and-noteworthy-1">News and noteworthy<a href="#news-and-noteworthy-1" class="hash-link" aria-label="Direct link to News and noteworthy" title="Direct link to News and noteworthy"></a></h3><ul><li>[https://github.com/apache/bookkeeper/pull/1901]<!-- --> Enable ExplicitLAC but default on the reader side and in the New org.apache.bookkeeper.client.api.ReadHandle API</li><li>[https://github.com/apache/bookkeeper/issues/2396]<!-- --> BP-41 Bookie Network Address Change Tracking + BookieId</li><li>[https://github.com/apache/bookkeeper/issues/2422]<!-- --> BP-42 List and Access LedgerMetadata on the new API</li><li>[https://github.com/apache/bookkeeper/pull/2433]<!-- --> Support Java 11 and switch to Java 11 default Docker images</li><li>[https://github.com/apache/bookkeeper/pull/2455]<!-- --> BP-40 clean up output for tools</li><li>[https://github.com/apache/bookkeeper/pull/2429]<!-- --> Certificate role based authorization </li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="details-22">Details<a href="#details-22" class="hash-link" aria-label="Direct link to Details" title="Direct link to Details"></a></h3><p><a href="https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.12.0+" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=+label%3Arelease%2F4.12.0+</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4111">4.11.1<a href="#4111" class="hash-link" aria-label="Direct link to 4.11.1" title="Direct link to 4.11.1"></a></h2><p>Apache BookKeeper users are encouraged to upgrade to 4.11.1. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-19">Highlights<a href="#highlights-19" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li>Upgrade Netty,Vertx and RocksDB</li><li>Better error reporting in case of ZooKeeper related errors</li><li>Fix error that prevents Garbage Collections in case of corrupted EntryLogger file</li><li>Support for Apache ZooKeeper 3.6.x</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="changes">Changes<a href="#changes" class="hash-link" aria-label="Direct link to Changes" title="Direct link to Changes"></a></h4><ul><li><p>[https://github.com/apache/bookkeeper/pull/2410]<!-- --> Upgrade the <code>vertx</code> version to 3.5.3</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2390]<!-- --> Issue #2385: NullPointerException in Zookeeper multiple operations execution with 3.6.1</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2389]<!-- --> Issue #2197: bkctl binary distribution needs a &#x27;logs&#x27; directory</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2384]<!-- --> Track ZooKeeper errors as causes of ZKException</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2383]<!-- --> fix fillReadAheadCache stat bug</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2381]<!-- --> The latency of BenchThroughputLatency may be wrong due to Integer overflow when we do a large scale benchmark test</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2380]<!-- --> NP check for print BookieSocketAddress and a better format</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2379]<!-- --> Updated netty,netty-boringssl and rocksdb</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2373]<!-- --> Issue 2264: Bookie cannot perform Garbage Collection in case of corrupted EntryLogger file</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2327]<!-- --> Bookie Client add quarantine ratio when error count exceed threshold</p></li><li><p>[https://github.com/apache/bookkeeper/pull/2415]<!-- --> Spammy log when one bookie of ensemble is down</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="compatibility">Compatibility<a href="#compatibility" class="hash-link" aria-label="Direct link to Compatibility" title="Direct link to Compatibility"></a></h3><p>This is a point release and it does not bring API changes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes">Full list of changes<a href="#full-list-of-changes" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.11.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.11.1+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4110">4.11.0<a href="#4110" class="hash-link" aria-label="Direct link to 4.11.0" title="Direct link to 4.11.0"></a></h2><p>This is the 21th release of Apache BookKeeper!</p><p>The 4.11.0 release incorporates hundreds of bug fixes, improvements, and features since previous major release, 4.10.0.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.11.0</a>. The technical details of
this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="news-and-noteworthy-2">News and noteworthy<a href="#news-and-noteworthy-2" class="hash-link" aria-label="Direct link to News and noteworthy" title="Direct link to News and noteworthy"></a></h3><ul><li>Upgraded ZooKeeper version from <code>3.4.13</code> to <code>3.5.7</code> with #2112</li><li>BookKeeper-server depends on <code>org.apache.httpcomponents-httpcore-4.4.9</code> with #2156</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="changes-1">Changes<a href="#changes-1" class="hash-link" aria-label="Direct link to Changes" title="Direct link to Changes"></a></h4><ul><li>[https://github.com/apache/bookkeeper/pull/2338]<!-- --> Fix bookie port conflict when using LocalBookKeeper</li><li>[https://github.com/apache/bookkeeper/pull/2333]<!-- --> Handle QuorumCoverage should only count unknown nodes</li><li>[https://github.com/apache/bookkeeper/pull/2326]<!-- --> Update jackson version 2.11.0</li><li>[https://github.com/apache/bookkeeper/pull/2314]<!-- --> BP-38: Publish Bookie Service Info including all advertised addresses on Metadata Service and it is backward compatible</li><li>[https://github.com/apache/bookkeeper/pull/2313]<!-- --> add REST API to manage auto-recovery</li><li>[https://github.com/apache/bookkeeper/pull/2312]<!-- --> Support metadata decoding for list-ledger api</li><li>[https://github.com/apache/bookkeeper/pull/2300]<!-- --> files: Fix TLS with with v2 protocol</li><li>[https://github.com/apache/bookkeeper/pull/2297]<!-- --> Update Arquillian Cube to 1.18.2</li><li>[https://github.com/apache/bookkeeper/pull/2291]<!-- --> Update Prometheus library to 0.8.1</li><li>[https://github.com/apache/bookkeeper/pull/2205]<!-- --> Handle empty ledger segmant while replica-check</li><li>[https://github.com/apache/bookkeeper/pull/2156]<!-- --> Add Hostname verification for bookie-mTLS</li><li>[https://github.com/apache/bookkeeper/pull/2112]<!-- --> Update ZooKeeper dependency to 3.5.7</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-1">Full list of changes<a href="#full-list-of-changes-1" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/6?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/7</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4100">4.10.0<a href="#4100" class="hash-link" aria-label="Direct link to 4.10.0" title="Direct link to 4.10.0"></a></h2><p>This is the 20th release of Apache BookKeeper!</p><p>The 4.10.0 release incorporates hundreds of bug fixes, improvements, and features since previous major release, 4.9.0.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.10.0</a>. The technical details of
this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="news-and-noteworthy-3">News and noteworthy<a href="#news-and-noteworthy-3" class="hash-link" aria-label="Direct link to News and noteworthy" title="Direct link to News and noteworthy"></a></h3><ul><li>[https://github.com/apache/bookkeeper/pull/2069]<!-- --> Use pure python implementation of MurmurHash</li><li>[https://github.com/apache/bookkeeper/pull/1934]<!-- --> Bump Netty and GRPC version</li><li>[https://github.com/apache/bookkeeper/pull/1907]<!-- --> Add new <em>bkctl</em> shell tool</li><li>[https://github.com/apache/bookkeeper/issues/1602]<!-- --> Cluster Metadata Checker</li><li>[https://github.com/apache/bookkeeper/pull/2154]<!-- --> Auto refresh TLS certificate at bookie-server</li><li>[https://github.com/apache/bookkeeper/pull/2150]<!-- --> Improve journal throughput when journalSyncData is disabled.</li><li>[https://github.com/apache/bookkeeper/pull/2147]<!-- --> Journal should respect to <code>flushWhenQueueEmpty</code> setting</li><li>[https://github.com/apache/bookkeeper/pull/2132]<!-- --> Make default Bookie scripts work on JDK11+</li><li>[https://github.com/apache/bookkeeper/pull/2128]<!-- --> Allow to override default SASL service name &#x27;bookkeeper&#x27;</li><li>[https://github.com/apache/bookkeeper/pull/2117]<!-- --> BookKeeper Admin API: Implement a method to get all the Bookies</li><li>[https://github.com/apache/bookkeeper/pull/2111]<!-- --> Ensure getStickyReadBookieIndex returns valid bookie index</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-2">Full list of changes<a href="#full-list-of-changes-2" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/6?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/6</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="492">4.9.2<a href="#492" class="hash-link" aria-label="Direct link to 4.9.2" title="Direct link to 4.9.2"></a></h2><p>This is the 18th release of Apache BookKeeper!</p><p>The 4.9.2 release incorporates a few critical bug fixes, since previous major release, 4.9.0.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.9.2</a>. The technical details of
this release are summarized below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-changes-1">Dependencies Changes<a href="#dependencies-changes-1" class="hash-link" aria-label="Direct link to Dependencies Changes" title="Direct link to Dependencies Changes"></a></h4><p>No dependency change.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bug-fixes">Bug Fixes<a href="#bug-fixes" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes"></a></h4><ul><li><a href="https://github.com/apache/bookkeeper/pull/1973" target="_blank" rel="noopener noreferrer">Issue #1973: [DLOG] Avoid double read in readahead</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1952" target="_blank" rel="noopener noreferrer">Issue #1952: Filter empty string for networkTopologyScriptFileName</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1950" target="_blank" rel="noopener noreferrer">Issue #1950: putEntryOffset translate FileInfoDeletedException</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-3">Full list of changes<a href="#full-list-of-changes-3" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.9.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.9.2+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="491">4.9.1<a href="#491" class="hash-link" aria-label="Direct link to 4.9.1" title="Direct link to 4.9.1"></a></h2><p>This is the 18th release of Apache BookKeeper!</p><p>The 4.9.1 release incorporates a few critical bug fixes, since previous major release, 4.9.0.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.9.1</a>. The technical details of
this release are summarized below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-changes-2">Dependencies Changes<a href="#dependencies-changes-2" class="hash-link" aria-label="Direct link to Dependencies Changes" title="Direct link to Dependencies Changes"></a></h4><p>No dependency change.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bug-fixes-1">Bug Fixes<a href="#bug-fixes-1" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes"></a></h4><ul><li><a href="https://github.com/apache/bookkeeper/pull/1973" target="_blank" rel="noopener noreferrer">Issue #1973: [DLOG] Avoid double read in readahead</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1952" target="_blank" rel="noopener noreferrer">Issue #1952: Filter empty string for networkTopologyScriptFileName</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1950" target="_blank" rel="noopener noreferrer">Issue #1950: putEntryOffset translate FileInfoDeletedException</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-4">Full list of changes<a href="#full-list-of-changes-4" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.9.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.9.1+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="490">4.9.0<a href="#490" class="hash-link" aria-label="Direct link to 4.9.0" title="Direct link to 4.9.0"></a></h2><p>This is the 16th release of Apache BookKeeper!</p><p>The 4.9.0 release incorporates hundreds of bug fixes, improvements, and features since previous major release, 4.8.0,
which was released four months ago. It is a new milestone in Apache BookKeeper community.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.9.0</a>. The technical details of
this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-20">Highlights<a href="#highlights-20" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The main features in 4.9.0 cover are around following areas:</p><ul><li>Dependencies Changes</li><li>Public API</li><li>Configuration</li><li>Metadata</li><li>Table Service</li><li>Operations</li><li>Builds &amp; Testing</li><li>Enhancements</li><li>Bug Fixes</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-changes-3">Dependencies Changes<a href="#dependencies-changes-3" class="hash-link" aria-label="Direct link to Dependencies Changes" title="Direct link to Dependencies Changes"></a></h4><p>Here is a list of dependencies changed in 4.9.0:</p><ul><li>Upgrade <a href="http://fasterxml.com/" target="_blank" rel="noopener noreferrer">Jackson</a> from <code>2.8.9</code> to <code>2.9.7</code>.</li><li>Upgrade <a href="https://jline.github.io/" target="_blank" rel="noopener noreferrer">Jline</a> to <code>2.11</code>.</li><li>Upgrade <a href="https://netty.io/" target="_blank" rel="noopener noreferrer">Netty</a> from <code>4.1.22</code> to <code>4.1.31</code>.</li><li>Upgrade <a href="https://www.testcontainers.org/" target="_blank" rel="noopener noreferrer">TestContainers</a> from <code>1.7.0</code> to <code>1.8.3</code>.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="public-api">Public API<a href="#public-api" class="hash-link" aria-label="Direct link to Public API" title="Direct link to Public API"></a></h4><p>There are multiple new client features introduced in 4.9.0. Here are two highlighted features:</p><ul><li>LedgerHandleAdv exposes <code>asyncAddEntry</code> variant that takes ByteBuf</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-1">Configuration<a href="#configuration-1" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h4><p>There are bunch of new settings introduced in both bookie and client in 4.9.0. Here are those settings:</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="bookie-2">Bookie<a href="#bookie-2" class="hash-link" aria-label="Direct link to Bookie" title="Direct link to Bookie"></a></h5><ul><li><code>serverNumIOThreads</code>: configures the number of IO threads for bookies
(see <a href="https://github.com/apache/bookkeeper/pull/1612" target="_blank" rel="noopener noreferrer">#1612</a>)</li><li>The default value of <code>fileInfoFormatVersionToWrite</code> is bumped from <code>0</code> to <code>1</code>.
(see <a href="https://github.com/apache/bookkeeper/pull/1689" target="_blank" rel="noopener noreferrer">#1689</a>)</li><li>The default value of <code>journalFormatVersionToWrite</code> is bumped from <code>5</code> to <code>6</code>.
(see <a href="https://github.com/apache/bookkeeper/pull/1689" target="_blank" rel="noopener noreferrer">#1689</a>)</li></ul><h5 class="anchor anchorWithStickyNavbar_LWe7" id="client-2">Client<a href="#client-2" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client"></a></h5><ul><li><code>numIOThreads</code>: configures the number of IO threads for client
(see <a href="https://github.com/apache/bookkeeper/pull/1612" target="_blank" rel="noopener noreferrer">#1612</a>)</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metadata">Metadata<a href="#metadata" class="hash-link" aria-label="Direct link to Metadata" title="Direct link to Metadata"></a></h4><p>There are a few big changes around metadata in 4.9.0. They are:</p><ul><li>Refactor ledger metadata in LedgerHandle to make ledger metadata instance immutable (see <a href="https://github.com/apache/bookkeeper/issues/281" target="_blank" rel="noopener noreferrer">#281</a>)</li><li>Store ledger metadata in binary protobuf format (see details at <a href="https://github.com/apache/bookkeeper/issues/723" target="_blank" rel="noopener noreferrer">#723</a>)</li><li>Etcd based metadata driver implementation is in BETA release (see details at <a href="https://github.com/apache/bookkeeper/issues/1639" target="_blank" rel="noopener noreferrer">#1639</a>)</li></ul><p>Additionally, there are bunch of new interfaces introduced in the metadata driver API.</p><ul><li><a href="https://github.com/apache/bookkeeper/pull/1619" target="_blank" rel="noopener noreferrer">Issue #1619: Provide async version of markLedgerUnderreplicated for LedgerUnderreplicationManager</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="table-service">Table Service<a href="#table-service" class="hash-link" aria-label="Direct link to Table Service" title="Direct link to Table Service"></a></h4><p>There are a lot of improvements and features introduced into the table service. The maturity of table service is moving from alpha to beta,
and has started to be used as the state storage for Pulsar Functions. More table service usage will come in Pulsar&#x27;s future releases.</p><p>Starting from 4.9.0, bookkeeper will release a python client for table service. See details at <a href="https://github.com/apache/bookkeeper/pull/1691" target="_blank" rel="noopener noreferrer">#1691</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="operations">Operations<a href="#operations" class="hash-link" aria-label="Direct link to Operations" title="Direct link to Operations"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="http-admin-rest-endpoint">HTTP Admin REST Endpoint<a href="#http-admin-rest-endpoint" class="hash-link" aria-label="Direct link to HTTP Admin REST Endpoint" title="Direct link to HTTP Admin REST Endpoint"></a></h5><ul><li><code>/api/v1/bookie/gc_details</code> is introduced to retrieve the GC details.</li><li><code>/api/v1/bookie/gc</code> is introduced to trigger GC through HTTP REST endpoint.</li></ul><h5 class="anchor anchorWithStickyNavbar_LWe7" id="bookieshell">BookieShell<a href="#bookieshell" class="hash-link" aria-label="Direct link to BookieShell" title="Direct link to BookieShell"></a></h5><p>There are are multiple new commands are added in BookieShell. Here are a few highlighted:</p><ul><li><code>regenerate-interleaved-storage-index-file</code> command is introduced for rebuilding the index files for interleaved based ledger storage. (<a href="https://github.com/apache/bookkeeper/pull/1642" target="_blank" rel="noopener noreferrer">#1642</a>)</li><li><code>ledgermetadata</code> command now supports dumping/restoring ledger metadata to/from file.</li><li><code>localconsistencycheck</code> command is introduce for running consistency check on bookies locally. (<a href="https://github.com/apache/bookkeeper/pull/1819" target="_blank" rel="noopener noreferrer">#1819</a>)</li><li>a new <code>bk-perf</code> script is introduced for running performance benchmark on bookkeeper. (<a href="https://github.com/apache/bookkeeper/pull/1697" target="_blank" rel="noopener noreferrer">1697</a>)</li></ul><p>A new BookKeeper CLI package is released as <code>bkctl</code>. This <code>bkctl</code> package includes both the existing bookie shell and the new <code>bkctl</code> tool.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="mdc">MDC<a href="#mdc" class="hash-link" aria-label="Direct link to MDC" title="Direct link to MDC"></a></h5><p>Mapped Diagnostic Context (MDC) is now supported at both bookie and client sides. Application request context can be passed as context
and being logged through slf4j/log4j. This simplifies throubleshooting of request-level failures/errors. See details at <a href="https://github.com/apache/bookkeeper/pull/1672" target="_blank" rel="noopener noreferrer">#1672</a>.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="stats-annotation">Stats Annotation<a href="#stats-annotation" class="hash-link" aria-label="Direct link to Stats Annotation" title="Direct link to Stats Annotation"></a></h5><p><code>StatsDoc</code> annotation is introduced in <a href="https://github.com/apache/bookkeeper/pull/1786" target="_blank" rel="noopener noreferrer">BP-36</a>. The <code>StatsDoc</code> annotation is
used for documenting stats added across the project.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="builds--testing">Builds &amp; Testing<a href="#builds--testing" class="hash-link" aria-label="Direct link to Builds &amp; Testing" title="Direct link to Builds &amp; Testing"></a></h4><ul><li>Java 11 is supported for building bookkeeper.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enhancements">Enhancements<a href="#enhancements" class="hash-link" aria-label="Direct link to Enhancements" title="Direct link to Enhancements"></a></h4><ul><li><a href="https://github.com/apache/bookkeeper/pull/1792" target="_blank" rel="noopener noreferrer">Issue 1791: Read Submission should bypass OSE Threads</a></li><li>A new module is introduced for enabling CPU affinity <a href="https://github.com/apache/bookkeeper/pull/1641" target="_blank" rel="noopener noreferrer">#1641</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1682" target="_blank" rel="noopener noreferrer">Issue 1682: Added BlockingQueue implementation based on JCtools</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1813" target="_blank" rel="noopener noreferrer">Issue 1813: Set default sizes of DbLedgerStorage read and write cache to be proportional to JVM direct memory</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1808" target="_blank" rel="noopener noreferrer">Issue 1808: Allow to configure sticky reads</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1754" target="_blank" rel="noopener noreferrer">Issue 1754: Netty allocator wrapper</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bug-fixes-2">Bug Fixes<a href="#bug-fixes-2" class="hash-link" aria-label="Direct link to Bug Fixes" title="Direct link to Bug Fixes"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="bookie-3">Bookie<a href="#bookie-3" class="hash-link" aria-label="Direct link to Bookie" title="Direct link to Bookie"></a></h5><ul><li><a href="https://github.com/apache/bookkeeper/pull/1414" target="_blank" rel="noopener noreferrer">Issue #1414: Ensure BufferedChannel instance is properly closed</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1805" target="_blank" rel="noopener noreferrer">Issue #1805: Fixed Auth with V2 protocol</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1769" target="_blank" rel="noopener noreferrer">Issue #1769: prevent race between flush and delete from recreating index</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1807" target="_blank" rel="noopener noreferrer">Issue #1807: Fix sorted ledger storage rotating entry log files too frequent</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1843" target="_blank" rel="noopener noreferrer">Issue #1843: DbLedgerStorage should do periodical flush</a></li></ul><h5 class="anchor anchorWithStickyNavbar_LWe7" id="autorecovery-2">AutoRecovery<a href="#autorecovery-2" class="hash-link" aria-label="Direct link to AutoRecovery" title="Direct link to AutoRecovery"></a></h5><ul><li><a href="https://github.com/apache/bookkeeper/pull/1608" target="_blank" rel="noopener noreferrer">Issue #1578: Fixed deadlock in auditor blocking ZK thread</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1834" target="_blank" rel="noopener noreferrer">Issue #1834: Only publish suspect ledgers if they have missing fragments</a></li></ul><h5 class="anchor anchorWithStickyNavbar_LWe7" id="client-3">Client<a href="#client-3" class="hash-link" aria-label="Direct link to Client" title="Direct link to Client"></a></h5><ul><li><a href="https://github.com/apache/bookkeeper/pull/1762" target="_blank" rel="noopener noreferrer">Issue #1762: Don&#x27;t cache Bookie hostname DNS resolution forever</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1788" target="_blank" rel="noopener noreferrer">Issue #1788: Fix bugs in DefaultEnsemblePlacementPolicy</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1862" target="_blank" rel="noopener noreferrer">Issue #1862: Fix selectFromNetworkLocation in RackawareEnsemblePlacementPolicyImpl</a></li><li><a href="https://github.com/apache/bookkeeper/pull/1857" target="_blank" rel="noopener noreferrer">Issue #1857: changingEnsemble should be negated before calling unset success</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-5">Full list of changes<a href="#full-list-of-changes-5" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/5?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/5</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="482">4.8.2<a href="#482" class="hash-link" aria-label="Direct link to 4.8.2" title="Direct link to 4.8.2"></a></h2><p>This is the 17th release of Apache BookKeeper!</p><p>The 4.8.2 release is a bugfix release which fixes a bunch of issues reported from users of 4.8.1.</p><p>Apache BookKeeper users who are using 4.8.1 are encouraged to upgrade to 4.8.2. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-21">Highlights<a href="#highlights-21" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>[DLOG]<!-- --> Avoid double read in readahead, see <a href="https://github.com/apache/bookkeeper/pull/1973" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1973</a></p></li><li><p>Small fix wrong nodesUninitialized count when checkCovered, see <a href="https://github.com/apache/bookkeeper/pull/1900" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1900</a></p></li><li><p>Handle double bookie failures, see <a href="https://github.com/apache/bookkeeper/pull/1886" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1886</a></p></li><li><p>dir_<!-- -->*<!-- -->_usage stats are reported as 0, see <a href="https://github.com/apache/bookkeeper/pull/1884" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1884</a></p></li><li><p>Fix selectFromNetworkLocation in RackawareEnsemblePlacementPolicyImpl, see <a href="https://github.com/apache/bookkeeper/pull/1862" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1862</a></p></li><li><p>DbLedgerStorage should do periodical flush, see <a href="https://github.com/apache/bookkeeper/pull/1842" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1842</a></p></li><li><p>Add rest endpoint trigger_gc to trigger GC on Bookie, see <a href="https://github.com/apache/bookkeeper/pull/1838" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1838</a></p></li><li><p>Fix sorted ledger storage rotating entry log files too frequent, see <a href="https://github.com/apache/bookkeeper/pull/1807" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1807</a></p></li><li><p>Fixed Auth with v2 protocol, see <a href="https://github.com/apache/bookkeeper/pull/1805" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1805</a></p></li><li><p>[tools]<!-- --> add cookie related commands, see <a href="https://github.com/apache/bookkeeper/pull/1794" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1974</a></p></li><li><p>[tools]<!-- --> improve bkctl help message, see <a href="https://github.com/apache/bookkeeper/pull/1793" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1793</a></p></li><li><p>Read Submission should bypass OSE Threads, see <a href="https://github.com/apache/bookkeeper/pull/1791" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1791</a></p></li><li><p>Cache InetSocketAddress if hostname is IPAddress, see <a href="https://github.com/apache/bookkeeper/pull/1789" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1789</a></p></li><li><p>Fix bugs in DefaultEnsemblePlacementPolicy, see <a href="https://github.com/apache/bookkeeper/pull/1788" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1788</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-changes-2">Dependency Changes<a href="#dependency-changes-2" class="hash-link" aria-label="Direct link to Dependency Changes" title="Direct link to Dependency Changes"></a></h4><p>There is no dependency upgrade from 4.8.1.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-6">Full list of changes<a href="#full-list-of-changes-6" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.8.2+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.8.2+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="481">4.8.1<a href="#481" class="hash-link" aria-label="Direct link to 4.8.1" title="Direct link to 4.8.1"></a></h2><p>This is the 14th release of Apache BookKeeper!</p><p>The 4.8.1 release is a bugfix release which fixes a bunch of issues reported from users of 4.8.0.</p><p>Apache BookKeeper users who are using 4.8.0 are encouraged to upgrade to 4.8.1. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-22">Highlights<a href="#highlights-22" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Use default metrics registry in Prometheus exporter, see <a href="https://github.com/apache/bookkeeper/pull/1765" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1765</a></p></li><li><p>Don&#x27;t cache Bookie hostname DNS resolution forever, see <a href="https://github.com/apache/bookkeeper/pull/1762" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1762</a></p></li><li><p>Reduce stack traces in logs for common cases, see <a href="https://github.com/apache/bookkeeper/pull/1776" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1762</a></p></li><li><p>Ledger deletion racing with flush can cause a ledger index to be resurrected, see <a href="https://github.com/apache/bookkeeper/pull/1757" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1757</a></p></li><li><p>EntryMemTable.newEntry retains reference to passed ByteBuffer array, can cause corruption on journal replay, see <a href="https://github.com/apache/bookkeeper/pull/1737" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1737</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-changes-3">Dependency Changes<a href="#dependency-changes-3" class="hash-link" aria-label="Direct link to Dependency Changes" title="Direct link to Dependency Changes"></a></h4><p>There is no dependecy upgrade from 4.8.0.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-7">Full list of changes<a href="#full-list-of-changes-7" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.8.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.8.1+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="480">4.8.0<a href="#480" class="hash-link" aria-label="Direct link to 4.8.0" title="Direct link to 4.8.0"></a></h2><p>This is the 13th release of Apache BookKeeper!</p><p>The 4.8.0 release incorporates hundreds of bug fixes, improvements, and features since previous major release, 4.7.0.
It is a new big milestone in Apache BookKeeper community,
this release include great new features, like Relaxed Durability, Stream Storage service and Multiple active Entrylogs.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.8.0</a>. The technical details of
this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-23">Highlights<a href="#highlights-23" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The main features in 4.8.0 are around following areas:</p><ul><li>Durability</li><li>ExplicitLAC feature</li><li>New Table Storage Service</li><li>Bug Fixes</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="new-writeflag-deferred_sync">New WriteFlag DEFERRED_SYNC<a href="#new-writeflag-deferred_sync" class="hash-link" aria-label="Direct link to New WriteFlag DEFERRED_SYNC" title="Direct link to New WriteFlag DEFERRED_SYNC"></a></h4><p>The writer may ask for temporary relaxed durability writes, that is to receive early acknowledge from Bookies, before an fsync() on Journal.
Together with this new flag we introduced the new WriteHandle#force() API, this this API the writer is able to request an explicit guarantee of durability to the Bookies
it is mostly like and explicit fsync() on a file system.</p><p>See <a href="https://bookkeeper.apache.org//docs/latest/api/javadoc/javadoc/org/apache/bookkeeper/client/api/WriteFlag" target="_blank" rel="noopener noreferrer"><code>DEFERRED_SYNC</code></a> and <a href="https://bookkeeper.apache.org//docs/latest/api/javadoc/javadoc/org/apache/bookkeeper/client/api/ForceableHandle" target="_blank" rel="noopener noreferrer">force()</a> for reference</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="new-behaviour-for-netty-bytebuf-reference-count-management">New behaviour for Netty ByteBuf reference count management<a href="#new-behaviour-for-netty-bytebuf-reference-count-management" class="hash-link" aria-label="Direct link to New behaviour for Netty ByteBuf reference count management" title="Direct link to New behaviour for Netty ByteBuf reference count management"></a></h4><p>All the client side APIs which take ByteBufs now will have the net effect of decrementing by 1 the refcount.
This is consistent with general contract of Netty.
It is expected that the client passes the ownership of the ByteBuf to BookKeeper client.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="multiple-active-entrylogs">Multiple Active Entrylogs<a href="#multiple-active-entrylogs" class="hash-link" aria-label="Direct link to Multiple Active Entrylogs" title="Direct link to Multiple Active Entrylogs"></a></h4><p>It is now possible on the Bookie to have multiple active entry loggers,
this new feature will help with compaction performance and some specific workloads.</p><p>See <a href="https://github.com/apache/bookkeeper/issues/570" target="_blank" rel="noopener noreferrer">Multiple active entrylogs</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="table-storage-service">Table Storage Service<a href="#table-storage-service" class="hash-link" aria-label="Direct link to Table Storage Service" title="Direct link to Table Storage Service"></a></h4><p>From this version we are providing the a table (key/value) service embedded in Bookies.</p><p>See <a href="https://github.com/apache/bookkeeper/issues/1205" target="_blank" rel="noopener noreferrer">BP-30: BookKeeper Table Service</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="make-explicitlac-persistent">Make ExplicitLAC persistent<a href="#make-explicitlac-persistent" class="hash-link" aria-label="Direct link to Make ExplicitLAC persistent" title="Direct link to Make ExplicitLAC persistent"></a></h4><p>ExplicitLAC was contributed from Salesforce in 4.5.0 release, but in the first release
it was a beft-effort in-memory mechanism. Now you can configure Bookies to store durably ExplicitLAC.</p><p>See <a href="https://github.com/apache/bookkeeper/issues/1527" target="_blank" rel="noopener noreferrer">Make ExplicitLAC persistent</a></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="ensemble-change-on-delayed-write-failure">Ensemble change on Delayed Write Failure<a href="#ensemble-change-on-delayed-write-failure" class="hash-link" aria-label="Direct link to Ensemble change on Delayed Write Failure" title="Direct link to Ensemble change on Delayed Write Failure"></a></h4><p>We are handling more gracefully the case of a failure of a Bookie in spite of a succeeded write.
If you are writing with Ack Quorum = 2 and Write Quorum = 3, writes will succeeed even if 1 of 3 Bookies fail,
now BookKeeper will trigger an <em>ensemble change</em> and replace the failed bookie earlier.</p><p>See <a href="https://github.com/apache/bookkeeper/issues/1390" target="_blank" rel="noopener noreferrer">Ensemble change on Delayed Write Failure</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-8">Full list of changes<a href="#full-list-of-changes-8" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/4?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/4</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="473">4.7.3<a href="#473" class="hash-link" aria-label="Direct link to 4.7.3" title="Direct link to 4.7.3"></a></h2><p>This is the 16th release of Apache BookKeeper!</p><p>The 4.7.3 release is a bugfix release which fixes a bunch of issues reported from users of 4.7.2.</p><p>Apache BookKeeper users who are using 4.7.2 are encouraged to upgrade to 4.7.3. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-24">Highlights<a href="#highlights-24" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Cancel Scheduled SpeculativeReads, see <a href="https://github.com/apache/bookkeeper/pull/1665" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1665</a></p></li><li><p>IllegalReferenceCountException at closing EntryLogManagerForSingleEntryLog, see <a href="https://github.com/apache/bookkeeper/issues/1703" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1703</a></p></li><li><p>EntryMemTable.newEntry retains reference to passed ByteBuffer array can cause corruption on journal replay, see <a href="https://github.com/apache/bookkeeper/issues/1737" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1737</a></p></li><li><p>Ledger deletion racing with flush can cause a ledger index to be resurrected, see <a href="https://github.com/apache/bookkeeper/issues/1757" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1757</a></p></li><li><p>Don&#x27;t cache Bookie hostname DNS resolution forever, see <a href="https://github.com/apache/bookkeeper/pull/1762" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1762</a></p></li><li><p>Use default metric registry in Prometheus export, see <a href="https://github.com/apache/bookkeeper/pull/1765" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1765</a></p></li><li><p>Fix Auth with v2 protocol, see <a href="https://github.com/apache/bookkeeper/pull/1805" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1805</a></p></li><li><p>Remove MathUtils.now to address compaction scheduling deplay issues, see <a href="https://github.com/apache/bookkeeper/pull/1837" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1837</a></p></li><li><p>DbLedgerStorage should do periodical flush, see <a href="https://github.com/apache/bookkeeper/pull/1843" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1843</a></p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-9">Full list of changes<a href="#full-list-of-changes-9" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.3+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.3+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="472">4.7.2<a href="#472" class="hash-link" aria-label="Direct link to 4.7.2" title="Direct link to 4.7.2"></a></h2><p>This is the 12th release of Apache BookKeeper!</p><p>The 4.7.2 release is a bugfix release which fixes a bunch of issues reported from users of 4.7.1.</p><p>Apache BookKeeper users who are using 4.7.1 are encouraged to upgrade to 4.7.2. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-25">Highlights<a href="#highlights-25" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Fix high cpu usage issue in DbLedgerStorage by avoiding using RocksDD#deleteRange, see <a href="https://github.com/apache/bookkeeper/pull/1620" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1620</a></p></li><li><p>Fix deadlock in Auditor blocking zookeeper thread, see <a href="https://github.com/apache/bookkeeper/pull/1619" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1619</a></p></li><li><p>Fix ArrayIndexOutOfBoundsException on ConcurrentLongHashMap, see <a href="https://github.com/apache/bookkeeper/pull/1606" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1606</a></p></li><li><p>Fix deferred failure handling causes data loss, see <a href="https://github.com/apache/bookkeeper/pull/1591" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1591</a></p></li><li><p>Fix ConcurrentModificationException using nonblocking logReader#readNext, see <a href="https://github.com/apache/bookkeeper/pull/1544" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1544</a></p></li><li><p>Fix Bookie shutdown fails to exit, see <a href="https://github.com/apache/bookkeeper/issues/1543" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1543</a></p></li><li><p>Fix race conditions on accessing guava multimap in PCBC when using v2 protocol, see <a href="https://github.com/apache/bookkeeper/pull/1618" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1618</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-changes-4">Dependency Changes<a href="#dependency-changes-4" class="hash-link" aria-label="Direct link to Dependency Changes" title="Direct link to Dependency Changes"></a></h4><p>In 4.7.2, <a href="https://zookeeper.apache.org/" target="_blank" rel="noopener noreferrer">Zookeeper</a> version is downgraded from <code>3.5.3-beta</code> to <code>3.4.13</code> to avoid having a <code>beta</code> dependency and address maturity concerns.
The downgrade is safe and smooth. No extra actions are required from switching bookkeeper 4.7.1 to 4.7.2.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-10">Full list of changes<a href="#full-list-of-changes-10" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.2+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.2+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="471">4.7.1<a href="#471" class="hash-link" aria-label="Direct link to 4.7.1" title="Direct link to 4.7.1"></a></h2><p>This is the eleventh release of Apache BookKeeper!</p><p>The 4.7.1 release is a bugfix release which fixes a bunch of issues reported from users of 4.7.0.</p><p>Apache BookKeeper users who are using 4.7.0 are encouraged to upgrade to 4.7.1. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-26">Highlights<a href="#highlights-26" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Performance enhancement on eliminating bytes copying in <code>AddEntry</code> code path, see <a href="https://github.com/apache/bookkeeper/pull/1361" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1361</a></p></li><li><p>Introduce Fast and Garbage-Free Statistics Timers in Codahale Stats Provider, see <a href="https://github.com/apache/bookkeeper/pull/1364" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1364</a></p></li><li><p>Fix OrderedScheduler handling null key, see <a href="https://github.com/apache/bookkeeper/pull/1372" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1372</a></p></li><li><p>Fix zookeeper ledger manager on handling no ledger exists, see <a href="https://github.com/apache/bookkeeper/pull/1382" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1382</a></p></li><li><p>Fix long poll reads when ensemble size is larger than write quorum size, see <a href="https://github.com/apache/bookkeeper/pull/1404" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1404</a></p></li><li><p>Fix IllegalReferenceCount on filling readahead cache for DbLedgerStorage, see <a href="https://github.com/apache/bookkeeper/issues/1487" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1487</a></p></li><li><p>Fix LedgerEntry recycling issue on long poll speculative reads, see <a href="https://github.com/apache/bookkeeper/pull/1509" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1509</a></p></li><li><p>Various bug fixes and improvements around bookkeeper table service, see changes under <a href="https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=is%3Aclosed+label%3Aarea%2Ftableservice+label%3Arelease%2F4.7.1" target="_blank" rel="noopener noreferrer">apache/bookkeeper#release/4.7.1</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade">Dependencies Upgrade<a href="#dependencies-upgrade" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><p>Here is a list of dependencies changed in 4.7.1:</p><ul><li><a href="https://grpc.io/" target="_blank" rel="noopener noreferrer">Grpc</a> is upgraded from <code>1.5.0</code> to <code>1.12.0</code>. See <a href="https://github.com/apache/bookkeeper/pull/1441" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1441</a></li><li><a href="http://netty.io/" target="_blank" rel="noopener noreferrer">Netty</a> is upgraded from <code>4.1.12</code> to <code>4.1.22</code>. See <a href="https://github.com/apache/bookkeeper/pull/1441" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1441</a></li><li><a href="https://developers.google.com/protocol-buffers/" target="_blank" rel="noopener noreferrer">Protobuf</a> is upgraded from <code>3.4.0</code> to <code>3.5.1</code>. See <a href="https://github.com/apache/bookkeeper/pull/1466" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1466</a></li><li><a href="http://rocksdb.org/" target="_blank" rel="noopener noreferrer">RocksDB</a> is upgraded from <code>5.8.6</code> to <code>5.13.1</code>. See <a href="https://github.com/apache/bookkeeper/pull/1466" target="_blank" rel="noopener noreferrer">apache/bookkeeper#1466</a></li></ul><p><code>Reflective setAccessible(true)</code> is disabled by default in Netty while using java9+. This might result in performance degradation. Consider reenabling <code>Reflective setAccessible(true)</code> by setting
environment value <code>io.netty.tryReflectionSetAccessible</code> to <code>true</code>. See <a href="https://github.com/netty/netty/pull/7650" target="_blank" rel="noopener noreferrer">netty/netty#7650</a> for more details.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-11">Full list of changes<a href="#full-list-of-changes-11" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?q=label%3Arelease%2F4.7.1+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="470">4.7.0<a href="#470" class="hash-link" aria-label="Direct link to 4.7.0" title="Direct link to 4.7.0"></a></h2><p>This is the tenth release of Apache BookKeeper!</p><p>The 4.7.0 release incorporates hundreds of bug fixes, improvements, and features since previous major release, 4.6.0,
which was released four months ago. It is a big milestone in Apache BookKeeper community - Yahoo branch is fully merged
back to upstream, and Apache Pulsar (incubating) starts using official BookKeeper release for its upcoming 2.0 release.</p><p>It is also the first release of Apache DistributedLog after it is merged as sub modules of Apache BookKeeper.</p><p>Apache BookKeeper/DistributedLog users are encouraged to <a href="/docs/admin/upgrade">upgrade to 4.7.0</a>. The technical details of
this release are summarized below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-27">Highlights<a href="#highlights-27" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The main features in 4.7.0 cover are around following areas:</p><ul><li>Dependencies Changes</li><li>Public API</li><li>Security</li><li>DbLedgerStorage</li><li>Metadata API</li><li>Performance</li><li>Operations</li><li>Builds &amp; Testing</li><li>Bug Fixes</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-changes-4">Dependencies Changes<a href="#dependencies-changes-4" class="hash-link" aria-label="Direct link to Dependencies Changes" title="Direct link to Dependencies Changes"></a></h4><p>Here is a list of dependencies changed in 4.7.0:</p><ul><li><a href="http://jcommander.org/" target="_blank" rel="noopener noreferrer">JCommander</a> 1.48 is added as a dependency of bookkeeper-server module.</li><li><a href="http://rocksdb.org/" target="_blank" rel="noopener noreferrer">RocksDB</a> 5.8.6 is introduced as part of <code>DbLedgerStorage</code> as a dependency of bookkeeper-server module.</li><li><a href="https://datasketches.github.io/" target="_blank" rel="noopener noreferrer">DataSketches</a> 0.8.3 is introduced as a dependency of prometheus-metrics-provider module.</li><li>Upgrade <a href="https://github.com/google/guava" target="_blank" rel="noopener noreferrer">Guava</a> from <code>20.0</code> to <code>21.0</code>.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="public-api-1">Public API<a href="#public-api-1" class="hash-link" aria-label="Direct link to Public API" title="Direct link to Public API"></a></h4><p>There are multiple new client features introduced in 4.7.0. Here are two highlighted features:</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="fluent-api">Fluent API<a href="#fluent-api" class="hash-link" aria-label="Direct link to Fluent API" title="Direct link to Fluent API"></a></h5><p>The new fluent style APi is evolving in 4.7.0. All the methods in handlers are now having both async and sync methods.
See <a href="https://github.com/apache/bookkeeper/pull/1288" target="_blank" rel="noopener noreferrer">#1288</a> for more details</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="crc32c">CRC32C<a href="#crc32c" class="hash-link" aria-label="Direct link to CRC32C" title="Direct link to CRC32C"></a></h5><p><code>circe-checksum</code> module is ported from Apache Pulsar to Apache BookKeeper, and CRC32C digest type is added as one digest type option.
The JNI based CRC32C in <code>circe-checksum</code> module provides excellent performance than existing CRC32 digest type. Users are encouraged
to start use CRC32C digest type.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="security">Security<a href="#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security"></a></h4><ul><li>New PEM format <code>X.509</code> certificates are introduced for TLS authentication. See <a href="https://github.com/apache/bookkeeper/pull/965" target="_blank" rel="noopener noreferrer">#965</a> for more details.</li><li>TLS related settings are converged into same settings as bookie server. See <a href="/docs/admin/upgrade">Upgrade Guide</a> for more details.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dbledgerstorage">DbLedgerStorage<a href="#dbledgerstorage" class="hash-link" aria-label="Direct link to DbLedgerStorage" title="Direct link to DbLedgerStorage"></a></h4><p><code>DbLedgerStorage</code> is a new ledger storage that introduced by Yahoo and now fully merged into Apache BookKeeper. It is fully compatible for both v2 and v3
protocols and also support long polling. It uses <a href="http://rocksdb.org/" target="_blank" rel="noopener noreferrer">RocksDB</a> to store ledger index, which eliminates the needed of ledger index files and
reduces the number of open file descriptors and the amount of random IOs can occurs during flushing ledger index.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-api">Metadata API<a href="#metadata-api" class="hash-link" aria-label="Direct link to Metadata API" title="Direct link to Metadata API"></a></h4><p>New serviceUri based metadata API is introduced as <a href="https://bookkeeper.apache.org/bps/BP-29-metadata-store-api-module" target="_blank" rel="noopener noreferrer">BP-29</a>. This metadata API provides the metadata
abstraction over ledger manager, registration service, allowing plugin different type of data stores as the metadata service.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="performance">Performance<a href="#performance" class="hash-link" aria-label="Direct link to Performance" title="Direct link to Performance"></a></h4><p>There are a lot for performance related bug fixes and improvements in 4.7.0. Some of the changes are highlighted as below:</p><ul><li>Leverage netty object recycler to reduce object allocations</li><li>A bunch of contentions around locking are removed. E.g. <a href="https://github.com/apache/bookkeeper/pull/1321" target="_blank" rel="noopener noreferrer">#1321</a> <a href="https://github.com/apache/bookkeeper/pull/1292" target="_blank" rel="noopener noreferrer">#1292</a> <a href="https://github.com/apache/bookkeeper/pull/1258" target="_blank" rel="noopener noreferrer">#1258</a></li><li>Introduce priority thread pool for accepting high priority reads/writes. This allows high priority reads/writes such as ledger recovery operations can
succeed even bookies are overwhelmed. <a href="https://github.com/apache/bookkeeper/pull/898" target="_blank" rel="noopener noreferrer">#898</a></li><li>Reorder slow bookies in read sequence. <a href="https://github.com/apache/bookkeeper/pull/883" target="_blank" rel="noopener noreferrer">#883</a></li><li>Use atomic field updater and long adder to replace AtomicInteger/AtomicLong/AtomicReference in Dlog. <a href="https://github.com/apache/bookkeeper/pull/1299" target="_blank" rel="noopener noreferrer">#1299</a></li><li>DataSketches library is used for implementing prometheus provider. <a href="https://github.com/apache/bookkeeper/pull/1245" target="_blank" rel="noopener noreferrer">#1245</a></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="operations-1">Operations<a href="#operations-1" class="hash-link" aria-label="Direct link to Operations" title="Direct link to Operations"></a></h4><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookieshell-1">BookieShell<a href="#bookieshell-1" class="hash-link" aria-label="Direct link to BookieShell" title="Direct link to BookieShell"></a></h4><p>There are are multiple new commands are added in BookieShell. Here are a few highlighted:</p><ul><li><code>metaformat</code> is deprecated with two new commands <code>initnewcluster</code> and <code>nukeexistingcluster</code>. This separation provides better operability and reduces mistakes.</li><li><code>initbookie</code> command is introduced for initializing a new bookie. <code>bookieformat</code> keeps serving as the purpose of reformatting a bookie.</li></ul><p>A new BookKeeper CLI is proposed in <a href="https://bookkeeper.apache.org/bps/BP-27-new-bookkeeper-cli" target="_blank" rel="noopener noreferrer">BP-27</a>. Some commands are already ported to new bookkeeper CLI.
The full list of shell commands will be fully ported to new bookkeeper CLI in next release.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="readonly-mode-support">ReadOnly Mode Support<a href="#readonly-mode-support" class="hash-link" aria-label="Direct link to ReadOnly Mode Support" title="Direct link to ReadOnly Mode Support"></a></h4><p>Operations are improved around readonly mode for handling bookkeeper outage situation. New settings are introduce allow entry log creation, high priority writes
even when bookies are readonly. See <a href="/docs/admin/upgrade">Upgrade Guide</a> to learn all newly added settings.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="builds--testing-1">Builds &amp; Testing<a href="#builds--testing-1" class="hash-link" aria-label="Direct link to Builds &amp; Testing" title="Direct link to Builds &amp; Testing"></a></h4><ul><li><a href="http://arquillian.org/" target="_blank" rel="noopener noreferrer">Arquillian</a> framework is introduced in 4.7.0 for backward compatibility and integration tests. </li><li>Both Java8 and Java9 are now supported for running bookkeeper.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-12">Full list of changes<a href="#full-list-of-changes-12" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/3?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/3</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="462">4.6.2<a href="#462" class="hash-link" aria-label="Direct link to 4.6.2" title="Direct link to 4.6.2"></a></h2><p>This is the ninth release of BookKeeper as an Apache Top Level Project!</p><p>The 4.6.2 release is a bugfix release which fixes a bunch of issues reported from users of 4.6.1.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.6.2. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-28">Highlights<a href="#highlights-28" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Fix performance regression is using Netty &gt; 4.1.12, see <a href="https://github.com/apache/bookkeeper/pull/1108" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/1108</a></p></li><li><p>Enhance performances on Prometheus stats provider, see <a href="https://github.com/apache/bookkeeper/pull/1081" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/1081</a></p></li><li><p>Save memory resources on client by retaining for less time references to data to write, see <a href="https://github.com/apache/bookkeeper/issues/1063" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/1063</a></p></li><li><p>Fix a problem on Java 9/10 with the &#x27;shaded&#x27; artifacts, due to a bug in Maven Shade Plugin, see <a href="https://github.com/apache/bookkeeper/pull/1144" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/1144</a></p></li><li><p>Fix Journal stats names, see <a href="https://github.com/apache/bookkeeper/pull/1250" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/1250</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade-1">Dependencies Upgrade<a href="#dependencies-upgrade-1" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><p>There is no dependency upgrade since 4.6.0, and since 4.6.1 we distribute a &#x27;shaded&#x27; version of main artifacts, see <a href="/docs/4.6.2/api/ledger-api">Ledger API</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-13">Full list of changes<a href="#full-list-of-changes-13" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.6.2+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.6.2+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="461">4.6.1<a href="#461" class="hash-link" aria-label="Direct link to 4.6.1" title="Direct link to 4.6.1"></a></h2><p>This is the eighth release of BookKeeper as an Apache Top Level Project!</p><p>The 4.6.1 release is a bugfix release which fixes a bunch of issues reported from users of 4.6.0.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.6.1. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-29">Highlights<a href="#highlights-29" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Fix critical bug on index persistence manager, see <a href="https://github.com/apache/bookkeeper/pull/913" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/913</a></p></li><li><p>Fix critical bug to allow using versions of Netty newer than 4.1.2 on classpath, see <a href="https://github.com/apache/bookkeeper/pull/996" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/996</a></p></li><li><p>Enhance Java 9 compatibility, see <a href="https://github.com/apache/bookkeeper/issues/326" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/326</a></p></li><li><p>New option to track task execution time, see <a href="https://github.com/apache/bookkeeper/issues/931" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/931</a></p></li><li><p>Distribute a version of BookKeeper which embeds and relocates Guava and Protobuf, see <a href="https://github.com/apache/bookkeeper/issues/922" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/922</a></p></li><li><p>Add description for the new error code &quot;Too many requests&quot;, see <a href="https://github.com/apache/bookkeeper/pull/921" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/921</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade-2">Dependencies Upgrade<a href="#dependencies-upgrade-2" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><p>There is no dependency upgrade since 4.6.0, but now we distribute a &#x27;shaded&#x27; version of main artifacts, see <a href="/docs/api/ledger-api">Ledger API</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-14">Full list of changes<a href="#full-list-of-changes-14" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.6.1+is%3Aclosed" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.6.1+is%3Aclosed</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="460">4.6.0<a href="#460" class="hash-link" aria-label="Direct link to 4.6.0" title="Direct link to 4.6.0"></a></h2><p>This is the seventh release of BookKeeper as an Apache Top Level Project!</p><p>The 4.6.0 release incorporates new fixes, improvements, and features since previous major release 4.5.0.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.6.0. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-30">Highlights<a href="#highlights-30" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The main features in 4.6.0 cover are around following areas:</p><ul><li>Dependencies Upgrade</li><li>Bookie enhancement</li><li>BookKeeper Admin REST API</li><li>New BookKeeper API</li><li>Performance improvement</li><li>Deployment or Ease of use </li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade-3">Dependencies Upgrade<a href="#dependencies-upgrade-3" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><ul><li>Upgrade Protobuf to <code>3.4</code>.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookie-enhancement">Bookie enhancement<a href="#bookie-enhancement" class="hash-link" aria-label="Direct link to Bookie enhancement" title="Direct link to Bookie enhancement"></a></h4><ul><li><p>Persistable bookie status.</p><ul><li>Prior to this release, bookie status was transient. It is a bit hard for management tooling. This feature adds persistable bookies status. See <a href="https://github.com/apache/bookkeeper/issues/265" target="_blank" rel="noopener noreferrer">Issue-265</a> for more details.</li></ul></li><li><p>Introduce Bookie Discovery Interface. Prior to this release, bookkeeper client only provides interfaces for ledger metadata management. It doesn&#x27;t provide any interface for service discovery part. This feature introduces bookie discovery interface, so it allows plugging in different service discovery backends for bookkeeper.</p><ul><li>Introduce Bookie Registration Manager for bookie server, see <a href="https://github.com/apache/bookkeeper/issues/662" target="_blank" rel="noopener noreferrer">Issue-662</a> for more details.</li><li>Introduce registration client for bookkeeper client, see <a href="https://github.com/apache/bookkeeper/issues/666" target="_blank" rel="noopener noreferrer">Issue-666</a> for more details.</li></ul></li><li><p>Lifecycle components for managing components in bookie server.</p><ul><li>Introduce lifecycle component for each service component, which includes &quot;stats provider&quot;, &quot;auto recovery&quot;, &quot;http endpoint&quot;, and &quot;bookie server(both storage and netty server)&quot;, to run these components in a clear way. See <a href="https://github.com/apache/bookkeeper/issues/508" target="_blank" rel="noopener noreferrer">Issue-508</a> and <a href="https://github.com/apache/bookkeeper/issues/547" target="_blank" rel="noopener noreferrer">Issue-547</a> for more details.</li></ul></li><li><p>Make bookie recovery work with recovering multiple bookies. </p><ul><li>Make recovery tool work with multiple bookies, so that one call could recover multiple bookies. See <a href="https://github.com/apache/bookkeeper/issues/612" target="_blank" rel="noopener noreferrer">Issue-612</a> for more details.</li></ul></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="bookkeeper-admin-rest-api">BookKeeper Admin REST API<a href="#bookkeeper-admin-rest-api" class="hash-link" aria-label="Direct link to BookKeeper Admin REST API" title="Direct link to BookKeeper Admin REST API"></a></h4><ul><li>Introduce a bookkeeper admin endpoint for operations to interact and administer the bookkeeper cluster using REST API. see <a href="https://github.com/apache/bookkeeper/pull/278" target="_blank" rel="noopener noreferrer">PR-278</a>, <a href="https://github.com/apache/bookkeeper/issues/520" target="_blank" rel="noopener noreferrer">Issue-520</a>, and <a href="https://github.com/apache/bookkeeper/issues/674" target="_blank" rel="noopener noreferrer">Issue-674</a> for more details.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="new-bookkeeper-api">New BookKeeper API<a href="#new-bookkeeper-api" class="hash-link" aria-label="Direct link to New BookKeeper API" title="Direct link to New BookKeeper API"></a></h4><ul><li>New Fluent Style API.<ul><li>A brand new API to manage ledgers using the Builder pattern, and new interfaces to make it clear operations on ledgers, like WriteHandle and ReadHandle, are provided in this release. See <a href="https://github.com/apache/bookkeeper/issues/506" target="_blank" rel="noopener noreferrer">Issue-506</a>, <a href="https://github.com/apache/bookkeeper/issues/673" target="_blank" rel="noopener noreferrer">Issue-673</a> and <a href="https://github.com/apache/bookkeeper/issues/550" target="_blank" rel="noopener noreferrer">Issue-550</a> for more details</li></ul></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="performance-improvement">Performance improvement<a href="#performance-improvement" class="hash-link" aria-label="Direct link to Performance improvement" title="Direct link to Performance improvement"></a></h4><ul><li><p>Use ByteBuf in multiple places to avoid unnecessary memory allocation and reduce the garbage produced in JVM. See <a href="https://github.com/apache/bookkeeper/pull/640" target="_blank" rel="noopener noreferrer">PR-640</a> for more details.</p></li><li><p>Separate the FileInfo cache into write and read cache. It avoids catchup reads impact tailing reads and writes. See <a href="https://github.com/apache/bookkeeper/pull/513" target="_blank" rel="noopener noreferrer">PR-513</a> for more details.</p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-or-ease-of-use">Deployment or Ease of use<a href="#deployment-or-ease-of-use" class="hash-link" aria-label="Direct link to Deployment or Ease of use" title="Direct link to Deployment or Ease of use"></a></h4><ul><li>Deployment BookKeeper on K8s. <ul><li>Provide yaml files to run BookKeeper on Kubernetes using both StatefulSets and DaemonSet. See <a href="https://github.com/apache/bookkeeper/issues/337" target="_blank" rel="noopener noreferrer">Issue-337</a> and <a href="https://github.com/apache/bookkeeper/issues/681" target="_blank" rel="noopener noreferrer">Issue-681</a>for more details.</li></ul></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="existing-api-changes">Existing API changes<a href="#existing-api-changes" class="hash-link" aria-label="Direct link to Existing API changes" title="Direct link to Existing API changes"></a></h3><ul><li>BookKeeper constructor now throws BKException instead of KeeperException.</li><li>The signatures of <code>reorderReadSequence</code> and <code>reorderReadLACSequence</code> are changed in EnsemblePlacementPolicy.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-15">Full list of changes<a href="#full-list-of-changes-15" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/milestone/2?closed=1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/2?closed=1</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="451">4.5.1<a href="#451" class="hash-link" aria-label="Direct link to 4.5.1" title="Direct link to 4.5.1"></a></h2><p>This is the sixth release of BookKeeper as an Apache Top Level Project!</p><p>The 4.5.1 release is a bugfix release which fixes a bunch of issues reported from users of 4.5.0.</p><p>Apache BookKeeper users are encouraged to upgrade to 4.5.1. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-31">Highlights<a href="#highlights-31" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><ul><li><p>Fix critical bug on Parallel Recovery, see <a href="https://github.com/apache/bookkeeper/issues/343" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/343</a></p></li><li><p>Fix critical bug on Prometheus stats provider, see <a href="https://github.com/apache/bookkeeper/pull/535" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/pull/535</a></p></li><li><p>Fix critical bug ledger length for LedgerHandleAdv, see <a href="https://github.com/apache/bookkeeper/issues/683" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/683</a></p></li><li><p>Fix critical bug on RackAwarePolicy, see <a href="https://github.com/apache/bookkeeper/issues/551" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues/551</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade-4">Dependencies Upgrade<a href="#dependencies-upgrade-4" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><p>There is no dependency upgrade since 4.5.0.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-16">Full list of changes<a href="#full-list-of-changes-16" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><ul><li><a href="https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.5.1%20" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/issues?utf8=%E2%9C%93&amp;q=label%3Arelease%2F4.5.1%20</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="450">4.5.0<a href="#450" class="hash-link" aria-label="Direct link to 4.5.0" title="Direct link to 4.5.0"></a></h2><p>This is the fifth release of BookKeeper as an Apache Top Level Project!</p><p>The 4.5.0 release incorporates hundreds of new fixes, improvements, and features since previous major release, 4.4.0,
which was released over a year ago. It is a big milestone in Apache BookKeeper community, converging from three
main branches (Salesforce, Twitter and Yahoo).</p><p>Apache BookKeeper users are encouraged to upgrade to 4.5.0. The technical details of this release are summarized
below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="highlights-32">Highlights<a href="#highlights-32" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights"></a></h3><p>The main features in 4.5.0 cover are around following areas:</p><ul><li>Dependencies Upgrade</li><li>Security</li><li>Public API</li><li>Performance</li><li>Operations</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependencies-upgrade-5">Dependencies Upgrade<a href="#dependencies-upgrade-5" class="hash-link" aria-label="Direct link to Dependencies Upgrade" title="Direct link to Dependencies Upgrade"></a></h4><p>Here is a list of dependencies upgraded in 4.5.0:</p><ul><li>Moved the developement from Java 7 to Java 8.</li><li>Upgrade Protobuf to <code>2.6</code>.</li><li>Upgrade ZooKeeper from <code>3.4</code> to <code>3.5</code>.</li><li>Upgrade Netty to <code>4.1</code>.</li><li>Upgrade Guava to <code>20.0</code>.</li><li>Upgrade SLF4J to <code>1.7.25</code>.</li><li>Upgrade Codahale to <code>3.1.0</code>.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="security-1">Security<a href="#security-1" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security"></a></h4><p>Prior to this release, Apache BookKeeper only supports simple <code>DIGEST-MD5</code> type authentication.</p><p>With this release of Apache BookKeeper, a number of feature are introduced that can be used, together of separately,
to secure a BookKeeper cluster.</p><p>The following security features are currently supported.</p><ul><li>Authentication of connections to bookies from clients, using either <code>TLS</code> or `SASL (Kerberos).</li><li>Authentication of connections from clients, bookies, autorecovery daemons to <code>ZooKeeper</code>, when using zookeeper
based ledger managers.</li><li>Encryption of data transferred between bookies and clients, between bookies and autorecovery daemons using <code>TLS</code>.</li></ul><p>It&#x27;s worth noting that those security features are optional - non-secured clusters are supported, as well as a mix
of authenticated, unauthenticated, encrypted and non-encrypted clients.</p><p>For more details, have a look at <a href="/docs/security/overview">BookKeeper Security</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="public-api-2">Public API<a href="#public-api-2" class="hash-link" aria-label="Direct link to Public API" title="Direct link to Public API"></a></h4><p>There are multiple new client features introduced in 4.5.0.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="ledgerhandleadv">LedgerHandleAdv<a href="#ledgerhandleadv" class="hash-link" aria-label="Direct link to LedgerHandleAdv" title="Direct link to LedgerHandleAdv"></a></h5><p>The <!-- -->[Ledger API]<!-- --> is the low level API provides by BookKeeper for interacting with <code>ledgers</code> in a bookkeeper cluster.
It is simple but not flexible on ledger id or entry id generation. Apache BookKeeper introduces <code>LedgerHandleAdv</code>
as an extension of existing <code>LedgerHandle</code> for advanced usage. The new <code>LedgerHandleAdv</code> allows applications providing
its own <code>ledger-id</code> and assigning <code>entry-id</code> on adding entries.</p><p>See <a href="/docs/api/ledger-adv-api">Ledger Advanced API</a> for more details.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="long-poll">Long Poll<a href="#long-poll" class="hash-link" aria-label="Direct link to Long Poll" title="Direct link to Long Poll"></a></h5><p><code>Long Poll</code> is a main feature that <a href="https://distributedlog.io" target="_blank" rel="noopener noreferrer">DistributedLog</a> uses to achieve low-latency tailing.
This big feature has been merged back in 4.5.0 and available to BookKeeper users.</p><p>This feature includes two main changes, one is <code>LastAddConfirmed</code> piggyback, while the other one is a new <code>long poll</code> read API.</p><p>The first change piggyback the latest <code>LastAddConfirm</code> along with the read response, so your <code>LastAddConfirmed</code> will be automatically advanced
when your read traffic continues. It significantly reduces the traffic to explicitly polling <code>LastAddConfirmed</code> and hence reduces the end-to-end latency.</p><p>The second change provides a new <code>long poll</code> read API, allowing tailing-reads without polling <code>LastAddConfirmed</code> everytime after readers exhaust known entries.
Although <code>long poll</code> API brings great latency improvements on tailing reads, it is still a very low-level primitive.
It is still recommended to use high level API (e.g. <a href="/docs/api/distributedlog-api">DistributedLog API</a>) for tailing and streaming use cases.</p><p>See <a href="https://bookkeeper.apache.org/docs/next/api/distributedlog-api" target="_blank" rel="noopener noreferrer">Streaming Reads</a> for more details.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="explicit-lac">Explicit LAC<a href="#explicit-lac" class="hash-link" aria-label="Direct link to Explicit LAC" title="Direct link to Explicit LAC"></a></h5><p>Prior to 4.5.0, the <code>LAC</code> is only advanced when subsequent entries are added. If there is no subsequent entries added,
the last entry written will not be visible to readers until the ledger is closed. High-level client (e.g. DistributedLog) or applications
has to work around this by writing some sort of <code>control records</code> to advance <code>LAC</code>.</p><p>In 4.5.0, a new <code>explicit lac</code> feature is introduced to periodically advance <code>LAC</code> if there are not subsequent entries added. This feature
can be enabled by setting <code>explicitLacInterval</code> to a positive value.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="performance-1">Performance<a href="#performance-1" class="hash-link" aria-label="Direct link to Performance" title="Direct link to Performance"></a></h4><p>There are a lot for performance related bug fixes and improvements in 4.5.0. These changes includes:</p><ul><li>Upgraded netty from 3.x to 4.x to leverage buffer pooling and reduce memory copies.</li><li>Moved developement from Java 7 to Java 8 to take advantage of Java 8 features.</li><li>A lot of improvements around scheduling and threading on <code>bookies</code>.</li><li>Delay ensemble change to improve tail latency.</li><li>Parallel ledger recovery to improve the recovery speed.</li><li>...</li></ul><p>We outlined following four changes as below. For a complete list of performance improvements, please checkout the <code>full list of changes</code> at the end.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="netty-4-upgrade">Netty 4 Upgrade<a href="#netty-4-upgrade" class="hash-link" aria-label="Direct link to Netty 4 Upgrade" title="Direct link to Netty 4 Upgrade"></a></h5><p>The major performance improvement introduced in 4.5.0, is upgrading netty from 3.x to <a href="http://netty.io/wiki/new-and-noteworthy-in-4.0.html" target="_blank" rel="noopener noreferrer">4.x</a>.</p><p>For more details, please read <a href="/docs/admin/upgrade">upgrade guide</a> about the netty related tips when upgrading bookkeeper from 4.4.0 to 4.5.0.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="delay-ensemble-change">Delay Ensemble Change<a href="#delay-ensemble-change" class="hash-link" aria-label="Direct link to Delay Ensemble Change" title="Direct link to Delay Ensemble Change"></a></h5><p><code>Ensemble Change</code> is a feature that Apache BookKeeper uses to achieve high availability. However it is an expensive metadata operation.
Especially when Apache BookKeeper is deployed in a multiple data-centers environment, losing a data center will cause churn of metadata
operations due to ensemble changes. <code>Delay Ensemble Change</code> is introduced in 4.5.0 to overcome this problem. Enabling this feature means
an <code>Ensemble Change</code> will only occur when clients can&#x27;t receive enough valid responses to satisfy <code>ack-quorum</code> constraint. This feature
improves the tail latency.</p><p>To enable this feature, please set <code>delayEnsembleChange</code> to <code>true</code> on your clients.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="parallel-ledger-recovery">Parallel Ledger Recovery<a href="#parallel-ledger-recovery" class="hash-link" aria-label="Direct link to Parallel Ledger Recovery" title="Direct link to Parallel Ledger Recovery"></a></h5><p>BookKeeper clients recovers entries one-by-one during ledger recovery. If a ledger has very large volumn of traffic, it will have
large number of entries to recover when client failures occur. BookKeeper introduces <code>parallel ledger recovery</code> in 4.5.0 to allow
batch recovery to improve ledger recovery speed.</p><p>To enable this feature, please set <code>enableParallelRecoveryRead</code> to <code>true</code> on your clients. You can also set <code>recoveryReadBatchSize</code>
to control the batch size of recovery read.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="multiple-journals">Multiple Journals<a href="#multiple-journals" class="hash-link" aria-label="Direct link to Multiple Journals" title="Direct link to Multiple Journals"></a></h5><p>Prior to 4.5.0, bookies are only allowed to configure one journal device. If you want to have high write bandwidth, you can raid multiple
disks into one device and mount that device for jouranl directory. However because there is only one journal thread, this approach doesn&#x27;t
actually improve the write bandwidth.</p><p>BookKeeper introduces multiple journal directories support in 4.5.0. Users can configure multiple devices for journal directories.</p><p>To enable this feature, please use <code>journalDirectories</code> rather than <code>journalDirectory</code>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="operations-2">Operations<a href="#operations-2" class="hash-link" aria-label="Direct link to Operations" title="Direct link to Operations"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="longhierarchicalledgermanager">LongHierarchicalLedgerManager<a href="#longhierarchicalledgermanager" class="hash-link" aria-label="Direct link to LongHierarchicalLedgerManager" title="Direct link to LongHierarchicalLedgerManager"></a></h5><p>Apache BookKeeper supports pluggable metadata store. By default, it uses Apache ZooKeeper as its metadata store. Among the zookeeper-based
ledger manager implementations, <code>HierarchicalLedgerManager</code> is the most popular and widely adopted ledger manager. However it has a major
limitation, which it assumes <code>ledger-id</code> is a 32-bits integer. It limits the number of ledgers to <code>2^32</code>.</p><p><code>LongHierarchicalLedgerManager</code> is introduced to overcome this limitation.</p><p>See <a href="/docs/getting-started/concepts#ledger-manager">Ledger Manager</a> for more details.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="weight-based-placement-policy">Weight-based placement policy<a href="#weight-based-placement-policy" class="hash-link" aria-label="Direct link to Weight-based placement policy" title="Direct link to Weight-based placement policy"></a></h5><p><code>Rack-Aware</code> and <code>Region-Aware</code> placement polices are the two available placement policies in BookKeeper client. It places ensembles based
on users&#x27; configured network topology. However they both assume that all nodes are equal. <code>weight-based</code> placement is introduced in 4.5.0 to
improve the existing placement polices. <code>weight-based</code> placement was not built as separated polices. It is built in the existing placement policies.
If you are using <code>Rack-Aware</code> or <code>Region-Aware</code>, you can simply enable <code>weight-based</code> placement by setting <code>diskWeightBasedPlacementEnabled</code> to <code>true</code>.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="customized-ledger-metadata">Customized Ledger Metadata<a href="#customized-ledger-metadata" class="hash-link" aria-label="Direct link to Customized Ledger Metadata" title="Direct link to Customized Ledger Metadata"></a></h5><p>A <code>Map&lt;String, byte[]&gt;</code> is introduced in ledger metadata in 4.5.0. Clients now are allowed to pass in a key/value map when creating ledgers.
This customized ledger metadata can be later on used by user defined placement policy. This extends the flexibility of bookkeeper API.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="add-prometheus-stats-provider">Add Prometheus stats provider<a href="#add-prometheus-stats-provider" class="hash-link" aria-label="Direct link to Add Prometheus stats provider" title="Direct link to Add Prometheus stats provider"></a></h5><p>A new <a href="https://prometheus.io/" target="_blank" rel="noopener noreferrer">Prometheus</a> <a href="https://github.com/apache/bookkeeper/tree/master/bookkeeper-stats-providers/prometheus-metrics-provider" target="_blank" rel="noopener noreferrer">stats provider</a>
is introduce in 4.5.0. It simplies the metric collection when running bookkeeper on <a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer">kubernetes</a>.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="add-more-tools-in-bookieshell">Add more tools in BookieShell<a href="#add-more-tools-in-bookieshell" class="hash-link" aria-label="Direct link to Add more tools in BookieShell" title="Direct link to Add more tools in BookieShell"></a></h5><p><code>BookieShell</code> is the tool provided by Apache BooKeeper to operate clusters. There are multiple importants tools introduced in 4.5.0, for example, <code>decommissionbookie</code>,
<code>expandstorage</code>, <code>lostbookierecoverydelay</code>, <code>triggeraudit</code>.</p><p>For the complete list of commands in <code>BookieShell</code>, please read <a href="/docs/reference/cli">BookKeeper CLI tool reference</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="full-list-of-changes-17">Full list of changes<a href="#full-list-of-changes-17" class="hash-link" aria-label="Direct link to Full list of changes" title="Direct link to Full list of changes"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="jira">JIRA<a href="#jira" class="hash-link" aria-label="Direct link to JIRA" title="Direct link to JIRA"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="sub-task">Sub-task<a href="#sub-task" class="hash-link" aria-label="Direct link to Sub-task" title="Direct link to Sub-task"></a></h5><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-552" target="_blank" rel="noopener noreferrer">BOOKKEEPER-552</a>] - 64 Bits Ledger ID Generation</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-553" target="_blank" rel="noopener noreferrer">BOOKKEEPER-553</a>] - New LedgerManager for 64 Bits Ledger ID Management in ZooKeeper</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-588" target="_blank" rel="noopener noreferrer">BOOKKEEPER-588</a>] - SSL support</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-873" target="_blank" rel="noopener noreferrer">BOOKKEEPER-873</a>] - Enhance CreatedLedger API to accept ledgerId as input</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-949" target="_blank" rel="noopener noreferrer">BOOKKEEPER-949</a>] - Allow entryLog creation even when bookie is in RO mode for compaction</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-965" target="_blank" rel="noopener noreferrer">BOOKKEEPER-965</a>] - Long Poll: Changes to the Write Path</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-997" target="_blank" rel="noopener noreferrer">BOOKKEEPER-997</a>] - Wire protocol change for supporting long poll</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1017" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1017</a>] - Create documentation for ZooKeeper ACLs</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1086" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1086</a>] - Ledger Recovery - Refactor PendingReadOp</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1087" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1087</a>] - Ledger Recovery - Add a parallel reading request in PendingReadOp</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1088" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1088</a>] - Ledger Recovery - Add a ReadEntryListener to callback on individual request</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1089" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1089</a>] - Ledger Recovery - allow batch reads in ledger recovery</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1092" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1092</a>] - Ledger Recovery - Add Test Case for Parallel Ledger Recovery</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1093" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1093</a>] - Piggyback LAC on ReadResponse</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1094" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1094</a>] - Long Poll - Server and Client Side Changes</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1095" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1095</a>] - Long Poll - Client side changes</li></ul><b>Bug</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-852" target="_blank" rel="noopener noreferrer">BOOKKEEPER-852</a>] - Release LedgerDescriptor and master-key objects when not used anymore</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-903" target="_blank" rel="noopener noreferrer">BOOKKEEPER-903</a>] - MetaFormat BookieShell Command is not deleting UnderReplicatedLedgers list from the ZooKeeper</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-907" target="_blank" rel="noopener noreferrer">BOOKKEEPER-907</a>] - for ReadLedgerEntriesCmd, EntryFormatter should be configurable and HexDumpEntryFormatter should be one of them</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-908" target="_blank" rel="noopener noreferrer">BOOKKEEPER-908</a>] - Case to handle BKLedgerExistException</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-924" target="_blank" rel="noopener noreferrer">BOOKKEEPER-924</a>] - addEntry() is susceptible to spurious wakeups</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-927" target="_blank" rel="noopener noreferrer">BOOKKEEPER-927</a>] - Extend BOOKKEEPER-886 to LedgerHandleAdv too (BOOKKEEPER-886: Allow to disable ledgers operation throttling)</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-933" target="_blank" rel="noopener noreferrer">BOOKKEEPER-933</a>] - ClientConfiguration always inherits System properties</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-938" target="_blank" rel="noopener noreferrer">BOOKKEEPER-938</a>] - LedgerOpenOp should use digestType from metadata</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-939" target="_blank" rel="noopener noreferrer">BOOKKEEPER-939</a>] - Fix typo in bk-merge-pr.py</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-940" target="_blank" rel="noopener noreferrer">BOOKKEEPER-940</a>] - Fix findbugs warnings after bumping to java 8</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-952" target="_blank" rel="noopener noreferrer">BOOKKEEPER-952</a>] - Fix RegionAwarePlacementPolicy</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-955" target="_blank" rel="noopener noreferrer">BOOKKEEPER-955</a>] - in BookKeeperAdmin listLedgers method currentRange variable is not getting updated to next iterator when it has run out of elements</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-956" target="_blank" rel="noopener noreferrer">BOOKKEEPER-956</a>] - HierarchicalLedgerManager doesn&#x27;t work for ledgerid of length 9 and 10 because of order issue in HierarchicalLedgerRangeIterator</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-958" target="_blank" rel="noopener noreferrer">BOOKKEEPER-958</a>] - ZeroBuffer readOnlyBuffer returns ByteBuffer with 0 remaining bytes for length &gt; 64k</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-959" target="_blank" rel="noopener noreferrer">BOOKKEEPER-959</a>] - ClientAuthProvider and BookieAuthProvider Public API used Protobuf Shaded classes</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-976" target="_blank" rel="noopener noreferrer">BOOKKEEPER-976</a>] - Fix license headers with &quot;Copyright 2016 The Apache Software Foundation&quot;</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-980" target="_blank" rel="noopener noreferrer">BOOKKEEPER-980</a>] - BookKeeper Tools doesn&#x27;t process the argument correctly</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-981" target="_blank" rel="noopener noreferrer">BOOKKEEPER-981</a>] - NullPointerException in RackawareEnsemblePlacementPolicy while running in Docker Container</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-984" target="_blank" rel="noopener noreferrer">BOOKKEEPER-984</a>] - BookieClientTest.testWriteGaps tested</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-986" target="_blank" rel="noopener noreferrer">BOOKKEEPER-986</a>] - Handle Memtable flush failure</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-987" target="_blank" rel="noopener noreferrer">BOOKKEEPER-987</a>] - BookKeeper build is broken due to the shade plugin for commit ecbb053e6e</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-988" target="_blank" rel="noopener noreferrer">BOOKKEEPER-988</a>] - Missing license headers</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-989" target="_blank" rel="noopener noreferrer">BOOKKEEPER-989</a>] - Enable travis CI for bookkeeper git</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-999" target="_blank" rel="noopener noreferrer">BOOKKEEPER-999</a>] - BookKeeper client can leak threads</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1013" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1013</a>] - Fix findbugs errors on latest master</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1018" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1018</a>] - Allow client to select older V2 protocol (no protobuf)</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1020" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1020</a>] - Fix Explicit LAC tests on master</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1021" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1021</a>] - Improve the merge script to handle github reviews api</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1031" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1031</a>] - ReplicationWorker.rereplicate fails to call close() on ReadOnlyLedgerHandle</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1044" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1044</a>] - Entrylogger is not readding rolled logs back to the logChannelsToFlush list when exception happens while trying to flush rolled logs</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1047" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1047</a>] - Add missing error code in ZK setData return path</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1058" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1058</a>] - Ignore already deleted ledger on replication audit</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1061" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1061</a>] - BookieWatcher should not do ZK blocking operations from ZK async callback thread</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1065" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1065</a>] - OrderedSafeExecutor should only have 1 thread per bucket</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1071" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1071</a>] - BookieRecoveryTest is failing due to a Netty4 IllegalReferenceCountException</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1072" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1072</a>] - CompactionTest is flaky when disks are almost full</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1073" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1073</a>] - Several stats provider related changes.</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1074" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1074</a>] - Remove JMX Bean</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1075" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1075</a>] - BK LedgerMetadata: more memory-efficient parsing of configs</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1076" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1076</a>] - BookieShell should be able to read the &#x27;FENCE&#x27; entry in the log</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1077" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1077</a>] - BookKeeper: Local Bookie Journal and ledger paths</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1079" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1079</a>] - shell lastMark throws NPE</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1098" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1098</a>] - ZkUnderreplicationManager can build up an unbounded number of watchers</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1101" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1101</a>] - BookKeeper website menus not working under https</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1102" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1102</a>] - org.apache.bookkeeper.client.BookKeeperDiskSpaceWeightedLedgerPlacementTest.testDiskSpaceWeightedBookieSelectionWithBookiesBeingAdded is unreliable</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1103" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1103</a>] - LedgerMetadataCreateTest bug in ledger id generation causes intermittent hang</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1104" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1104</a>] - BookieInitializationTest.testWithDiskFullAndAbilityToCreateNewIndexFile testcase is unreliable</li></ul><b>Improvement</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-612" target="_blank" rel="noopener noreferrer">BOOKKEEPER-612</a>] - RegionAwarePlacement Policy</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-748" target="_blank" rel="noopener noreferrer">BOOKKEEPER-748</a>] - Move fence requests out of read threads</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-757" target="_blank" rel="noopener noreferrer">BOOKKEEPER-757</a>] - Ledger Recovery Improvement</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-759" target="_blank" rel="noopener noreferrer">BOOKKEEPER-759</a>] - bookkeeper: delay ensemble change if it doesn&#x27;t break ack quorum requirement</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-772" target="_blank" rel="noopener noreferrer">BOOKKEEPER-772</a>] - Reorder read sequnce</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-874" target="_blank" rel="noopener noreferrer">BOOKKEEPER-874</a>] - Explict LAC from Writer to Bookies</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-881" target="_blank" rel="noopener noreferrer">BOOKKEEPER-881</a>] - upgrade surefire plugin to 2.19</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-887" target="_blank" rel="noopener noreferrer">BOOKKEEPER-887</a>] - Allow to use multiple bookie journals</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-922" target="_blank" rel="noopener noreferrer">BOOKKEEPER-922</a>] - Create a generic (K,V) map to store ledger metadata</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-935" target="_blank" rel="noopener noreferrer">BOOKKEEPER-935</a>] - Publish sources and javadocs to Maven Central</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-937" target="_blank" rel="noopener noreferrer">BOOKKEEPER-937</a>] - Upgrade protobuf to 2.6</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-944" target="_blank" rel="noopener noreferrer">BOOKKEEPER-944</a>] - Multiple issues and improvements to BK Compaction.</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-945" target="_blank" rel="noopener noreferrer">BOOKKEEPER-945</a>] - Add counters to track the activity of auditor and replication workers</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-946" target="_blank" rel="noopener noreferrer">BOOKKEEPER-946</a>] - Provide an option to delay auto recovery of lost bookies</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-961" target="_blank" rel="noopener noreferrer">BOOKKEEPER-961</a>] - Assing read/write request for same ledger to a single thread</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-962" target="_blank" rel="noopener noreferrer">BOOKKEEPER-962</a>] - Add more journal timing stats</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-963" target="_blank" rel="noopener noreferrer">BOOKKEEPER-963</a>] - Allow to use multiple journals in bookie</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-964" target="_blank" rel="noopener noreferrer">BOOKKEEPER-964</a>] - Add concurrent maps and sets for primitive types</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-966" target="_blank" rel="noopener noreferrer">BOOKKEEPER-966</a>] - change the bookieServer cmdline to make conf-file and option co-exist</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-968" target="_blank" rel="noopener noreferrer">BOOKKEEPER-968</a>] - Entry log flushes happen on log rotation and cause long spikes in IO utilization</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-970" target="_blank" rel="noopener noreferrer">BOOKKEEPER-970</a>] - Bump zookeeper version to 3.5</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-971" target="_blank" rel="noopener noreferrer">BOOKKEEPER-971</a>] - update bk codahale stats provider version</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-998" target="_blank" rel="noopener noreferrer">BOOKKEEPER-998</a>] - Increased the max entry size to 5MB</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1001" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1001</a>] - Make LocalBookiesRegistry.isLocalBookie() public</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1002" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1002</a>] - BookieRecoveryTest can run out of file descriptors</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1003" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1003</a>] - Fix TestDiskChecker so it can be used on /dev/shm</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1004" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1004</a>] - Allow bookie garbage collection to be triggered manually from tests</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1007" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1007</a>] - Explicit LAC: make the interval configurable in milliseconds instead of seconds</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1008" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1008</a>] - Move to netty4</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1010" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1010</a>] - Bump up Guava version to 20.0</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1022" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1022</a>] - Make BookKeeperAdmin implement AutoCloseable</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1039" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1039</a>] - bk-merge-pr.py ask to run findbugs and rat before merge</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1046" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1046</a>] - Avoid long to Long conversion in OrderedSafeExecutor task submit</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1048" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1048</a>] - Use ByteBuf in LedgerStorageInterface</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1050" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1050</a>] - Cache journalFormatVersionToWrite when starting Journal</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1051" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1051</a>] - Fast shutdown for GarbageCollectorThread</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1052" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1052</a>] - Print autorecovery enabled or not in bookie shell</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1053" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1053</a>] - Upgrade RAT maven version to 0.12 and ignore Eclipse project files</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1055" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1055</a>] - Optimize handling of masterKey in case it is empty</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1056" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1056</a>] - Removed PacketHeader serialization/deserialization allocation</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1063" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1063</a>] - Use executure.execute() instead of submit() to avoid creation of unused FutureTask</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1066" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1066</a>] - Introduce GrowableArrayBlockingQueue</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1068" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1068</a>] - Expose ByteBuf in LedgerEntry to avoid data copy</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1069" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1069</a>] - If client uses V2 proto, set the connection to always decode V2 messages</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1083" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1083</a>] - Improvements on OrderedSafeExecutor</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1084" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1084</a>] - Make variables finale if necessary</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1085" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1085</a>] - Introduce the AlertStatsLogger</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1090" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1090</a>] - Use LOG.isDebugEnabled() to avoid unexpected allocations</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1096" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1096</a>] - When ledger is deleted, along with leaf node all the eligible branch nodes also should be deleted in ZooKeeper.</li></ul><b>New Feature</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-390" target="_blank" rel="noopener noreferrer">BOOKKEEPER-390</a>] - Provide support for ZooKeeper authentication</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-391" target="_blank" rel="noopener noreferrer">BOOKKEEPER-391</a>] - Support Kerberos authentication of bookkeeper</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-575" target="_blank" rel="noopener noreferrer">BOOKKEEPER-575</a>] - Bookie SSL support</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-670" target="_blank" rel="noopener noreferrer">BOOKKEEPER-670</a>] - Longpoll Read &amp; Piggyback Support</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-912" target="_blank" rel="noopener noreferrer">BOOKKEEPER-912</a>] - Allow EnsemblePlacementPolicy to choose bookies using ledger custom data (multitenancy support)</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-928" target="_blank" rel="noopener noreferrer">BOOKKEEPER-928</a>] - Add custom client supplied metadata field to LedgerMetadata</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-930" target="_blank" rel="noopener noreferrer">BOOKKEEPER-930</a>] - Option to disable Bookie networking</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-941" target="_blank" rel="noopener noreferrer">BOOKKEEPER-941</a>] - Introduce Feature Switches For controlling client and server behavior</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-948" target="_blank" rel="noopener noreferrer">BOOKKEEPER-948</a>] - Provide an option to add more ledger/index directories to a bookie</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-950" target="_blank" rel="noopener noreferrer">BOOKKEEPER-950</a>] - Ledger placement policy to accomodate different storage capacity of bookies</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-969" target="_blank" rel="noopener noreferrer">BOOKKEEPER-969</a>] - Security Support</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-983" target="_blank" rel="noopener noreferrer">BOOKKEEPER-983</a>] - BookieShell Command for LedgerDelete</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-991" target="_blank" rel="noopener noreferrer">BOOKKEEPER-991</a>] - bk shell - Get a list of all on disk files</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-992" target="_blank" rel="noopener noreferrer">BOOKKEEPER-992</a>] - ReadLog Command Enhancement</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1019" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1019</a>] - Support for reading entries after LAC (causal consistency driven by out-of-band communications)</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1034" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1034</a>] - When all disks are full, start Bookie in RO mode if RO mode is enabled</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1067" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1067</a>] - Add Prometheus stats provider</li></ul><b>Story</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-932" target="_blank" rel="noopener noreferrer">BOOKKEEPER-932</a>] - Move to JDK 8</li></ul><b>Task</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-931" target="_blank" rel="noopener noreferrer">BOOKKEEPER-931</a>] - Update the committers list on website</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-996" target="_blank" rel="noopener noreferrer">BOOKKEEPER-996</a>] - Apache Rat Check Failures</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1012" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1012</a>] - Shade and relocate Guava</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1027" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1027</a>] - Cleanup main README and main website page</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1038" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1038</a>] - Fix findbugs warnings and upgrade to 3.0.4</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1043" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1043</a>] - Upgrade Apache Parent Pom Reference to latest version</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1054" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1054</a>] - Add gitignore file</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1059" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1059</a>] - Upgrade to SLF4J-1.7.25</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1060" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1060</a>] - Add utility to use SafeRunnable from Java8 Lambda</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1070" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1070</a>] - bk-merge-pr.py use apache-rat:check goal instead of rat:rat</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1091" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1091</a>] - Remove Hedwig from BookKeeper website page</li></ul><b>Test</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-967" target="_blank" rel="noopener noreferrer">BOOKKEEPER-967</a>] - Create new testsuite for testing RackAwareEnsemblePlacementPolicy using ScriptBasedMapping.</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1045" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1045</a>] - Execute tests in different JVM processes</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1064" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1064</a>] - ConcurrentModificationException in AuditorLedgerCheckerTest</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1078" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1078</a>] - Local BookKeeper enhancements for testability</li><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-1097" target="_blank" rel="noopener noreferrer">BOOKKEEPER-1097</a>] - GC test when no WritableDirs</li></ul><b>Wish</b><ul><li>[<a href="https://issues.apache.org/jira/browse/BOOKKEEPER-943" target="_blank" rel="noopener noreferrer">BOOKKEEPER-943</a>] - Reduce log level of AbstractZkLedgerManager for register/unregister ReadOnlyLedgerHandle</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="github">Github<a href="#github" class="hash-link" aria-label="Direct link to Github" title="Direct link to Github"></a></h4><ul><li><a href="https://github.com/apache/bookkeeper/milestone/1" target="_blank" rel="noopener noreferrer">https://github.com/apache/bookkeeper/milestone/1</a></li></ul></article></div><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#4170" class="table-of-contents__link toc-highlight">4.17.0</a><ul><li><a href="#breaking-changes" class="table-of-contents__link toc-highlight">Breaking Changes</a></li><li><a href="#features" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#notable-changes" class="table-of-contents__link toc-highlight">Notable changes</a></li><li><a href="#dependency-changes" class="table-of-contents__link toc-highlight">Dependency changes</a></li><li><a href="#details" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4165" class="table-of-contents__link toc-highlight">4.16.5</a><ul><li><a href="#highlights" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4164" class="table-of-contents__link toc-highlight">4.16.4</a><ul><li><a href="#highlights-1" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4155" class="table-of-contents__link toc-highlight">4.15.5</a><ul><li><a href="#highlights-2" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4163" class="table-of-contents__link toc-highlight">4.16.3</a><ul><li><a href="#highlights-3" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4148" class="table-of-contents__link toc-highlight">4.14.8</a><ul><li><a href="#highlights-4" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4162" class="table-of-contents__link toc-highlight">4.16.2</a><ul><li><a href="#highlights-5" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4161" class="table-of-contents__link toc-highlight">4.16.1</a><ul><li><a href="#highlights-6" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-7" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4160" class="table-of-contents__link toc-highlight">4.16.0</a><ul><li><a href="#breaking-changes-1" class="table-of-contents__link toc-highlight">Breaking Changes</a></li><li><a href="#features-1" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#improvement" class="table-of-contents__link toc-highlight">Improvement</a></li><li><a href="#notable-fixes" class="table-of-contents__link toc-highlight">Notable fixes</a></li><li><a href="#dependency-changes-1" class="table-of-contents__link toc-highlight">Dependency changes</a></li><li><a href="#details-8" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4154" class="table-of-contents__link toc-highlight">4.15.4</a><ul><li><a href="#highlights-7" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-9" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4147" class="table-of-contents__link toc-highlight">4.14.7</a><ul><li><a href="#highlights-8" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-10" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4146" class="table-of-contents__link toc-highlight">4.14.6</a><ul><li><a href="#highlights-9" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-11" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4153" class="table-of-contents__link toc-highlight">4.15.3</a><ul><li><a href="#notice" class="table-of-contents__link toc-highlight">Notice</a></li><li><a href="#highlights-10" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4152" class="table-of-contents__link toc-highlight">4.15.2</a><ul><li><a href="#highlights-11" class="table-of-contents__link toc-highlight">Highlights</a></li></ul></li><li><a href="#4151" class="table-of-contents__link toc-highlight">4.15.1</a><ul><li><a href="#highlights-12" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-12" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4150" class="table-of-contents__link toc-highlight">4.15.0</a><ul><li><a href="#breaking-changes-2" class="table-of-contents__link toc-highlight">Breaking Changes</a></li><li><a href="#highlights-13" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-13" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4145" class="table-of-contents__link toc-highlight">4.14.5</a><ul><li><a href="#highlights-14" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-14" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4144" class="table-of-contents__link toc-highlight">4.14.4</a><ul><li><a href="#highlights-15" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-15" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4143" class="table-of-contents__link toc-highlight">4.14.3</a><ul><li><a href="#highlights-16" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-16" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4142" class="table-of-contents__link toc-highlight">4.14.2</a><ul><li><a href="#details-17" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4141" class="table-of-contents__link toc-highlight">4.14.1</a><ul><li><a href="#details-18" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4140" class="table-of-contents__link toc-highlight">4.14.0</a><ul><li><a href="#highlights-17" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-19" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4130" class="table-of-contents__link toc-highlight">4.13.0</a><ul><li><a href="#highlights-18" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#details-20" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4121" class="table-of-contents__link toc-highlight">4.12.1</a><ul><li><a href="#news-and-noteworthy" class="table-of-contents__link toc-highlight">News and noteworthy</a></li><li><a href="#details-21" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4120" class="table-of-contents__link toc-highlight">4.12.0</a><ul><li><a href="#news-and-noteworthy-1" class="table-of-contents__link toc-highlight">News and noteworthy</a></li><li><a href="#details-22" class="table-of-contents__link toc-highlight">Details</a></li></ul></li><li><a href="#4111" class="table-of-contents__link toc-highlight">4.11.1</a><ul><li><a href="#highlights-19" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#compatibility" class="table-of-contents__link toc-highlight">Compatibility</a></li><li><a href="#full-list-of-changes" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#4110" class="table-of-contents__link toc-highlight">4.11.0</a><ul><li><a href="#news-and-noteworthy-2" class="table-of-contents__link toc-highlight">News and noteworthy</a></li><li><a href="#full-list-of-changes-1" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#4100" class="table-of-contents__link toc-highlight">4.10.0</a><ul><li><a href="#news-and-noteworthy-3" class="table-of-contents__link toc-highlight">News and noteworthy</a></li><li><a href="#full-list-of-changes-2" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#492" class="table-of-contents__link toc-highlight">4.9.2</a><ul><li><a href="#full-list-of-changes-3" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#491" class="table-of-contents__link toc-highlight">4.9.1</a><ul><li><a href="#full-list-of-changes-4" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#490" class="table-of-contents__link toc-highlight">4.9.0</a><ul><li><a href="#highlights-20" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-5" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#482" class="table-of-contents__link toc-highlight">4.8.2</a><ul><li><a href="#highlights-21" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-6" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#481" class="table-of-contents__link toc-highlight">4.8.1</a><ul><li><a href="#highlights-22" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-7" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#480" class="table-of-contents__link toc-highlight">4.8.0</a><ul><li><a href="#highlights-23" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-8" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#473" class="table-of-contents__link toc-highlight">4.7.3</a><ul><li><a href="#highlights-24" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-9" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#472" class="table-of-contents__link toc-highlight">4.7.2</a><ul><li><a href="#highlights-25" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-10" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#471" class="table-of-contents__link toc-highlight">4.7.1</a><ul><li><a href="#highlights-26" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-11" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#470" class="table-of-contents__link toc-highlight">4.7.0</a><ul><li><a href="#highlights-27" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-12" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#462" class="table-of-contents__link toc-highlight">4.6.2</a><ul><li><a href="#highlights-28" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-13" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#461" class="table-of-contents__link toc-highlight">4.6.1</a><ul><li><a href="#highlights-29" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-14" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#460" class="table-of-contents__link toc-highlight">4.6.0</a><ul><li><a href="#highlights-30" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#existing-api-changes" class="table-of-contents__link toc-highlight">Existing API changes</a></li><li><a href="#full-list-of-changes-15" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#451" class="table-of-contents__link toc-highlight">4.5.1</a><ul><li><a href="#highlights-31" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-16" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li><li><a href="#450" class="table-of-contents__link toc-highlight">4.5.0</a><ul><li><a href="#highlights-32" class="table-of-contents__link toc-highlight">Highlights</a></li><li><a href="#full-list-of-changes-17" class="table-of-contents__link toc-highlight">Full list of changes</a></li></ul></li></ul></div></div></div></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Documentation</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/overview">Overview</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started/installation">Getting started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/deployment/manual">Deployment</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/admin/bookies">Administration</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/api/overview">API</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/security/overview">Security</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/development/protocol">Development</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/reference/config">Reference</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/community/mailing-lists">Mailing lists</a></li><li class="footer__item"><a class="footer__link-item" href="/community/slack">Slack</a></li><li class="footer__item"><a href="https://github.com/apache/bookkeeper" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/asfbookkeeper" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Project</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/project/who">Who are we?</a></li><li class="footer__item"><a class="footer__link-item" href="/project/bylaws">Bylaws</a></li><li class="footer__item"><a href="https://apache.org/licenses" target="_blank" rel="noopener noreferrer" class="footer__link-item">License<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/project/privacy">Privacy policy</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright"><footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Copyright &copy; 2016 - 2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>,<br> licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.
</p>
<p>
Apache BookKeeper, BookKeeper®, Apache®, the Apache feature logo, and the Apache BookKeeper logo are either registered trademarks or trademarks of The Apache Software Foundation.
</p>
</div>
</div>
</footer>
</div></div></div></footer></div>
<script src="/assets/js/runtime~main.99a29ea0.js"></script>
<script src="/assets/js/main.812b2dbb.js"></script>
</body>
</html>