Add @since tags and update change log for release 3.4.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d5a3912..1a5f460 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,81 @@
 Apex Changelog
 ========================================================================================================================
 
+Version 3.4.0 - 2016-05-09
+------------------------------------------------------------------------------------------------------------------------
+
+### Sub-task
+* [APEXCORE-254] - Introduce Abstract and Forwarding Reservoir classes
+* [APEXCORE-269] - Provide concrete implementation of AbstractReservoir based on SpscArrayQueue
+* [APEXCORE-365] - Buffer server handling for tuple length that exceeds data list block size
+* [APEXCORE-369] - Fix timeout in AbstractReservoirTest.performanceTest
+* [APEXCORE-402] - SpscArrayQueue to notify publishing thread on not full condition
+
+### Bug
+* [APEXCORE-130] - Throwing A Runtime Exception In Setup Causes The Operator To Block
+* [APEXCORE-201] - Reported latency is wrong when a downstream operator is behind more than 1000 windows
+* [APEXCORE-326] - Iteration causes problems when there are multiple streams between two operators
+* [APEXCORE-335] - StramLocalCluster should teardown StreaminContainerManager after run is complete
+* [APEXCORE-349] - Application/operator/port attributes should be returned using string codec in REST service
+* [APEXCORE-350] - STRAM's REST service sometimes returns duplicate and conflicting Content-Type headers
+* [APEXCORE-352] - Temp directories/files not created in temp directory specified by system property java.io.tmpdir
+* [APEXCORE-353] - Buffer server may stop processing data
+* [APEXCORE-355] - CLI list-*-attributes command name change
+* [APEXCORE-362] - NPE in StreamingContainerManager
+* [APEXCORE-363] - NPE in StreamingContainerManager
+* [APEXCORE-374] - Block with positive reference count is found during buffer server purge
+* [APEXCORE-375] - Container killed because of Out of Sequence tuple error.
+* [APEXCORE-376] - CLI command 'dump-properties-file' does not work when connected to an app
+* [APEXCORE-385] - Temp directories/files not always cleaned up when launching applications
+* [APEXCORE-391] - AsyncFSStorageAgent creates tmp directory unnecessarily
+* [APEXCORE-393] - Reset failure count when consecutive failed node is removed from blacklist
+* [APEXCORE-397] - Allow configurability of stram web services authentication
+* [APEXCORE-398] - Ack may not be delivered from buffer server to it's client
+* [APEXCORE-403] - DelayOperator unit test fails intermittently
+* [APEXCORE-413] - Collision between Sink.getCount() and SweepableReservoir.getCount()
+* [APEXCORE-415] - Input Operator double checkpoint
+* [APEXCORE-421] - Double Checkpointing May Happen In Input Node On Shutdown
+* [APEXCORE-422] - Checkstyle rule related to allowSamelineParameterizedAnnotation suppression
+* [APEXCORE-434] - ClassCastException when making webservice calls to STRAM in secure mode
+* [APEXCORE-436] - Update log4j.properties in archetype test resources to set debug level for org.apache.apex
+* [APEXCORE-439] - After dynamic repartition application appears blocked
+* [APEXCORE-444] - 401 authentication errors when making webservice calls to STRAM in secure mode
+* [APEXCORE-445] - Race condition in AsynFSStorageAgent.save()
+
+### Improvement
+* [APEXCORE-92] - Blacklist problem nodes from future container requests
+* [APEXCORE-107] - Support adding module to application using property file API.
+* [APEXCORE-304] - Ability to add jars to classpath in populateDAG
+* [APEXCORE-328] - CLI tests should not rely on default maven repository or mvn being on the PATH
+* [APEXCORE-330] - Ability to obtain a thread dump from a container
+* [APEXCORE-358] - Make RPC timeout configurable
+* [APEXCORE-380] - Idle time sleep time should increase from 0 to a configurable max value
+* [APEXCORE-383] - Time to sleep while reservoirs are full should increase from 0 to a configurable max value
+* [APEXCORE-384] - For smaller InlineStream port queue size use ArrayBlockingQueueReservoir as default
+* [APEXCORE-399] - Need better debug information in stram web service filter initializer
+* [APEXCORE-400] - Create documentation for security
+* [APEXCORE-401] - Create a separate artifact for checkstyle and other common configurations
+* [APEXCORE-407] - Adaptive SPIN_MILLIS for input operators
+* [APEXCORE-409] - Document json application format
+* [APEXCORE-419] - When operator is blocked, print out a warning instead of debug
+* [APEXCORE-447] - Document: update AutoMetrics with AppDataTracker link
+
+### New Feature
+* [APEXCORE-10] - Enable non-affinity of operators per node (not containers)
+* [APEXCORE-359] - Add clean-app-directories command to CLI to clean up data of terminated apps
+* [APEXCORE-411] - Restart app without specifying app package
+
+### Task
+* [APEXCORE-293] - Add core and malhar documentation to project web site
+* [APEXCORE-319] - Document backward compatibility guidelines
+* [APEXCORE-340] - Rename dtcli script to apex
+* [APEXCORE-345] - Upgrade to 0.7.0 japicmp
+* [APEXCORE-381] - Upgrade async-http-client dependency version because of security issue
+* [APEXCORE-410] - Upgrade to netlet 1.2.1
+* [APEXCORE-423] - Fix style violations in Apex Core
+* [APEXCORE-446] - Add source jar in the shaded-ning build
+
+
 Version 3.3.0-incubating - 2016-02-08
 ------------------------------------------------------------------------------------------------------------------------
 
