blob: e37ad720668efebc07301a6e882c0596828e97d1 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache DistributedLog 0.5.0 Release Notes</title>
<meta name="description" content="Apache DistributedLog is an high performance replicated log.
">
<link rel="stylesheet" href="/docs/latest/styles/site.css">
<link rel="stylesheet" href="/docs/latest/css/theme.css">
<!-- JQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="/docs/latest/js/bootstrap.min.js"></script>
<link rel="canonical" href="http://bookkeeper.apache.org/distributedlog/docs/latest/releaseNotes.html" data-proofer-ignore>
<link rel="alternate" type="application/rss+xml" title="Apache DistributedLog" href="http://bookkeeper.apache.org/distributedlog/docs/latest/feed.xml">
<!-- Font Awesome -->
<script src="//cdnjs.cloudflare.com/ajax/libs/anchor-js/3.2.0/anchor.min.js"></script>
<!-- Google Analytics -->
<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-83870961-1', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
<link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
</head>
<body role="document">
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a href="/" class="navbar-brand" >
<img alt="Brand" style="height: 28px" src="/docs/latest/images/distributedlog_logo_navbar.png">
</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<!-- Overview -->
<li><a href="/docs/latest/">V0.5.0</a></li>
<!-- Concepts -->
<li><a href="/docs/latest/basics/introduction">Concepts</a></li>
<!-- Quick Start -->
<li>
<a href="/docs/latest/start" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Start<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="/docs/latest/start/building.html">
Build DistributedLog from Source
</a>
</li>
<li>
<a href="/docs/latest/start/download.html">
Download Releases
</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header"><strong>Quickstart</strong></li>
<li>
<a href="/docs/latest/start/quickstart.html">
Setup & Run Example
</a>
</li>
<li>
<a href="/docs/latest/tutorials/basic-1.html">
API - Write Records (via core library)
</a>
</li>
<li>
<a href="/docs/latest/tutorials/basic-2.html">
API - Write Records (via write proxy)
</a>
</li>
<li>
<a href="/docs/latest/tutorials/basic-5.html">
API - Read Records
</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header"><strong>Deployment</strong></li>
<li>
<a href="/docs/latest/deployment/cluster.html">
Cluster Setup
</a>
</li>
<li>
<a href="/docs/latest/deployment/global-cluster.html">
Global Cluster Setup
</a>
</li>
<li>
<a href="/docs/latest/deployment/docker.html">
Docker
</a>
</li>
</ul>
</li>
<!-- API -->
<li>
<a href="/docs/latest/start" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">API<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="/docs/latest/api/java">Java</a></li>
</ul>
</li>
<!-- User Guide -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">User Guide<span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="/docs/latest/basics/introduction.html">
Introduction
</a>
</li>
<li>
<a href="/docs/latest/user_guide/considerations/main.html">
Considerations
</a>
</li>
<li>
<a href="/docs/latest/user_guide/architecture/main.html">
Architecture
</a>
</li>
<li>
<a href="/docs/latest/user_guide/api/main.html">
API
</a>
</li>
<li>
<a href="/docs/latest/user_guide/configuration/main.html">
Configuration
</a>
</li>
<li>
<a href="/docs/latest/user_guide/design/main.html">
Detail Design
</a>
</li>
<li>
<a href="/docs/latest/user_guide/globalreplicatedlog/main.html">
Global Replicated Log
</a>
</li>
<li>
<a href="/docs/latest/user_guide/implementation/main.html">
Implementation
</a>
</li>
<li>
<a href="/docs/latest/user_guide/references/main.html">
References
</a>
</li>
</ul>
</li>
<!-- Admin Guide -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin Guide<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="/docs/latest/deployment/cluster">Cluster Setup</a></li>
<li>
<a href="/docs/latest/admin_guide/operations.html">
Operations
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/loadtest.html">
Load Test
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/performance.html">
Performance Tuning
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/hardware.html">
Hardware
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/monitoring.html">
Monitoring
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/zookeeper.html">
ZooKeeper
</a>
</li>
<li>
<a href="/docs/latest/admin_guide/bookkeeper.html">
BookKeeper
</a>
</li>
</ul>
</li>
<!-- Tutorials -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Tutorials<span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="dropdown-header"><strong>Basic</strong></li>
<li><a href="/docs/latest/tutorials/basic-1">Write Records (via Core Library)</a></li>
<li><a href="/docs/latest/tutorials/basic-2">Write Records (via Write Proxy)</a></li>
<li><a href="/docs/latest/tutorials/basic-3">Write Records to multiple streams</a></li>
<li><a href="/docs/latest/tutorials/basic-4">Atomic Write Records</a></li>
<li><a href="/docs/latest/tutorials/basic-5">Tailing Read Records</a></li>
<li><a href="/docs/latest/tutorials/basic-6">Rewind Read Records</a></li>
<li role="separator" class="divider"></li>
<li class="dropdown-header"><strong>Messaging</strong></li>
<li>
<a href="/docs/latest/tutorials/messaging-1.html">
Write records to partitioned streams
</a>
</li>
<li>
<a href="/docs/latest/tutorials/messaging-2.html">
Write records to multiple streams (load balancer)
</a>
</li>
<li>
<a href="/docs/latest/tutorials/messaging-3.html">
At-least-once Processing
</a>
</li>
<li>
<a href="/docs/latest/tutorials/messaging-4.html">
Exact-Once Processing
</a>
</li>
<li>
<a href="/docs/latest/tutorials/messaging-5.html">
Implement a kafka-like pub/sub system
</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header"><strong>Replicated State Machines</strong></li>
<li>
<a href="/docs/latest/tutorials/replicatedstatemachines.html">
Build replicated state machines
</a>
</li>
<li role="separator" class="divider"></li>
<li class="dropdown-header"><strong>Analytics</strong></li>
<li><a href="/docs/latest/tutorials/analytics-mapreduce">Process log streams using MapReduce</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<link rel="stylesheet" href="">
<div class="container" role="main">
<div class="row">
<!--
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.
-->
<div class="col-md-8 col-md-offset-2">
<p>This is the second Apache release of DistributedLog and the first release as a sub-project of Apache BookKeeper!</p>
<p>The 0.5.0 release upgrades BookKeeper from Twitter <code class="highlighter-rouge">4.3.7-TWTTR-OSS</code> version to the official Apache <code class="highlighter-rouge">4.5.0</code> version.
It is a big milestone in Apache BookKeeper &amp; DistributedLog community, converging the development efforts for
both communities and moving the DistributedLog development on the official Apache bookkeeper release.</p>
<p>Apache DistributedLog users are encouraged to upgrade to 0.5.0. The technical details of this release are summarized
below.</p>
<h2 id="highlights">Highlights</h2>
<h3 id="bookkeeper-version-upgrade">BookKeeper Version Upgrade</h3>
<p>The main change in 0.5.0 is BookKeeper version upgrade. We upgraded the BookKeeper version from Twitter’s <code class="highlighter-rouge">4.3.7-TWTTR-OSS</code>
to the official <a href="http://bookkeeper.apache.org/docs/4.5.0/overview/releaseNotes/">Apache BookKeeper <code class="highlighter-rouge">4.5.0</code></a> version. This upgrade brings in BookKeeper security feature and performance improvement (such as netty 4 upgrade).
The upgrade should be straightforward, because there isn’t any backward compatible issue.</p>
<h3 id="change-twitter-future-to-java-future">Change Twitter Future to Java Future</h3>
<p>Prior to 0.5.0, the DistributedLog API heavily depends on Twitter Future library and other scala dependency. In 0.5.0, we change
the twitter future API to a separate module and replace the core API with Java8 CompletableFuture. It reduces the dependencies introduced
by Scala and also avoid maintaining multiple versions for different scala versions.</p>
<h3 id="better-buffermemory-management">Better buffer/memory management</h3>
<p>After upgrading to BookKeeper 4.5.0, we update the buffer and memory management in DistributedLog to leverage netty’s buffer management.
It reduces object allocation, memory copies and improves the latency because less jvm garbage is produced.</p>
<h2 id="full-list-of-changes">Full list of changes</h2>
<h3 id="jira">JIRA</h3>
<p>####Sub-task</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/DL-208">DL-208</a>] - Update release notes about the download location
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-209">DL-209</a>] - Update build script to build DistributedLog website under `bookkeeper.apache.org/distributedlog`
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-210">DL-210</a>] - Update DL mailing lists
</li>
</ul>
<p>####Bug</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/DL-19">DL-19</a>] - Can&#39;t compile thrift file
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-124">DL-124</a>] - Use Java8 Future rather than twitter Future
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-128">DL-128</a>] - All TODO items should have jira tickets.
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-195">DL-195</a>] - Apache Rat Check Failures on DISCLAIMER.bin.txt
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-206">DL-206</a>] - Delete log doesn&#39;t delete log segments
</li>
</ul>
<p>####Improvement</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/DL-204">DL-204</a>] - Bump libthrift to latest version for distributedlog-core
</li>
</ul>
<p>####Task</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/DL-2">DL-2</a>] - DistributedLog should work with the official apache bookkeeper
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-81">DL-81</a>] - Build the distributedlog release procedure
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-82">DL-82</a>] - Automatically build and update the website
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-199">DL-199</a>] - Be able to support filesystem-path like name
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-205">DL-205</a>] - Remove StatusCode dependency on DLException
</li>
<li>[<a href="https://issues.apache.org/jira/browse/DL-207">DL-207</a>] - DL Graduation Item
</li>
</ul>
<h3 id="github">Github</h3>
<ul>
<li><a href="https://github.com/apache/distributedlog/milestone/1?closed=1">https://github.com/apache/distributedlog/milestone/1</a></li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-xs-12">
<footer>
<p class="text-center">&copy; Copyright 2016
<a href="http://www.apache.org">The Apache Software Foundation.</a> All Rights Reserved.
</p>
<p class="text-center">
<a href="/docs/latest/feed.xml">RSS Feed</a>
</p>
</footer>
</div>
</div>
<!-- container div end -->
</div>
<script>
(function () {
'use strict';
anchors.options.placement = 'right';
anchors.add();
})();
</script>
</body>
</html>