blob: 3880ff51f97afd2eb632f92d333b1464b8818c9f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Apache BookKeeper&trade; - BookKeeper Proposals</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.15.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.14.0/overview/overview">
Release 4.14.0
</a>
<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-community-container">
<div class="columns">
<div class="column is-12">
<header class="docs-title">
<nav class="level">
<div class="level-left">
<div class="level-item">
<h1 class="title">BookKeeper Proposals</h1>
</div>
</div>
</nav>
</header>
<hr />
<div class="content is-medium">
<section class="bk-community-content">
<p>This page describes a proposed <em>BookKeeper Proposal (BP)</em> process for proposing a major change to BookKeeper.</p>
<h2 id="process">Process</h2>
<h3 id="what-is-considered-a-major-change-that-needs-a-bp">What is considered a “major change” that needs a BP?</h3>
<p>Any of the following should be considered a major change:</p>
<ul>
<li>Any major new feature, subsystem, or piece of functionality</li>
<li>Any change that impacts the public interfaces of the project</li>
<li>Any change that impacts developer workflow of the project</li>
</ul>
<p>All the following are public interfaces that people build around:</p>
<ul>
<li>Binary log format</li>
<li>The network protocol and api behavior</li>
<li>Configuration, especially client configuration</li>
<li>Monitoring/Stats provider</li>
<li>Command line tools and arguments</li>
</ul>
<h3 id="what-should-be-included-in-a-bp">What should be included in a BP?</h3>
<p>A BP should contain the following sections:</p>
<ul>
<li><em>Motivation</em>: describe the problem to be solved</li>
<li><em>Proposed Change</em>: describe the new thing you want to do. This may be fairly extensive and have large subsections of its own. Or it may be a few sentences, depending on the scope of the change.</li>
<li><em>New or Changed Public Interfaces</em>: impact to any of the “compatibility commitments” described above. We want to call these out in particular so everyone thinks about them.</li>
<li><em>Migration Plan and Compatibility</em>: if this feature requires additional support for a no-downtime upgrade describe how that will work</li>
<li><em>Rejected Alternatives</em>: What are the other alternatives you considered and why are they worse? The goal of this section is to help people understand why this is the best solution now, and also to prevent churn in the future when old alternatives are reconsidered.</li>
</ul>
<h3 id="who-should-initiate-the-bp">Who should initiate the BP?</h3>
<p>Anyone can initiate a BP but you shouldn’t do it unless you have an intention of getting the work done to implement it (otherwise it is silly).</p>
<h3 id="how-to-make-a-bp">How to make a BP?</h3>
<p>Here is the process for making a BP:</p>
<ol>
<li>Create an issue <code class="highlighter-rouge">BP-&lt;number&gt;: [capation of bookkeeper proposal]</code>. E.g. <code class="highlighter-rouge">BP-1: 64 bits ledger id support</code>.
<ul>
<li>Take the next available BP number from this page.</li>
<li>Write a brief description about what BP is for in this issue. This issue will be the master issue for tracking the status of this BP and its implementations.
All the implementations of this BP should be listed and linked to this master issues.</li>
</ul>
</li>
<li>Write the proposal for this BP. There are two ways to write a bookkeeper proposal. You can choose to write a BP using markdown, or write a BP
using Google Doc.
<ul>
<li>Markdown
<ul>
<li>Make a copy of the <a href="https://github.com/apache/bookkeeper/tree/master/site/bps/BP-template.md">BP-Template</a>. Name the BP file as <code class="highlighter-rouge">BP-&lt;number&gt;-[caption-of-proposal].md</code>.
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nv">$ </span><span class="nb">cp </span>site/bps/BP-template.md site/bps/BP-xyz-capation-of-proposal.md
</code></pre></div> </div>
</li>
<li>Fill the sections listed in the BP template.
<ul>
<li>issue: replace <code class="highlighter-rouge">&lt;issue-number&gt;</code> with the issue number.</li>
<li>state: “Under Discussion”</li>
<li>release: leave the release to <code class="highlighter-rouge">N/A</code>. you can only mark a release after a BP is implemented.</li>
</ul>
</li>
</ul>
</li>
<li>Google Doc
<ul>
<li>Make a copy of the <a href="https://docs.google.com/document/d/1DsmH54LoohgwqnEjESPQNtIYxxcOy2rwonZ_TJCwws0">BP-Template</a>. Name the BP file as <code class="highlighter-rouge">BP-&lt;number&gt;-[caption-of-proposal]</code>.</li>
<li>Fill the sections listed in the BP template.</li>
</ul>
</li>
</ul>
</li>
<li>Send a PR for this BP. Following the instructions in the pull request template.
<ul>
<li>add <code class="highlighter-rouge">BP</code> label to this PR</li>
<li>attach the google doc link in the PR description if the BP is written in google doc</li>
<li>don’t associate this PR with any release or milestone</li>
<li>edit <code class="highlighter-rouge">site/community/bookkeeper_proposals.md</code>:
<ul>
<li>bump the next bp number</li>
<li>add this BP to <code class="highlighter-rouge">Inprogress</code> section</li>
</ul>
</li>
</ul>
</li>
<li>You can tag committers on this RP for reviewers, or start a <code class="highlighter-rouge">[DISCUSS]</code> thread on Apache mailing list. If you are sending an email, please make sure that the subject
of the thread is of the format <code class="highlighter-rouge">[DISCUSS] BP-&lt;number&gt;: capation of bookkeeper proposal</code>.</li>
<li>Once the BP is finalized, reviewed and approved by committers, the BP is accepted. The criteria for acceptance is <a href="http://bookkeeper.apache.org/bylaws.html">lazy majority</a>.
<ol>
<li>Committers merge the PR after a BP is accepted. The development for this BP moves forward with implementations. The BP should be updated if there is anything changed during implementing it.</li>
<li>After all the implementations for a given BP are completed, a new PR should be sent for changing the state of a BP:
<ul>
<li>state: “Adopted”</li>
<li>release: set to the release that includes this BP.</li>
<li>moving the BP from <code class="highlighter-rouge">Inprogress</code> to <code class="highlighter-rouge">Adopted</code>.</li>
</ul>
</li>
<li>The final PR for changing BP state will be used as the criteria for marking a BP as completed.</li>
</ol>
</li>
<li>If a BP is failed or rejected:
<ol>
<li>Update the PR to change the state of a BP
<ul>
<li>state: “Discarded”</li>
<li>add a paragraph at the first paragraph of this BP for describing the reasons.</li>
<li>moving the BP from <code class="highlighter-rouge">Inprogress</code> to <code class="highlighter-rouge">Discarded</code>.</li>
</ul>
</li>
<li>Once the PR is updated, committers can merge this proposal PR and close the master issue of this BP.</li>
</ol>
</li>
</ol>
<h2 id="all-proposals">All Proposals</h2>
<p>This section lists all the <em>bookkeeper proposals</em> made to BookKeeper.</p>
<p><em>Next Proposal Number: 43</em></p>
<h3 id="inprogress">Inprogress</h3>
<table>
<thead>
<tr>
<th style="text-align: left">Proposal</th>
<th style="text-align: left">State</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-4+-+BookKeeper+Lifecycle+Management">BP-4 - BookKeeper Lifecycle Management</a></td>
<td style="text-align: left">Draft</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-8+-+Queue+based+auto+rereplicator">BP-8 - Queue based auto rereplicator</a></td>
<td style="text-align: left">Draft</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-12+-+Improve+documentation">BP-12 - Improve documentation</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-14+Relax+durability">BP-14 Relax durability</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-16%3A+Thin+Client+-+Remove+direct+metadata+storage+access+from+clients">BP-16: Thin Client - Remove direct metadata storage access from clients</a></td>
<td style="text-align: left">Draft</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-18%3A+LedgerType%2C+Flags+and+StorageHints">BP-18: LedgerType, Flags and StorageHints</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-26-move-distributedlog-core-library">BP-26: Move distributedlog library as part of bookkeeper</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-27-new-bookkeeper-cli">BP-27: New BookKeeper CLI</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-28-etcd-as-metadata-store">BP-28: use etcd as metadata store</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-29-metadata-store-api-module">BP-29: Metadata API module</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://docs.google.com/document/d/155xAwWv5IdOitHh1NVMEwCMGgB28M3FyMiQSxEpjE-Y/edit#heading=h.56rbh52koe3f">BP-30: BookKeeper Table Service</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-31-durability">BP-31: BookKeeper Durability Anchor</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-32-advisory-write-close">BP-32: Advisory (optimistic) write close</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-33-building-official-docker-imags">BP-33: Move releasing docker images out of main repo</a></td>
<td style="text-align: left">Draft</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-34-cluster-metadata-checker">BP-34: Cluster Metadata Checker</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-35-128-bits-support">BP-35: 128 bits support</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-36-stats-documentation-annotation">BP-36: Stats documentation annotation</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-37-conf-documentation">BP-37: Improve configuration management for better documentation</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-41-bookieid">BP-41: Separate BookieId from Separate BookieId from Bookie Network Address</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-42-new-api-list-ledgers">BP-42: New Client API - list ledgers</a></td>
<td style="text-align: left">Accepted</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-43-gradle-migration">BP-43: Migration to gradle</a></td>
<td style="text-align: left">Draft</td>
</tr>
</tbody>
</table>
<h3 id="adopted">Adopted</h3>
<table>
<thead>
<tr>
<th style="text-align: left">Proposal</th>
<th style="text-align: left">Release</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-1+-+64+bits+ledger+id+support">BP-1 - 64 bits ledger id support</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-2+-+Resource+aware+data+placement">BP-2 - Resource aware data placement</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-3+-+Security+support">BP-3 - Security support</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-5+Allow+reads+outside+the+LAC+Protocol">BP-5 - Allow reads outside the LAC Protocol</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-6+-+Use+separate+log+for+compaction">BP-6 - Use separate log for compaction</a></td>
<td style="text-align: left">4.6.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-9+-+Github+issues+for+Issue+Tracking">BP-9 - Github issues for Issue Tracking</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-10+-+Official+Bookkeeper+Docker+Image">BP-10 - Official Bookkeeper Docker Image</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=71012301">BP-11 - Move website/documentation to Jekyll based site</a></td>
<td style="text-align: left">4.5.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-13+-+Time+Based+Release+Plan">BP-13 - Time Based Release Plan</a></td>
<td style="text-align: left">4.6.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-15+New+CreateLedger+API">BP-15 - New CreateLedger API</a></td>
<td style="text-align: left">4.6.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-17%3A+Define+BookKeeper+public+http+endpoints">BP-17 - Define BookKeeper public http endpoints</a></td>
<td style="text-align: left">4.6.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-20-github-workflow-for-bookkeeper-proposals">BP-20: Github workflow for bookkeeper proposals</a></td>
<td style="text-align: left">4.7.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-25-MovingChecksumToProto">BP-25: Move checksum to proto</a></td>
<td style="text-align: left">4.7.0</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-38-bookie-endpoint-discovery">BP-38: Publish Bookie Service Info on Metadata Service</a></td>
<td style="text-align: left">4.11.0</td>
</tr>
</tbody>
</table>
<h3 id="discarded">Discarded</h3>
<table>
<thead>
<tr>
<th style="text-align: left">Proposal</th>
<th style="text-align: left">Reason</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP-7+-+Explicit+LAC+on+addEntry">BP-7 - Explicit LAC on addEntry</a></td>
<td style="text-align: left">Not A Problem</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-21-new-api-close-inconsistencies">BP-21: New API close inconsistencies</a></td>
<td style="text-align: left">Not A Problem</td>
</tr>
<tr>
<td style="text-align: left"><a href="../../bps/BP-22-separate-closing-ledgers-from-opening-ledgers">BP-22: Separate closing ledgers from opening ledgers</a></td>
<td style="text-align: left">Not A Problem</td>
</tr>
</tbody>
</table>
</section>
</div>
</div>
</div>
</div>
</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>