<!DOCTYPE html>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE- 2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<html>
  <head>
    <title>Apache BookKeeper - BookKeeper Releases</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="/archives/css/bootstrap.min.css" rel="stylesheet">
    <link href="/archives/css/bootstrap-responsive.min.css" rel="stylesheet">
    <link href="/archives/css/styles.css" rel="stylesheet">
  </head>
  <body>
    <header class="navbar navbar-inverse navbar-static-top" role="banner">
      <div class="container">
    	<div class="navbar-header hidden-xs hidden-sm">
    	  <a class="navbar-brand navbar-logo" href="/archives/"><img class="img-responsive" src="/archives/img/bookkeeper_blk40.png" alt="Bookkeeper Logo" /></a>
    	</div>
    	<div class="navbar-header">
    	  <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
    	  </button>
    	  <a class="navbar-brand" href="/archives/">Apache BookKeeper</a>
    	</div>
    	<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
    	  <ul class="nav navbar-nav">
    	    <li><a href="/archives/releases.html">Download</a></li>

    	    <li class="dropdown">
    	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation<span class="caret"></span></a>
    	      <ul class="dropdown-menu" role="menu">
		<li><a href="/archives/docs/master">Latest (master)</a></li>
		<li><ul>
		    <li><a href="/archives/docs/master/apidocs">Java API docs</a></li>
		    <li><a href="/archives/docs/master/bookkeeperTutorial.html">Tutorial</a></li>
		    <li><a href="/archives/docs/master/bookkeeperConfig.html">Admin guide</a></li>
		</ul><li>
                <li><a href="/archives/docs/r4.4.0">Release 4.4.0</a></li>
                <li class="divider"></li>
                <li>Older releases</li>
                <li><a href="/archives/docs/r4.3.2">Release 4.3.2</a></li>
                <li><a href="/archives/docs/r4.3.1">Release 4.3.1</a></li>
                <li><a href="/archives/docs/r4.3.0">Release 4.3.0</a></li>
                <li><a href="/archives/docs/r4.2.4">Release 4.2.4</a></li>
                <li><a href="/archives/docs/r4.2.3">Release 4.2.3</a></li>
                <li><a href="/archives/docs/r4.2.2">Release 4.2.2</a></li>
                <li><a href="/archives/docs/r4.2.1">Release 4.2.1</a></li>
                <li><a href="/archives/docs/r4.2.0">Release 4.2.0</a></li>
                <li><a href="/archives/docs/r4.1.0">Release 4.1.0</a></li>
                <li><a href="/archives/docs/r4.0.0">Release 4.0.0</a></li>
              </ul>
            </li>
            
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Get Involved<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/archives/lists.html">Mailing Lists</a></li>
                <li><a href="/archives/irc.html">IRC</a></li>
                <li><a href="/archives/svn.html">Version Control</a></li>
                <li><a href="https://issues.apache.org/jira/browse/BOOKKEEPER">Issue Tracker</a></li>
              </ul>
            </li>

            <li><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/Index">Wiki</a></li>
            <!--<li><a href="#">Hedwig</a></li>//-->
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Project Info<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/archives/credits.html">Who are we?</a></li>
                <li><a href="/archives/bylaws.html">Bylaws</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li class="divider"></li>
                <li><a href="/archives/privacy.html">Privacy Policy</a></li>
                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsership</a></li>
                <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
              </ul>
            </li>
          </ul>
          <script>
            (function() {
            var cx = '017580107654524087317:iqnsyimpydg';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
            })();
          </script>
          
          <div class="navbar-form navbar-right visible-lg" id="googlebox">
            <gcse:searchbox-only></gcse:searchbox-only>
          </div>
        </nav>
      </div>
    </header>
    <div class="container">

 <h1>Apache BookKeeper Releases</h1>

<ul>
<li><a href="#download">Download</a></li>
<li><a href="#releasenotes">Release Notes</a></li>
<li><a href="#news">News</a></li>
</ul>

<h2 id="download">Download</h2>

<p>Releases may be downloaded from Apache mirrors: <a href="http://www.apache.org/dyn/closer.cgi/bookkeeper">Download</a></p>

<p>Older releases are available in the Apache archive: <a href="http://archive.apache.org/dist/bookkeeper/">Older Releases</a></p>

<h2 id="releasenotes">Release Notes</h2>

<p>Release notes for Apache BookKeeper releases are available in Jira: <a href="https://issues.apache.org/jira/browse/BOOKKEEPER?report=com.atlassian.jira.plugin.system.project%3Achangelog-panel%3Aversions-panel">Browse release notes</a></p>

<h2 id="news">News</h2>

<h3>16 May, 2016: release 4.4.0 available</h3>

<p>This is the fourth release of BookKeeper as an Apache Top Level Project!</p>

<p>This release contains a total of 94 Jira tickets fixed and brings several bookie<br />
reliability and operability improvements, along with a long list of bugfixes.</p>

