blob: 388055b2d06f6b3acdd20cd9db5d7e62e79131f7 [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">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Apache Flink: Apache Flink 1.3.2 Released</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/flink.css">
<link rel="stylesheet" href="/css/syntax.css">
<!-- Blog RSS feed -->
<link href="/blog/feed.xml" rel="alternate" type="application/rss+xml" title="Apache Flink Blog: RSS feed" />
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<!-- We need to load Jquery in the header for custom google analytics event tracking-->
<script src="/js/jquery.min.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[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>
<!-- Main content. -->
<div class="container">
<div class="row">
<div id="sidebar" class="col-sm-3">
<!-- Top navbar. -->
<nav class="navbar navbar-default">
<!-- The logo. -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-logo">
<a href="/">
<img alt="Apache Flink" src="/img/flink-header-logo.svg" width="147px" height="73px">
</a>
</div>
</div><!-- /.navbar-header -->
<!-- The navigation links. -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-main">
<!-- First menu section explains visitors what Flink is -->
<!-- What is Stream Processing? -->
<!--
<li><a href="/streamprocessing1.html">What is Stream Processing?</a></li>
-->
<!-- What is Flink? -->
<li><a href="/flink-architecture.html">What is Apache Flink?</a></li>
<!-- What is Stateful Functions? -->
<li><a href="/stateful-functions.html">What is Stateful Functions?</a></li>
<!-- Use cases -->
<li><a href="/usecases.html">Use Cases</a></li>
<!-- Powered by -->
<li><a href="/poweredby.html">Powered By</a></li>
&nbsp;
<!-- Second menu section aims to support Flink users -->
<!-- Downloads -->
<li><a href="/downloads.html">Downloads</a></li>
<!-- Getting Started -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Getting Started<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11/getting-started/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="/training.html">Training Course</a></li>
</ul>
</li>
<!-- Documentation -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11" target="_blank">Flink 1.11 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-docs-master" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1" target="_blank">Flink Stateful Functions 2.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-master" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
</ul>
</li>
<!-- getting help -->
<li><a href="/gettinghelp.html">Getting Help</a></li>
<!-- Blog -->
<li class="active"><a href="/blog/"><b>Flink Blog</b></a></li>
<!-- Flink-packages -->
<li>
<a href="https://flink-packages.org" target="_blank">flink-packages.org <small><span class="glyphicon glyphicon-new-window"></span></small></a>
</li>
&nbsp;
<!-- Third menu section aim to support community and contributors -->
<!-- Community -->
<li><a href="/community.html">Community &amp; Project Info</a></li>
<!-- Roadmap -->
<li><a href="/roadmap.html">Roadmap</a></li>
<!-- Contribute -->
<li><a href="/contributing/how-to-contribute.html">How to Contribute</a></li>
<!-- GitHub -->
<li>
<a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
</li>
&nbsp;
<!-- Language Switcher -->
<li>
<!-- link to the Chinese home page when current is blog page -->
<a href="/zh">中文版</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-bottom">
<hr />
<!-- Twitter -->
<li><a href="https://twitter.com/apacheflink" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<!-- Visualizer -->
<li class=" hidden-md hidden-sm"><a href="/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<hr />
<li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li>
<style>
.smalllinks:link {
display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
}
</style>
<a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</nav>
</div>
<div class="col-sm-9">
<div class="row-fluid">
<div class="col-sm-12">
<div class="row">
<h1>Apache Flink 1.3.2 Released</h1>
<p><i></i></p>
<article>
<p>05 Aug 2017</p>
<p>The Apache Flink community released the second bugfix version of the Apache Flink 1.3 series.</p>
<p>This release includes more than 60 fixes and minor improvements for Flink 1.3.1. The list below includes a detailed list of all fixes.</p>
<p>We highly recommend all users to upgrade to Flink 1.3.2.</p>
<div class="alert alert-warning">
Important Notice:
<p>A user reported a bug in the FlinkKafkaConsumer
(<a href="https://issues.apache.org/jira/browse/FLINK-7143">FLINK-7143</a>) that is causing
incorrect partition assignment in large Kafka deployments in the presence of inconsistent broker
metadata. In that case multiple parallel instances of the FlinkKafkaConsumer may read from the
same topic partition, leading to data duplication. In Flink 1.3.2 this bug is fixed but incorrect
assignments from Flink 1.3.0 and 1.3.1 cannot be automatically fixed by upgrading to Flink 1.3.2
via a savepoint because the upgraded version would resume the wrong partition assignment from the
savepoint. If you believe you are affected by this bug (seeing messages from some partitions
duplicated) please refer to the JIRA issue for an upgrade path that works around that.</p>
<p>Before attempting the more elaborate upgrade path, we would suggest to check if you are
actually affected by this bug. We did not manage to reproduce it in various testing clusters and
according to the reporting user, it only appeared in rare cases on their very large setup. This
leads us to believe that most likely only a minority of setups would be affected by this bug.</p>
</div>
<p>Notable changes:</p>
<ul>
<li>The default Kafka version for Flink Kafka Consumer 0.10 was bumped from 0.10.0.1 to 0.10.2.1.</li>
<li>Some default values for configurations of AWS API call behaviors in the Flink Kinesis Consumer
were adapted for better default consumption performance: 1) <code>SHARD_GETRECORDS_MAX</code> default changed
to 10,000, and 2) <code>SHARD_GETRECORDS_INTERVAL_MILLIS</code> default changed to 200ms.</li>
</ul>
<p>Updated Maven dependencies:</p>
<div class="highlight"><pre><code class="language-xml"><span class="nt">&lt;dependency&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>flink-java<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.3.2<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
<span class="nt">&lt;dependency&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>flink-streaming-java_2.10<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.3.2<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span>
<span class="nt">&lt;dependency&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.flink<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>flink-clients_2.10<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.3.2<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;/dependency&gt;</span></code></pre></div>
<p>You can find the binaries on the updated <a href="http://flink.apache.org/downloads.html">Downloads page</a>.</p>
<p>List of resolved issues:</p>
<h2> Sub-task
</h2>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6665">FLINK-6665</a>] - Pass a ScheduledExecutorService to the RestartStrategy
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6667">FLINK-6667</a>] - Pass a callback type to the RestartStrategy, rather than the full ExecutionGraph
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6680">FLINK-6680</a>] - App &amp; Flink migration guide: updates for the 1.3 release
</li>
</ul>
<h2> Bug
</h2>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-5488">FLINK-5488</a>] - yarnClient should be closed in AbstractYarnClusterDescriptor for error conditions
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6376">FLINK-6376</a>] - when deploy flink cluster on the yarn, it is lack of hdfs delegation token.
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6541">FLINK-6541</a>] - Jar upload directory not created
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6654">FLINK-6654</a>] - missing maven dependency on &quot;flink-shaded-hadoop2-uber&quot; in flink-dist
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6655">FLINK-6655</a>] - Misleading error message when HistoryServer path is empty
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6742">FLINK-6742</a>] - Improve error message when savepoint migration fails due to task removal
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6774">FLINK-6774</a>] - build-helper-maven-plugin version not set
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6806">FLINK-6806</a>] - rocksdb is not listed as state backend in doc
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6843">FLINK-6843</a>] - ClientConnectionTest fails on travis
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6867">FLINK-6867</a>] - Elasticsearch 1.x ITCase still instable due to embedded node instability
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6918">FLINK-6918</a>] - Failing tests: ChainLengthDecreaseTest and ChainLengthIncreaseTest
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6945">FLINK-6945</a>] - TaskCancelAsyncProducerConsumerITCase.testCancelAsyncProducerAndConsumer instable test case
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6964">FLINK-6964</a>] - Fix recovery for incremental checkpoints in StandaloneCompletedCheckpointStore
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6965">FLINK-6965</a>] - Avro is missing snappy dependency
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6987">FLINK-6987</a>] - TextInputFormatTest fails when run in path containing spaces
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6996">FLINK-6996</a>] - FlinkKafkaProducer010 doesn&#39;t guarantee at-least-once semantic
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7005">FLINK-7005</a>] - Optimization steps are missing for nested registered tables
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7011">FLINK-7011</a>] - Instable Kafka testStartFromKafkaCommitOffsets failures on Travis
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7025">FLINK-7025</a>] - Using NullByteKeySelector for Unbounded ProcTime NonPartitioned Over
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7034">FLINK-7034</a>] - GraphiteReporter cannot recover from lost connection
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7038">FLINK-7038</a>] - Several misused &quot;KeyedDataStream&quot; term in docs and Javadocs
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7041">FLINK-7041</a>] - Deserialize StateBackend from JobCheckpointingSettings with user classloader
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7132">FLINK-7132</a>] - Fix BulkIteration parallelism
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7133">FLINK-7133</a>] - Fix Elasticsearch version interference
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7137">FLINK-7137</a>] - Flink table API defaults top level fields as nullable and all nested fields within CompositeType as non-nullable
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7143">FLINK-7143</a>] - Partition assignment for Kafka consumer is not stable
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7154">FLINK-7154</a>] - Missing call to build CsvTableSource example
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7158">FLINK-7158</a>] - Wrong test jar dependency in flink-clients
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7177">FLINK-7177</a>] - DataSetAggregateWithNullValuesRule fails creating null literal for non-nullable type
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7178">FLINK-7178</a>] - Datadog Metric Reporter Jar is Lacking Dependencies
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7180">FLINK-7180</a>] - CoGroupStream perform checkpoint failed
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7195">FLINK-7195</a>] - FlinkKafkaConsumer should not respect fetched partitions to filter restored partition states
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7216">FLINK-7216</a>] - ExecutionGraph can perform concurrent global restarts to scheduling
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7225">FLINK-7225</a>] - Cutoff exception message in StateDescriptor
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7226">FLINK-7226</a>] - REST responses contain invalid content-encoding header
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7231">FLINK-7231</a>] - SlotSharingGroups are not always released in time for new restarts
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7234">FLINK-7234</a>] - Fix CombineHint documentation
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7241">FLINK-7241</a>] - Fix YARN high availability documentation
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7255">FLINK-7255</a>] - ListStateDescriptor example uses wrong constructor
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7258">FLINK-7258</a>] - IllegalArgumentException in Netty bootstrap with large memory state segment size
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7266">FLINK-7266</a>] - Don&#39;t attempt to delete parent directory on S3
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7268">FLINK-7268</a>] - Zookeeper Checkpoint Store interacting with Incremental State Handles can lead to loss of handles
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7281">FLINK-7281</a>] - Fix various issues in (Maven) release infrastructure
</li>
</ul>
<h2> Improvement
</h2>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6365">FLINK-6365</a>] - Adapt default values of the Kinesis connector
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6575">FLINK-6575</a>] - Disable all tests on Windows that use HDFS
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6682">FLINK-6682</a>] - Improve error message in case parallelism exceeds maxParallelism
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6789">FLINK-6789</a>] - Remove duplicated test utility reducer in optimizer
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6874">FLINK-6874</a>] - Static and transient fields ignored for POJOs
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6898">FLINK-6898</a>] - Limit size of operator component in metric name
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6937">FLINK-6937</a>] - Fix link markdown in Production Readiness Checklist doc
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6940">FLINK-6940</a>] - Clarify the effect of configuring per-job state backend
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-6998">FLINK-6998</a>] - Kafka connector needs to expose metrics for failed/successful offset commits in the Kafka Consumer callback
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7004">FLINK-7004</a>] - Switch to Travis Trusty image
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7032">FLINK-7032</a>] - Intellij is constantly changing language level of sub projects back to 1.6
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7069">FLINK-7069</a>] - Catch exceptions for each reporter separately
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7149">FLINK-7149</a>] - Add checkpoint ID to &#39;sendValues()&#39; in GenericWriteAheadSink
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7164">FLINK-7164</a>] - Extend integration tests for (externalised) checkpoints, checkpoint store
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7174">FLINK-7174</a>] - Bump dependency of Kafka 0.10.x to the latest one
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7211">FLINK-7211</a>] - Exclude Gelly javadoc jar from release
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7224">FLINK-7224</a>] - Incorrect Javadoc description in all Kafka consumer versions
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7228">FLINK-7228</a>] - Harden HistoryServerStaticFileHandlerTest
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7233">FLINK-7233</a>] - TaskManagerHeapSizeCalculationJavaBashTest failed on Travis
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7287">FLINK-7287</a>] - test instability in Kafka010ITCase.testCommitOffsetsToKafka
</li>
<li>[<a href="https://issues.apache.org/jira/browse/FLINK-7290">FLINK-7290</a>] - Make release scripts modular
</li>
</ul>
</article>
</div>
<div class="row">
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'stratosphere-eu'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
</div>
</div>
</div>
</div>
</div>
<hr />
<div class="row">
<div class="footer text-center col-sm-12">
<p>Copyright © 2014-2019 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
<p>Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
<p><a href="/privacy-policy.html">Privacy Policy</a> &middot; <a href="/blog/feed.xml">RSS feed</a></p>
</div>
</div>
</div><!-- /.container -->
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.0/jquery.matchHeight-min.js"></script>
<script src="/js/codetabs.js"></script>
<script src="/js/stickysidebar.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','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-52545728-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>