blob: eb835730a2f1cfe6676d4b27f1f69453a91d16e4 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<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="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<title>Apache Storm 0.8.1 released</title>
<!-- Bootstrap core CSS -->
<link href="/assets/css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap theme -->
<link href="/assets/css/bootstrap-theme.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link rel="stylesheet" href="http://fortawesome.github.io/Font-Awesome/assets/font-awesome/css/font-awesome.css">
<link href="/css/style.css" rel="stylesheet">
<link href="/assets/css/owl.theme.css" rel="stylesheet">
<link href="/assets/css/owl.carousel.css" rel="stylesheet">
<script type="text/javascript" src="/assets/js/jquery.min.js"></script>
<script type="text/javascript" src="/assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/assets/js/owl.carousel.min.js"></script>
<script type="text/javascript" src="/assets/js/storm.js"></script>
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<header>
<div class="container-fluid">
<div class="row">
<div class="col-md-5">
<a href="/index.html"><img src="/images/logo.png" class="logo" /></a>
</div>
<div class="col-md-5">
</div>
<div class="col-md-2">
<a href="/downloads.html" class="btn-std btn-block btn-download">Download</a>
</div>
</div>
</div>
</header>
<!--Header End-->
<!--Navigation Begin-->
<div class="navbar" role="banner">
<div class="container-fluid">
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<ul class="nav navbar-nav">
<li><a href="/index.html" id="home">Home</a></li>
<li><a href="/getting-help.html" id="getting-help">Getting Help</a></li>
<li><a href="/about/integrates.html" id="project-info">Project Information</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="documentation">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/releases/2.3.0/index.html">2.3.0</a></li>
<li><a href="/releases/2.2.0/index.html">2.2.0</a></li>
<li><a href="/releases/2.1.0/index.html">2.1.0</a></li>
<li><a href="/releases/2.0.0/index.html">2.0.0</a></li>
<li><a href="/releases/1.2.3/index.html">1.2.3</a></li>
</ul>
</li>
<li><a href="/talksAndVideos.html">Talks and Slideshows</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" id="contribute">Community <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/contribute/Contributing-to-Storm.html">Contributing</a></li>
<li><a href="/contribute/People.html">People</a></li>
<li><a href="/contribute/BYLAWS.html">ByLaws</a></li>
</ul>
</li>
<li><a href="/2021/09/27/storm230-released.html" id="news">News</a></li>
</ul>
</nav>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-3">
<ul class="news" id="news-list">
<li><a href="/2021/09/27/storm230-released.html">Apache Storm 2.3.0 Released</a></li>
<li><a href="/2020/06/30/storm220-released.html">Apache Storm 2.2.0 Released</a></li>
<li><a href="/2019/10/31/storm210-released.html">Apache Storm 2.1.0 Released</a></li>
<li><a href="/2019/07/18/storm123-released.html">Apache Storm 1.2.3 Released</a></li>
<li><a href="/2019/05/30/storm200-released.html">Apache Storm 2.0.0 Released</a></li>
<li><a href="/2018/06/04/storm122-released.html">Apache Storm 1.2.2 Released</a></li>
<li><a href="/2018/06/04/storm113-released.html">Apache Storm 1.1.3 Released</a></li>
<li><a href="/2018/02/19/storm121-released.html">Apache Storm 1.2.1 Released</a></li>
<li><a href="/2018/02/15/storm120-released.html">Apache Storm 1.2.0 Released</a></li>
<li><a href="/2018/02/15/storm112-released.html">Apache Storm 1.1.2 Released</a></li>
<li><a href="/2018/02/14/storm106-released.html">Apache Storm 1.0.6 Released</a></li>
<li><a href="/2017/09/15/storm105-released.html">Apache Storm 1.0.5 Released</a></li>
<li><a href="/2017/08/01/storm111-released.html">Apache Storm 1.1.1 Released</a></li>
<li><a href="/2017/07/28/storm104-released.html">Apache Storm 1.0.4 Released</a></li>
<li><a href="/2017/03/29/storm110-released.html">Apache Storm 1.1.0 released</a></li>
<li><a href="/2017/02/14/storm103-released.html">Apache Storm 1.0.3 Released</a></li>
<li><a href="/2016/09/14/storm0102-released.html">Apache Storm 0.10.2 Released</a></li>
<li><a href="/2016/09/07/storm097-released.html">Apache Storm 0.9.7 Released</a></li>
<li><a href="/2016/08/10/storm102-released.html">Apache Storm 1.0.2 Released</a></li>
<li><a href="/2016/05/06/storm101-released.html">Apache Storm 1.0.1 Released</a></li>
<li><a href="/2016/05/05/storm0101-released.html">Apache Storm 0.10.1 Released</a></li>
<li><a href="/2016/04/12/storm100-released.html">Apache Storm 1.0.0 released</a></li>
<li><a href="/2015/11/05/storm096-released.html">Apache Storm 0.9.6 released</a></li>
<li><a href="/2015/11/05/storm0100-released.html">Apache Storm 0.10.0 released</a></li>
<li><a href="/2015/06/15/storm0100-beta-released.html">Apache Storm 0.10.0 Beta Released</a></li>
<li><a href="/2015/06/04/storm095-released.html">Apache Storm 0.9.5 released</a></li>
<li><a href="/2015/03/25/storm094-released.html">Apache Storm 0.9.4 released</a></li>
<li><a href="/2014/11/25/storm093-released.html">Apache Storm 0.9.3 released</a></li>
<li><a href="/2014/10/20/storm093-release-candidate.html">Apache Storm 0.9.3 release candidate 1 available</a></li>
<li><a href="/2014/06/25/storm092-released.html">Apache Storm 0.9.2 released</a></li>
<li><a href="/2014/06/17/contest-results.html">Apache Storm Logo Contest Results</a></li>
<li><a href="/2014/05/27/round1-results.html">Logo Contest - Round 1 Results</a></li>
<li><a href="/2014/04/29/logo-jlee3.html">Logo Entry No. 11 - Jennifer Lee</a></li>
<li><a href="/2014/04/29/logo-jlee2.html">Logo Entry No. 10 - Jennifer Lee</a></li>
<li><a href="/2014/04/29/logo-jlee1.html">Logo Entry No. 9 - Jennifer Lee</a></li>
<li><a href="/2014/04/27/logo-sasili.html">Logo Entry No. 8 - Stefano Asili</a></li>
<li><a href="/2014/04/27/logo-cboustead.html">Logo Entry No. 7 - Calum Boustead</a></li>
<li><a href="/2014/04/23/logo-abartos.html">Logo Entry No. 6 - Alec Bartos</a></li>
<li><a href="/2014/04/22/logo-zsayari.html">Logo Entry No. 5 - Ziba Sayari</a></li>
<li><a href="/2014/04/21/logo-rmarshall.html">Logo Entry No. 4 - Richard Brownlie-Marshall</a></li>
<li><a href="/2014/04/19/logo-ssuleman.html">Logo Entry No. 3- Shaan Shiv Suleman</a></li>
<li><a href="/2014/04/17/logo-squinones.html">Logo Entry No. 2 - Samuel Quiñones</a></li>
<li><a href="/2014/04/17/logo-pforrest.html">Logo Entry No. 1 - Patricia Forrest</a></li>
<li><a href="/2014/04/10/storm-logo-contest.html">Apache Storm Logo Contest</a></li>
<li><a href="/2013/12/08/storm090-released.html">Apache Storm 0.9.0 Released</a></li>
<li><a href="/2013/01/11/storm082-released.html">Apache Storm 0.8.2 released</a></li>
<li><a href="/2012/09/06/storm081-released.html">Apache Storm 0.8.1 released</a></li>
<li><a href="/2012/08/02/storm080-released.html">Apache Storm 0.8.0 and Trident released</a></li>
</ul>
</div>
<div class="col-md-9" id="news-content">
<h1 class="page-title">
Apache Storm 0.8.1 released
</h1>
<div class="row" style="margin: -15px;">
<div class="col-md-12">
<p class="text-muted credit pull-left">Posted on Sep 6, 2012 by Nathan Marz</p>
<div class="pull-right">
<a
href="https://twitter.com/share"
class="twitter-share-button"
data-count=none
>Tweet</a>
<script> !function(d,s,id){
var js,
fjs=d.getElementsByTagName(s)[0],
p=/^http:/.test(d.location)?'http':'https';
if(!d.getElementById(id)){
js=d.createElement(s);
js.id=id;
js.src=p+'://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js,fjs);
}
}(document, 'script', 'twitter-wjs');
</script>
</div>
</div>
</div>
<div>
<p>Apache Storm 0.8.1 is now available on the downloads page and in Maven. This release contains many bug fixes as well as a few important new features. These include: </p>
<h2 id="apache-storms-unit-testing-facilities-have-been-exposed-via-java">Apache Storm&#39;s unit testing facilities have been exposed via Java</h2>
<p>This is an extremely powerful API that lets you do things like:
a) Easily bring up and tear down local clusters
b) Run a fixed set of tuples through a topology and see all the tuples emitted by all components
c) Feed some tuples through the topology, wait until they&#39;ve been processed, and then run your assertions
d) Use time simulation and step through time via an API. This is useful for testing topologies that do things based on time advancing. You can see examples of the unit testing API <a href="https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java">here</a>.</p>
<h2 id="spout-wait-strategies">Spout wait strategies</h2>
<p>There&#39;s two situations in which a spout needs to wait. The first is when the max spout pending limit is reached. The second is when nothing is emitted from nextTuple. Previously, Apache Storm would just have that spout sit in a busy loop in those cases. What Apache Storm does in those situations is now pluggable, and the default is now for the spout to sleep for 1 ms. This will cause the spout to use dramatically less CPU when it hits those cases, and it also obviates the need for spouts to do any sleeping in their implementation to be &quot;polite&quot;. The wait strategy can be configured with TOPOLOGY_SPOUT_WAIT_STRATEGY and can be configured on a spout by spout basis. The interface to implement for a wait strategy is backtype.storm.spout.ISpoutWaitStrategy </p>
<p>The full changelog is below: </p>
<ul>
<li>Exposed Storm&#39;s unit testing facilities via the backtype.storm.Testing class. Notable functions are Testing/withLocalCluster and Testing/completeTopology </li>
<li>Implemented pluggable spout wait strategy that is invoked when a spout emits nothing from nextTuple or when a spout hits the MAX_SPOUT_PENDING limit </li>
<li>Spouts now have a default wait strategy of a 1 millisecond sleep </li>
<li>Changed log level of &quot;Failed message&quot; logging to DEBUG </li>
<li>Deprecated LinearDRPCTopologyBuilder, TimeCacheMap, and transactional topologies </li>
<li>During &quot;storm jar&quot;, whether topology is already running or not is checked before submitting jar to save time (thanks jasonjckn) </li>
<li>Added BaseMultiReducer class to Trident that provides empty implementations of prepare and cleanup </li>
<li>Added Negate builtin operation to reverse a Filter </li>
<li>Added topology.kryo.decorators config that allows functions to be plugged in to customize Kryo (thanks jasonjckn) </li>
<li>Enable message timeouts when using LocalCluster </li>
<li>Multilang subprocesses can set &quot;need_task_ids&quot; to false when emitting tuples to tell Storm not to send task ids back (performance optimization) (thanks barrywhart) </li>
<li>Add contains method on Tuple (thanks okapies) </li>
<li>Added ISchemableSpout interface </li>
<li>Bug fix: When an item is consumed off an internal buffer, the entry on the buffer is nulled to allow GC to happen on that data </li>
<li>Bug fix: Helper class for Trident MapStates now clear their read cache when a new commit happens, preventing updates from spilling over from a failed batch attempt to the next attempt </li>
<li>Bug fix: Fix NonTransactionalMap to take in an IBackingMap for regular values rather than TransactionalValue (thanks sjoerdmulder) </li>
<li>Bug fix: Fix NPE when no input fields given for regular Aggregator </li>
<li>Bug fix: Fix IndexOutOfBoundsExceptions when a bolt for global aggregation had a parallelism greater than 1 (possible with splitting, stateQuerying, and multiReduce) </li>
<li>Bug fix: Fix &quot;fields size&quot; error that would sometimes occur when splitting a stream with multiple eaches </li>
<li>Bug fix: Fix bug where a committer spout (including opaque spouts) could cause Trident batches to fail </li>
<li>Bug fix: Fix Trident bug where multiple groupings on same stream would cause tuples to be duplicated to all consumers </li>
<li>Bug fix: Fixed error when repartitioning stream twice in a row without any operations in between </li>
<li>Bug fix: Fix rare bug in supervisor where it would continuously fail to clean up workers because the worker was already partially cleaned up </li>
<li>Bug fix: Fix emitDirect in storm.py </li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<div class="footer-widget">
<h5>Meetups</h5>
<ul class="latest-news">
<li><a href="http://www.meetup.com/Apache-Storm-Apache-Kafka/">Apache Storm & Apache Kafka</a> <span class="small">(Sunnyvale, CA)</span></li>
<li><a href="http://www.meetup.com/Apache-Storm-Kafka-Users/">Apache Storm & Kafka Users</a> <span class="small">(Seattle, WA)</span></li>
<li><a href="http://www.meetup.com/New-York-City-Storm-User-Group/">NYC Storm User Group</a> <span class="small">(New York, NY)</span></li>
<li><a href="http://www.meetup.com/Bay-Area-Stream-Processing">Bay Area Stream Processing</a> <span class="small">(Emeryville, CA)</span></li>
<li><a href="http://www.meetup.com/Boston-Storm-Users/">Boston Realtime Data</a> <span class="small">(Boston, MA)</span></li>
<li><a href="http://www.meetup.com/storm-london">London Storm User Group</a> <span class="small">(London, UK)</span></li>
<!-- <li><a href="http://www.meetup.com/Apache-Storm-Kafka-Users/">Seatle, WA</a> <span class="small">(27 Jun 2015)</span></li> -->
</ul>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h5>About Apache Storm</h5>
<p>Apache Storm integrates with any queueing system and any database system. Apache Storm's spout abstraction makes it easy to integrate a new queuing system. Likewise, integrating Apache Storm with database systems is easy.</p>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h5>First Look</h5>
<ul class="footer-list">
<li><a href="/releases/current/Rationale.html">Rationale</a></li>
<li><a href="/releases/current/Tutorial.html">Tutorial</a></li>
<li><a href="/releases/current/Setting-up-development-environment.html">Setting up development environment</a></li>
<li><a href="/releases/current/Creating-a-new-Storm-project.html">Creating a new Apache Storm project</a></li>
</ul>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h5>Documentation</h5>
<ul class="footer-list">
<li><a href="/releases/current/index.html">Index</a></li>
<li><a href="/releases/current/javadocs/index.html">Javadoc</a></li>
<li><a href="/releases/current/FAQ.html">FAQ</a></li>
</ul>
</div>
</div>
</div>
<hr/>
<div class="row">
<div class="col-md-12">
<p align="center">Copyright © 2019 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
<br>Apache Storm, Apache, the Apache feather logo, and the Apache Storm project logos are trademarks of The Apache Software Foundation.
<br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
</div>
</div>
</footer>
<!--Footer End-->
<!-- Scroll to top -->
<span class="totop"><a href="#"><i class="fa fa-angle-up"></i></a></span>
</body>
</html>