blob: e867fa73f2841d7dc4b2194bf171de36c698cfa4 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Apache BookKeeper&trade; - Apache BookKeeper 4.9.0 Release Notes</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/css/normalize.css">
<link rel="stylesheet" href="/css/tippy.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="shortcut icon" href="/img/favicon.ico">
<script src="/js/tippy.min.js"></script>
<script type="text/javascript">
var shiftWindow = function() { scrollBy(0, -25); };
window.addEventListener("hashchange", shiftWindow);
window.addEventListener("pageshow", shiftWindow);
function load() { if (window.location.hash) shiftWindow(); }
</script>
</head>
<body class="body">
<main class="main">
<nav class="navbar bk-topnav">
<div class="navbar-brand">
<a class="navbar-item bk-brand" href="/">
Apache BookKeeper&trade;
</a>
<div class="navbar-burger burger" data-target="bkNav">
<span></span>
<span></span>
<span></span>
</div>
</div>
<div id="bkNav" class="navbar-menu">
<div class="navbar-start">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Documentation</a>
<div class="navbar-dropdown is-boxed">
<a class="navbar-item" href="/docs/latest/overview/overview">
Version 4.14.0-SNAPSHOT
<span class="tag is-warning">Development</span>
</a>
<a class="navbar-item" href="/docs/latest/api/javadoc">
<span class="icon bk-javadoc-icon">
<img src="/img/java-icon.svg">
</span>
Javadoc
</a>
<hr class="dropdown-divider">
<a class="navbar-item" href="/docs/4.13.0/overview/overview">
Release 4.13.0
</a>
<a class="navbar-item" href="/docs/4.12.1/overview/overview">
Release 4.12.1
</a>
<a class="navbar-item" href="/docs/4.12.0/overview/overview">
Release 4.12.0
</a>
<a class="navbar-item" href="/docs/4.11.1/overview/overview">
Release 4.11.1
<span class="tag is-success">Stable</span>
</a>
<a class="navbar-item" href="/docs/4.11.0/overview/overview">
Release 4.11.0
</a>
<a class="navbar-item" href="/docs/4.10.0/overview/overview">
Release 4.10.0
</a>
<a class="navbar-item" href="/archives/docs/r4.9.2">
Release 4.9.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.9.1">
Release 4.9.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.9.0">
Release 4.9.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.8.2">
Release 4.8.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.8.1">
Release 4.8.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.8.0">
Release 4.8.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.7.3">
Release 4.7.3
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.7.2">
Release 4.7.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.7.1">
Release 4.7.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.7.0">
Release 4.7.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.6.2">
Release 4.6.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.6.1">
Release 4.6.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.6.0">
Release 4.6.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.5.1">
Release 4.5.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.5.0">
Release 4.5.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.4.0">
Release 4.4.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.3.2">
Release 4.3.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.3.1">
Release 4.3.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.3.0">
Release 4.3.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.2.4">
Release 4.2.4
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.2.3">
Release 4.2.3
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.2.2">
Release 4.2.2
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.2.1">
Release 4.2.1
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.2.0">
Release 4.2.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.1.0">
Release 4.1.0
<span class="tag is-warning">EOL</span>
</a>
<a class="navbar-item" href="/archives/docs/r4.0.0">
Release 4.0.0
<span class="tag is-warning">EOL</span>
</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Community</a>
<div class="navbar-dropdown is-boxed">
<a class="navbar-item" href="/community/mailing-lists">Mailing lists</a>
<a class="navbar-item" href="/community/slack">Slack</a>
<a class="navbar-item" href="https://github.com/apache/bookkeeper/issues">Github Issues</a>
<a class="navbar-item" href="/community/releases">Release Management</a>
<a class="navbar-item" href="/community/meeting">Community Meetings</a>
<hr class="dropdown-divider">
<a class="navbar-item" href="/community/contributing">Contribution Guide</a>
<a class="navbar-item" href="/community/coding_guide">Coding Guide</a>
<a class="navbar-item" href="/community/testing">Testing Guide</a>
<a class="navbar-item" href="/community/issue-report">Issue Report Guide</a>
<a class="navbar-item" href="/community/release_guide">Release Guide</a>
<hr class="dropdown-divider">
<a class="navbar-item" href="/community/presentations">Presentations</a>
<a class="navbar-item" href="/community/bookkeeper_proposals">BookKeeper Proposals</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link">Project</a>
<div class="navbar-dropdown is-boxed">
<a class="navbar-item" href="/project/who">Who are we?</a>
<a class="navbar-item" href="/project/bylaws">Bylaws</a>
<a class="navbar-item" href="http://www.apache.org/licenses/">License</a>
<hr class="dropdown-divider">
<a class="navbar-item" href="/project/privacy">Privacy policy</a>
<a class="navbar-item" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</div>
</div>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="field is-grouped">
<p class="control">
<a class="button bk-twitter" href="https://twitter.com/asfbookkeeper">
<span class="icon">
<i class="fa fa-twitter"></i>
</span>
<span>Twitter</span>
</a>
</p>
<p class="control">
<a class="button" href="https://github.com/apache/bookkeeper">
<span class="icon">
<i class="fa fa-github"></i>
</span>
<span>GitHub</span>
</a>
</p>
<p class="control">
<a class="button is-primary" href="/releases">
<span class="icon">
<i class="fa fa-download"></i>
</span>
<span>Download</span>
</a>
</p>
</div>
</div>
</div>
</div>
</nav>
<div class="bk-docs-container">
<div class="columns is-gapless">
<div class="column is-2 is-hidden-mobile">
<div class="container">
<aside class="sidebar">
<a class="button is-info">
Version: 4.9.0
</a>
<hr />
<p>
Getting started
</p>
<ul class="sidebar-items">
<li>
<a href="../../getting-started/installation">
Installation
</a>
</li>
<li>
<a href="../../getting-started/run-locally">
Run bookies locally
</a>
</li>
<li>
<a href="../../getting-started/concepts">
Concepts and architecture
</a>
</li>
</ul>
<p>
Deployment
</p>
<ul class="sidebar-items">
<li>
<a href="../../deployment/manual">
Manual deployment
</a>
</li>
<li>
<a href="../../deployment/dcos">
BookKeeper on DC/OS
</a>
</li>
<li>
<a href="../../deployment/kubernetes">
BookKeeper on Kubernetes
</a>
</li>
</ul>
<p>
Administration
</p>
<ul class="sidebar-items">
<li>
<a href="../../admin/bookies">
BookKeeper administration
</a>
</li>
<li>
<a href="../../admin/autorecovery">
AutoRecovery
</a>
</li>
<li>
<a href="../../admin/metrics">
Metric collection
</a>
</li>
<li>
<a href="../../admin/upgrade">
Upgrade
</a>
</li>
<li>
<a href="../../admin/http">
BookKeeper Admin REST API
</a>
</li>
<li>
<a href="../../admin/decomission">
Decommissioning Bookies
</a>
</li>
</ul>
<p>
API
</p>
<ul class="sidebar-items">
<li>
<a href="../../api/overview">
Overview
</a>
</li>
<li>
<a href="../../api/ledger-api">
Ledger API
</a>
</li>
<li>
<a href="../../api/ledger-adv-api">
Advanced Ledger API
</a>
</li>
<li>
<a href="../../api/distributedlog-api">
DistributedLog
</a>
</li>
<li>
<a href="../../api/javadoc">
Java API Docs
</a>
</li>
</ul>
<p>
Security
</p>
<ul class="sidebar-items">
<li>
<a href="../../security/overview">
Overview
</a>
</li>
<li>
<a href="../../security/tls">
TLS Authentication
</a>
</li>
<li>
<a href="../../security/sasl">
SASL Authentication
</a>
</li>
<li>
<a href="../../security/zookeeper">
ZooKeeper Authentication
</a>
</li>
</ul>
<p>
Development
</p>
<ul class="sidebar-items">
<li>
<a href="../../development/protocol">
BookKeeper protocol
</a>
</li>
</ul>
<p>
Reference
</p>
<ul class="sidebar-items">
<li>
<a href="../../reference/config">
Configuration
</a>
</li>
<li>
<a href="../../reference/cli">
Command-line tools
</a>
</li>
<li>
<a href="../../reference/metrics">
Metrics
</a>
</li>
</ul>
</aside>
</div>
</div>
<div class="column is-8 bk-docs-block">
<header class="docs-title">
<nav class="level bk-level">
<div class="level-left">
<div class="level-item">
<h1 class="title">Apache BookKeeper 4.9.0 Release Notes</h1>
</div>
</div>
</nav>
</header>
<hr />
<div class="content">
<section class="bk-main-content">
<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="../../admin/upgrade">upgrade to 4.9.0</a>. The technical details of
this release are summarized below.</p>
<h2 id="highlights">Highlights</h2>
<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>
<h3 id="dependencies-changes">Dependencies Changes</h3>
<p>Here is a list of dependencies changed in 4.9.0:</p>
<ul>
<li>Upgrade <a href="http://fasterxml.com/">Jackson</a> from <code class="highlighter-rouge">2.8.9</code> to <code class="highlighter-rouge">2.9.7</code>.</li>
<li>Upgrade <a href="https://jline.github.io/">Jline</a> to <code class="highlighter-rouge">2.11</code>.</li>
<li>Upgrade <a href="https://netty.io/">Netty</a> from <code class="highlighter-rouge">4.1.22</code> to <code class="highlighter-rouge">4.1.31</code>.</li>
<li>Upgrade <a href="https://www.testcontainers.org/">TestContainers</a> from <code class="highlighter-rouge">1.7.0</code> to <code class="highlighter-rouge">1.8.3</code>.</li>
</ul>
<h3 id="public-api">Public API</h3>
<p>There are multiple new client features introduced in 4.9.0. Here are two highlighted features:</p>
<ul>
<li>LedgerHandleAdv exposes <code class="highlighter-rouge">asyncAddEntry</code> variant that takes ByteBuf</li>
</ul>
<h3 id="configuration">Configuration</h3>
<p>There are bunch of new settings introduced in both bookie and client in 4.9.0. Here are those settings:</p>
<h4 id="bookie">Bookie</h4>
<ul>
<li><code class="highlighter-rouge">serverNumIOThreads</code>: configures the number of IO threads for bookies
(see <a href="https://github.com/apache/bookkeeper/pull/1612">#1612</a>)</li>
<li>The default value of <code class="highlighter-rouge">fileInfoFormatVersionToWrite</code> is bumped from <code class="highlighter-rouge">0</code> to <code class="highlighter-rouge">1</code>.
(see <a href="https://github.com/apache/bookkeeper/pull/1689">#1689</a>)</li>
<li>The default value of <code class="highlighter-rouge">journalFormatVersionToWrite</code> is bumped from <code class="highlighter-rouge">5</code> to <code class="highlighter-rouge">6</code>.
(see <a href="https://github.com/apache/bookkeeper/pull/1689">#1689</a>)</li>
</ul>
<h4 id="client">Client</h4>
<ul>
<li><code class="highlighter-rouge">numIOThreads</code>: configures the number of IO threads for client
(see <a href="https://github.com/apache/bookkeeper/pull/1612">#1612</a>)</li>
</ul>
<h3 id="metadata">Metadata</h3>
<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">#281</a>)</li>
<li>Store ledger metadata in binary protobuf format (see details at <a href="https://github.com/apache/bookkeeper/issues/723">#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">#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">Issue #1619: Provide async version of markLedgerUnderreplicated for LedgerUnderreplicationManager</a></li>
</ul>
<h3 id="table-service">Table Service</h3>
<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’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">#1691</a></p>
<h3 id="operations">Operations</h3>
<h4 id="http-admin-rest-endpoint">HTTP Admin REST Endpoint</h4>
<ul>
<li><code class="highlighter-rouge">/api/v1/bookie/gc_details</code> is introduced to retrieve the GC details.</li>
<li><code class="highlighter-rouge">/api/v1/bookie/gc</code> is introduced to trigger GC through HTTP REST endpoint.</li>
</ul>
<h4 id="bookieshell">BookieShell</h4>
<p>There are are multiple new commands are added in BookieShell. Here are a few highlighted:</p>
<ul>
<li><code class="highlighter-rouge">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">#1642</a>)</li>
<li><code class="highlighter-rouge">ledgermetadata</code> command now supports dumping/restoring ledger metadata to/from file.</li>
<li><code class="highlighter-rouge">localconsistencycheck</code> command is introduce for running consistency check on bookies locally. (<a href="https://github.com/apache/bookkeeper/pull/1819">#1819</a>)</li>
<li>a new <code class="highlighter-rouge">bk-perf</code> script is introduced for running performance benchmark on bookkeeper. (<a href="https://github.com/apache/bookkeeper/pull/1697">1697</a>)</li>
</ul>
<p>A new BookKeeper CLI package is released as <code class="highlighter-rouge">bkctl</code>. This <code class="highlighter-rouge">bkctl</code> package includes both the existing bookie shell and the new <code class="highlighter-rouge">bkctl</code> tool.</p>
<h4 id="mdc">MDC</h4>
<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">#1672</a>.</p>
<h4 id="stats-annotation">Stats Annotation</h4>
<p><code class="highlighter-rouge">StatsDoc</code> annotation is introduced in <a href="https://github.com/apache/bookkeeper/pull/1786">BP-36</a>. The <code class="highlighter-rouge">StatsDoc</code> annotation is
used for documenting stats added across the project.</p>
<h3 id="builds--testing">Builds &amp; Testing</h3>
<ul>
<li>Java 11 is supported for building bookkeeper.</li>
</ul>
<h3 id="enhancements">Enhancements</h3>
<ul>
<li><a href="https://github.com/apache/bookkeeper/pull/1792">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">#1641</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1682">Issue 1682: Added BlockingQueue implementation based on JCtools</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1813">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">Issue 1808: Allow to configure sticky reads</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1754">Issue 1754: Netty allocator wrapper</a></li>
</ul>
<h3 id="bug-fixes">Bug Fixes</h3>
<h4 id="bookie-1">Bookie</h4>
<ul>
<li><a href="https://github.com/apache/bookkeeper/pull/1414">Issue #1414: Ensure BufferedChannel instance is properly closed</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1805">Issue #1805: Fixed Auth with V2 protocol</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1769">Issue #1769: prevent race between flush and delete from recreating index</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1807">Issue #1807: Fix sorted ledger storage rotating entry log files too frequent</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1843">Issue #1843: DbLedgerStorage should do periodical flush</a></li>
</ul>
<h4 id="autorecovery">AutoRecovery</h4>
<ul>
<li><a href="https://github.com/apache/bookkeeper/pull/1608">Issue #1578: Fixed deadlock in auditor blocking ZK thread</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1834">Issue #1834: Only publish suspect ledgers if they have missing fragments</a></li>
</ul>
<h4 id="client-1">Client</h4>
<ul>
<li><a href="https://github.com/apache/bookkeeper/pull/1762">Issue #1762: Don’t cache Bookie hostname DNS resolution forever</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1788">Issue #1788: Fix bugs in DefaultEnsemblePlacementPolicy</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1862">Issue #1862: Fix selectFromNetworkLocation in RackawareEnsemblePlacementPolicyImpl</a></li>
<li><a href="https://github.com/apache/bookkeeper/pull/1857">Issue #1857: changingEnsemble should be negated before calling unset success</a></li>
</ul>
<h2 id="full-list-of-changes">Full list of changes</h2>
<ul>
<li><a href="https://github.com/apache/bookkeeper/milestone/5?closed=1">https://github.com/apache/bookkeeper/milestone/5</a></li>
</ul>
</section>
</div>
</div>
<div class="column is-2 is-hidden-mobile">
<div class="toc">
<h2 class="title">Apache BookKeeper 4.9.0 Release Notes</h2>
<ul class="section-nav">
<li class="toc-entry toc-h2"><a href="#highlights">Highlights</a>
<ul>
<li class="toc-entry toc-h3"><a href="#dependencies-changes">Dependencies Changes</a></li>
<li class="toc-entry toc-h3"><a href="#public-api">Public API</a></li>
<li class="toc-entry toc-h3"><a href="#configuration">Configuration</a>
<ul>
<li class="toc-entry toc-h4"><a href="#bookie">Bookie</a></li>
<li class="toc-entry toc-h4"><a href="#client">Client</a></li>
</ul>
</li>
<li class="toc-entry toc-h3"><a href="#metadata">Metadata</a></li>
<li class="toc-entry toc-h3"><a href="#table-service">Table Service</a></li>
<li class="toc-entry toc-h3"><a href="#operations">Operations</a>
<ul>
<li class="toc-entry toc-h4"><a href="#http-admin-rest-endpoint">HTTP Admin REST Endpoint</a></li>
<li class="toc-entry toc-h4"><a href="#bookieshell">BookieShell</a></li>
<li class="toc-entry toc-h4"><a href="#mdc">MDC</a></li>
<li class="toc-entry toc-h4"><a href="#stats-annotation">Stats Annotation</a></li>
</ul>
</li>
<li class="toc-entry toc-h3"><a href="#builds--testing">Builds &amp; Testing</a></li>
<li class="toc-entry toc-h3"><a href="#enhancements">Enhancements</a></li>
<li class="toc-entry toc-h3"><a href="#bug-fixes">Bug Fixes</a>
<ul>
<li class="toc-entry toc-h4"><a href="#bookie-1">Bookie</a></li>
<li class="toc-entry toc-h4"><a href="#autorecovery">AutoRecovery</a></li>
<li class="toc-entry toc-h4"><a href="#client-1">Client</a></li>
</ul>
</li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#full-list-of-changes">Full list of changes</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="entry-popover-html" class="popover-template">
<p>An entry is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Entries are also known as records.</p>
</div>
<div id="ledger-popover-html" class="popover-template">
<p>A ledger is a sequence of entries written to BookKeeper. Entries are written sequentially to ledgers and at most once, giving ledgers append-only semantics.</p>
</div>
<div id="bookie-popover-html" class="popover-template">
<p>A bookie is an individual BookKeeper storage server.</p>
<p>Bookies store the content of ledgers and act as a distributed ensemble.</p>
</div>
<div id="rereplication-popover-html" class="popover-template">
<p>A subsystem that runs in the background on bookies to ensure that ledgers are fully replicated even if one bookie from the ensemble is down.</p>
</div>
<div id="striping-popover-html" class="popover-template">
<p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p>
<p>Striping is essential to ensuring fast performance.</p>
</div>
<div id="striped-popover-html" class="popover-template">
<p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p>
<p>Striping is essential to ensuring fast performance.</p>
</div>
<div id="journal-popover-html" class="popover-template">
<p>A journal file stores BookKeeper transaction logs.</p>
</div>
<div id="fencing-popover-html" class="popover-template">
<p>When a reader forces a ledger to close, preventing any further entries from being written to the ledger.</p>
</div>
<div id="record-popover-html" class="popover-template">
<p>A record is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Records are also known as entries.</p>
</div>
<script type="text/javascript">
tippy('#entry-popover', {
html: '#entry-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#ledger-popover', {
html: '#ledger-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#bookie-popover', {
html: '#bookie-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#rereplication-popover', {
html: '#rereplication-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#striping-popover', {
html: '#striping-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#striped-popover', {
html: '#striped-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#journal-popover', {
html: '#journal-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#fencing-popover', {
html: '#fencing-popover-html',
arrow: true,
animation: 'fade'
});
tippy('#record-popover', {
html: '#record-popover-html',
arrow: true,
animation: 'fade'
});
</script>
</main>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Copyright &copy; 2016 - 2021 <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>
</body>
<script src="/js/app.js"></script>
<!--
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.
-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-104419626-1', 'auto');
ga('send', 'pageview');
</script>
</html>