Merge remote-tracking branch 'origin/release/0.12.1' into develop
diff --git a/RELEASE.md b/RELEASE.md
index d2bccc6..1257915 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -21,9 +21,46 @@
 
 ## Version History
 
+### 0.12.1
+
+Mar 11, 2018
+
+#### New Features
+
+- [PIO-125](https://issues.apache.org/jira/browse/PIO-125): Add support for Spark 2.2.
+- [PIO-137](https://issues.apache.org/jira/browse/PIO-137): Add CleanupFunctions for Python.
+
+#### Behavior Changes
+
+- [PIO-126](https://issues.apache.org/jira/browse/PIO-126): Update install.sh to use binary release.
+- [PIO-137](https://issues.apache.org/jira/browse/PIO-137): Create a connection object at a worker to delete events.
+
+#### Other Changes
+
+- [PIO-101](https://issues.apache.org/jira/browse/PIO-101): Document usage of plug-in of event server and engine server.
+- [PIO-127](https://issues.apache.org/jira/browse/PIO-127): Update PMC documentation for release process.
+- [PIO-129](https://issues.apache.org/jira/browse/PIO-129): Move CLI document in side menu.
+- [PIO-131](https://issues.apache.org/jira/browse/PIO-131): Fix Apache licensing issues for doc site.
+- [PIO-133](https://issues.apache.org/jira/browse/PIO-133): Make sure project web site meets all requirements in Apache Project Website Branding Policy.
+- [PIO-135](https://issues.apache.org/jira/browse/PIO-135): Remove all incubating status.
+- [PIO-139](https://issues.apache.org/jira/browse/PIO-139): Update release process doc to include closing all resolved stories within the new release.
+- [PIO-146](https://issues.apache.org/jira/browse/PIO-146): Change TM to (R) on text marks.
+- [PIO-147](https://issues.apache.org/jira/browse/PIO-147): Fix broken Scala API documentation.
+- [PIO-150](https://issues.apache.org/jira/browse/PIO-150): Update Ruby gem dependency versions for security improvement.
+- [PIO-151](https://issues.apache.org/jira/browse/PIO-151): Add S3 storage provider docs.
+
+#### Credits
+
+The following contributors have spent a great deal of effort to bring to you
+this release:
+
+Chan Lee, Donald Szeto, Helene Brashear, James Ward, Jeffrey Cafferata,
+Mars Hall, Naoki Takezoe, Shinsuke Sugaya, Steven Yan, Takahiro Hagino,
+Takako Shimamoto
+
 ### 0.12.0
 
-Sep ?, 2017
+Sep 27, 2017
 
 #### New Features
 
diff --git a/build.sbt b/build.sbt
index 9776fda..ec54104 100644
--- a/build.sbt
+++ b/build.sbt
@@ -50,7 +50,7 @@
 
 name := "apache-predictionio-parent"
 
-version in ThisBuild := "0.13.0-SNAPSHOT"
+version in ThisBuild := "0.12.1"
 
 organization in ThisBuild := "org.apache.predictionio"
 
diff --git a/examples/scala-parallel-classification/add-algorithm/build.sbt b/examples/scala-parallel-classification/add-algorithm/build.sbt
index aef4495..703b5be 100644
--- a/examples/scala-parallel-classification/add-algorithm/build.sbt
+++ b/examples/scala-parallel-classification/add-algorithm/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-classification/reading-custom-properties/build.sbt b/examples/scala-parallel-classification/reading-custom-properties/build.sbt
index aef4495..703b5be 100644
--- a/examples/scala-parallel-classification/reading-custom-properties/build.sbt
+++ b/examples/scala-parallel-classification/reading-custom-properties/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt b/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
index f5dc7e5..e45e277 100644
--- a/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
+++ b/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt b/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
index f5dc7e5..e45e277 100644
--- a/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
+++ b/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-recommendation/blacklist-items/build.sbt b/examples/scala-parallel-recommendation/blacklist-items/build.sbt
index 1c38229..0251958 100644
--- a/examples/scala-parallel-recommendation/blacklist-items/build.sbt
+++ b/examples/scala-parallel-recommendation/blacklist-items/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/customize-data-prep/build.sbt b/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
index 1c38229..0251958 100644
--- a/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
+++ b/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/customize-serving/build.sbt b/examples/scala-parallel-recommendation/customize-serving/build.sbt
index 1c38229..0251958 100644
--- a/examples/scala-parallel-recommendation/customize-serving/build.sbt
+++ b/examples/scala-parallel-recommendation/customize-serving/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/reading-custom-events/build.sbt b/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
index 1c38229..0251958 100644
--- a/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
+++ b/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/train-with-view-event/build.sbt b/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
index 1c38229..0251958 100644
--- a/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
+++ b/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt b/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
index 9d7c345..c03fd46 100644
--- a/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
+++ b/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-similarproduct/recommended-user/build.sbt b/examples/scala-parallel-similarproduct/recommended-user/build.sbt
index a233b8b..d40f4f0 100644
--- a/examples/scala-parallel-similarproduct/recommended-user/build.sbt
+++ b/examples/scala-parallel-similarproduct/recommended-user/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-similarproduct/return-item-properties/build.sbt b/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
index 9d7c345..c03fd46 100644
--- a/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
+++ b/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt b/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
index 9d7c345..c03fd46 100644
--- a/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
+++ b/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt b/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
index 9d7c345..c03fd46 100644
--- a/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
+++ b/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
@@ -20,5 +20,5 @@
 organization := "org.apache.predictionio"
 scalaVersion := "2.11.8"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.0-incubating" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
diff --git a/tests/pio_tests/engines/recommendation-engine/build.sbt b/tests/pio_tests/engines/recommendation-engine/build.sbt
index 4cf483d..798995c 100644
--- a/tests/pio_tests/engines/recommendation-engine/build.sbt
+++ b/tests/pio_tests/engines/recommendation-engine/build.sbt
@@ -26,6 +26,6 @@
 organization := "org.apache.predictionio"
 
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0-SNAPSHOT" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.12.1" % "provided",
   "org.apache.spark"        %% "spark-core"    % sys.env.getOrElse("PIO_SPARK_VERSION", "2.1.1") % "provided",
   "org.apache.spark"        %% "spark-mllib"   % sys.env.getOrElse("PIO_SPARK_VERSION", "2.1.1") % "provided")