@@ -67,6 +142,7 @@
 * [APEXCORE-308] - Implement findbugs plugin reporting
 * [APEXCORE-317] - Run performance benchmark for the Apex Core 3.3.0 release
 
+
 Version 3.2.0-incubating - 2015-10-23
 ------------------------------------------------------------------------------------------------------------------------
 
diff --git a/api/src/main/java/com/datatorrent/api/AffinityRule.java b/api/src/main/java/com/datatorrent/api/AffinityRule.java
index 827e833..5e10ccd 100644
--- a/api/src/main/java/com/datatorrent/api/AffinityRule.java
+++ b/api/src/main/java/com/datatorrent/api/AffinityRule.java
@@ -39,6 +39,8 @@
  * operators should not be allocated on the same node. The rule can be either
  * strict or relaxed.
  *
+ *
+ * @since 3.4.0
  */
 public class AffinityRule implements Serializable
 {
diff --git a/api/src/main/java/com/datatorrent/api/AffinityRulesSet.java b/api/src/main/java/com/datatorrent/api/AffinityRulesSet.java
index 95af8b6..31098af 100644
--- a/api/src/main/java/com/datatorrent/api/AffinityRulesSet.java
+++ b/api/src/main/java/com/datatorrent/api/AffinityRulesSet.java
@@ -23,6 +23,8 @@
 
 /**
  * Wrapper class for containing set of Affinity rules specified for application
+ *
+ * @since 3.4.0
  */
 public class AffinityRulesSet implements Serializable
 {
diff --git a/engine/src/main/java/com/datatorrent/stram/BlacklistBasedResourceRequestHandler.java b/engine/src/main/java/com/datatorrent/stram/BlacklistBasedResourceRequestHandler.java
index 510f29a..5bc2fad 100644
--- a/engine/src/main/java/com/datatorrent/stram/BlacklistBasedResourceRequestHandler.java
+++ b/engine/src/main/java/com/datatorrent/stram/BlacklistBasedResourceRequestHandler.java
@@ -41,6 +41,8 @@
  * Host specific container requests are not allocated on Cloudera as captured in
  * Jira Yarn-1412 (https://issues.apache.org/jira/browse/YARN-1412) 
  * To handle such requests, we blacklist all the other nodes before issueing node request.
+ *
+ * @since 3.4.0
  */
 public class BlacklistBasedResourceRequestHandler extends ResourceRequestHandler
 {
diff --git a/engine/src/main/java/com/datatorrent/stram/engine/AbstractReservoir.java b/engine/src/main/java/com/datatorrent/stram/engine/AbstractReservoir.java
index de3b1f3..06f3456 100644
--- a/engine/src/main/java/com/datatorrent/stram/engine/AbstractReservoir.java
+++ b/engine/src/main/java/com/datatorrent/stram/engine/AbstractReservoir.java
@@ -44,6 +44,8 @@
  * Abstract Sweepable Reservoir implementation. Implements all methods of {@link SweepableReservoir} except
  * {@link SweepableReservoir#sweep}. Classes that extend {@link AbstractReservoir} must implement
  * {@link BlockingQueue} interface.
+ *
+ * @since 3.4.0
  */
 public abstract class AbstractReservoir implements SweepableReservoir, BlockingQueue<Object>
 {
diff --git a/engine/src/main/java/com/datatorrent/stram/engine/ForwardingReservoir.java b/engine/src/main/java/com/datatorrent/stram/engine/ForwardingReservoir.java
index 49b7f31..0fdb843 100644
--- a/engine/src/main/java/com/datatorrent/stram/engine/ForwardingReservoir.java
+++ b/engine/src/main/java/com/datatorrent/stram/engine/ForwardingReservoir.java
@@ -21,6 +21,9 @@
 import com.datatorrent.api.Sink;
 import com.datatorrent.stram.tuple.Tuple;
 
+/**
+ * @since 3.4.0
+ */
 public class ForwardingReservoir implements SweepableReservoir
 {
   public static ForwardingReservoir newReservoir(final String id, final int capacity)
diff --git a/engine/src/main/java/com/datatorrent/stram/util/SecurityUtils.java b/engine/src/main/java/com/datatorrent/stram/util/SecurityUtils.java
index e897416..0d54511 100644
--- a/engine/src/main/java/com/datatorrent/stram/util/SecurityUtils.java
+++ b/engine/src/main/java/com/datatorrent/stram/util/SecurityUtils.java
@@ -26,6 +26,8 @@
 
 /**
  *
+ *
+ * @since 3.4.0
  */
 public class SecurityUtils
 {