Merge branch 'gerrit/mad-hatter'

Change-Id: Ib852b2318cc65dee4a78d3c57c533b9797fa24a9
diff --git a/asterixdb/asterix-common/pom.xml b/asterixdb/asterix-common/pom.xml
index 9c7a7fe..2d8bec2 100644
--- a/asterixdb/asterix-common/pom.xml
+++ b/asterixdb/asterix-common/pom.xml
@@ -38,114 +38,6 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>org.jvnet.jaxb2.maven2</groupId>
-        <artifactId>maven-jaxb2-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>configuration</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <args>
-                <arg>-Xsetters</arg>
-                <arg>-Xvalue-constructor</arg>
-              </args>
-              <plugins>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-basics</artifactId>
-                  <version>0.6.2</version>
-                </plugin>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-value-constructor</artifactId>
-                  <version>3.0</version>
-                </plugin>
-              </plugins>
-              <schemaDirectory>src/main/resources/schema</schemaDirectory>
-              <schemaIncludes>
-                <include>asterix-conf.xsd</include>
-              </schemaIncludes>
-              <generatePackage>org.apache.asterix.common.configuration</generatePackage>
-              <bindingDirectory>src/main/resources/schema</bindingDirectory>
-              <bindingIncludes>
-                <bindingInclude>jaxb-bindings.xjb</bindingInclude>
-              </bindingIncludes>
-              <generateDirectory>${project.build.directory}/generated-sources/configuration</generateDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>cluster</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <args>
-                <arg>-Xsetters</arg>
-                <arg>-Xvalue-constructor</arg>
-              </args>
-              <plugins>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-basics</artifactId>
-                  <version>0.6.2</version>
-                </plugin>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-value-constructor</artifactId>
-                  <version>3.0</version>
-                </plugin>
-              </plugins>
-              <schemaDirectory>src/main/resources/schema</schemaDirectory>
-              <schemaIncludes>
-                <include>cluster.xsd</include>
-              </schemaIncludes>
-              <generatePackage>org.apache.asterix.event.schema.cluster</generatePackage>
-              <generateDirectory>${project.build.directory}/generated-sources/cluster</generateDirectory>
-              <bindingDirectory>src/main/resources/schema</bindingDirectory>
-              <bindingIncludes>
-                <bindingInclude>jaxb-bindings.xjb</bindingInclude>
-              </bindingIncludes>
-            </configuration>
-          </execution>
-          <execution>
-            <id>yarn_cluster</id>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <args>
-                <arg>-Xsetters</arg>
-                <arg>-Xvalue-constructor</arg>
-              </args>
-              <plugins>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-basics</artifactId>
-                  <version>0.6.2</version>
-                </plugin>
-                <plugin>
-                  <groupId>org.jvnet.jaxb2_commons</groupId>
-                  <artifactId>jaxb2-value-constructor</artifactId>
-                  <version>3.0</version>
-                </plugin>
-              </plugins>
-              <schemaDirectory>src/main/resources/schema</schemaDirectory>
-              <schemaIncludes>
-                <include>yarn_cluster.xsd</include>
-              </schemaIncludes>
-              <generatePackage>org.apache.asterix.event.schema.yarnCluster</generatePackage>
-              <generateDirectory>${project.build.directory}/generated-sources/yarn_cluster</generateDirectory>
-              <bindingDirectory>src/main/resources/schema</bindingDirectory>
-              <bindingIncludes>
-                <bindingInclude>jaxb-bindings.xjb</bindingInclude>
-              </bindingIncludes>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
index 3226299..6b97306 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/api/PartitionReplica.java
@@ -113,10 +113,10 @@
 
     public synchronized void close() {
         try {
-            if (sc != null) {
+            if (NetworkingUtil.isHealthy(sc)) {
                 sendGoodBye();
-                NetworkUtil.closeQuietly(sc);
             }
+            NetworkUtil.closeQuietly(sc);
         } finally {
             sc = null;
         }
diff --git a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
index 02a1a02..74deefe 100644
--- a/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
+++ b/hyracks-fullstack/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/sockets/SslSocketChannel.java
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
 import java.nio.channels.SocketChannel;
 
 import javax.net.ssl.SSLEngine;
@@ -142,6 +143,9 @@
         while (src.hasRemaining()) {
             // chunk src to encrypted ssl records of pocket size
             outEncryptedData.clear();
+            if (!socketChannel.isConnected()) {
+                throw new ClosedChannelException();
+            }
             final SSLEngineResult result = engine.wrap(src, outEncryptedData);
             switch (result.getStatus()) {
                 case OK:
@@ -186,8 +190,11 @@
     public synchronized void close() throws IOException {
         if (socketChannel.isOpen()) {
             engine.closeOutbound();
-            new SslHandshake(this).handshake();
-            socketChannel.close();
+            try {
+                new SslHandshake(this).handshake();
+            } finally {
+                socketChannel.close();
+            }
         }
     }