KUDU-1471 NPE in AsyncKuduClient from Spark

Change-Id: Iecb0f0f50f62db3a3d5fb10f80da70fedeb2629d
Reviewed-on: http://gerrit.cloudera.org:8080/3243
Reviewed-by: Dan Burkert <dan@cloudera.com>
Tested-by: Kudu Jenkins
(cherry picked from commit 48e09ab953494779e54963948696d1bcbb77c744)
Reviewed-on: http://gerrit.cloudera.org:8080/3274
Reviewed-by: Jean-Daniel Cryans
diff --git a/java/kudu-client/src/main/java/org/kududb/client/AsyncKuduClient.java b/java/kudu-client/src/main/java/org/kududb/client/AsyncKuduClient.java
index bfda23e..f53b946 100644
--- a/java/kudu-client/src/main/java/org/kududb/client/AsyncKuduClient.java
+++ b/java/kudu-client/src/main/java/org/kududb/client/AsyncKuduClient.java
@@ -1399,8 +1399,10 @@
       client = pipeline.init(uuid, host, port);
       chan = channelFactory.newChannel(pipeline);
       ip2client.put(hostport, client);  // This is guaranteed to return null.
+
+      // The client2tables map is assumed to contain `client` after it is published in ip2client.
+      this.client2tablets.put(client, new ArrayList<RemoteTablet>());
     }
-    this.client2tablets.put(client, new ArrayList<RemoteTablet>());
     final SocketChannelConfig config = chan.getConfig();
     config.setConnectTimeoutMillis(5000);
     config.setTcpNoDelay(true);