<p>See <a href="./docs/r4.4.0/releaseNotes.html">BookKeeper 4.4.0 Release Notes</a> for details.</p>

<h3>30 Nov, 2015: release 4.3.2 available</h3>

<p>This is the third release of BookKeeper as an Apache Top Level Project!</p>

<p>This release fixes some issues in both bookie server and bookkeeper client.</p>

<p>See <a href="./docs/r4.3.2/releaseNotes.html">BookKeeper 4.3.2 Release Notes</a> for details.</p>

<h3>27 May, 2015: release 4.3.1 available</h3>

<p>This is the second release of BookKeeper as an Apache Top Level Project!</p>

<p>This release fixes some issues in both bookie server and bookkeeper client.</p>

<p>See <a href="./docs/r4.3.1/releaseNotes.html">BookKeeper 4.3.1 Release Notes</a> for details.</p>

<h3>16 Jan, 2015: release 4.2.4 available</h3>

<p>This is the first release of BookKeeper as an Apache Top Level Project!</p>

<p>This release fixes some critical issues in fencing when the ack quorum and write quorum are different sizes.</p>

<p>See <a href="./docs/r4.2.4/releaseNotes.html">BookKeeper 4.2.4 Release Notes</a> for details.</p>

<h3>14 Oct, 2014: release 4.3.0 available</h3>

<p>This is the seventh release of BookKeeper as a subproject of Zookeeper.</p>

<p>This release includes a lot of improvements to the bookie on-disk performance, a new statistics framework, and protobuffer protocol support along with numerous bugfixes.</p>

<p>See <a href="./docs/r4.3.0/releaseNotes.html">BookKeeper 4.3.0 Release Notes</a> for details.</p>

<h3>27 June, 2013: release 4.2.3 available</h3>

<p>This is the sixth release of BookKeeper as a subproject of Zookeeper.</p>

<p>This is a bugfix release for 4.2.2.</p>

<p>Notable fixes and improvements include new utilities to give administrators better visibility of cluster state (BOOKKEEPER-746), improvements to allow for smoother rolling upgrades (BOOKKEEPER-745), fixes to ledger polling to ensure metadata updates aren't missed (BOOKKEEPER-710 &amp; <span class="caps">BOOKKEEPER</span>-747) and shading of protobuf libraries to avoid conflicts when included with other version (BOOKKEEPER-708).</p>

<p>See <a href="./docs/r4.2.3/releaseNotes.html">BookKeeper 4.2.3 Release Notes</a> for details.</p>

<h3>9 Oct, 2013: release 4.2.2 available</h3>

<p>This is the fifth release of BookKeeper as a subproject of Zookeeper.</p>

<p>This is a bugfix release for 4.2.1. There are some minor <span class="caps">API </span>improvements. Notably, it is now possible to check whether a ledger is closed without opening it, and it is now possible to get a list of ledgers available in the cluster.</p>

<p>See <a href="./docs/r4.2.2/releaseNotes.html">BookKeeper 4.2.2 Release Notes</a> for details.</p>

<h3>27 Feb, 2013: release 4.2.1 available</h3>

<p>This is the fourth release of BookKeeper as a subproject of Zookeeper.<br />
<strong>This release fixes a major performance bug in release 4.2.0. All users of BookKeeper 4.2.0 should upgrade immediately.</strong><br />
See <a href="./docs/r4.2.1/releaseNotes.html">BookKeeper 4.2.1 Release Notes</a> for details.</p>

<h3>18 Jan, 2013: release 4.2.0 available</h3>

<p>This is the third release of BookKeeper as a subproject of Zookeeper.<br />
See <a href="./docs/r4.2.0/releaseNotes.html">BookKeeper 4.2.0 Release Notes</a> for details.</p>

<h3>12 Jun, 2012: release 4.1.0 available</h3>

<p>This is the second release of BookKeeper as a subproject of Zookeeper.<br />
See <a href="./docs/r4.1.0/releaseNotes.html">BookKeeper 4.1.0 Release Notes</a> for details.</p>

<h3>7 Dec, 2011: release 4.0.0 available</h3>

<p>This is the first release of BookKeeper as a subproject of Zookeeper.<br />
See <a href="./docs/r4.0.0/releaseNotes.html">BookKeeper 4.0.0 Release Notes</a> for details.</p>

    </div>
    <footer class="footer">
      <div class="container">
        <p class="text-muted">Copyright &copy; 2014 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br/>
	Apache BookKeeper, BookKeeper, Apache, Apache ZooKeeper, ZooKeeper, the Apache feather logo, and the Apache BookKeeper project logo are trademarks of The Apache Software Foundation.</p>
      </div>
    </footer>

    <script src="//code.jquery.com/jquery.js"></script>
    <script src="/archives/js/bootstrap.min.js"></script>
  </body>
</html>
