This is an automated email from the ASF dual-hosted git repository.

eolivelli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 8654e7e  ZOOKEEPER-3342: Use StandardCharsets
8654e7e is described below

commit 8654e7ed37717df79eb06f75de43eafe4f47b175
Author: David Mollitor <[email protected]>
AuthorDate: Fri Oct 30 12:03:41 2020 +0100

    ZOOKEEPER-3342: Use StandardCharsets
    
    > Encodes this String into a sequence of bytes using the platform's default 
charset, storing the result into a new byte array.  The behavior of this method 
when this string cannot be encoded in the default charset is unspecified.
    
    https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#getBytes--
    
    1.  Since this is a distributed system, it is always possible that 
different nodes have different default charsets defined.  I think it's most 
safe to specify it explicitly across all nodes for safety sake.  You could for 
example see a situation where an upgrade JVM uses a different default and 
during a rolling upgrade of the JVM, different nodes now have a different 
default.
    2.  The default charset is usually "ISO-8859-1".  UTF-8 covers more of our 
international friends.
    3. Explicitly specifying the CharSet yields slight performance gains
    4. Explicitly specifying the CharSet removes the need for try/catch blocks 
of UnsupportedEncodingException
    
    https://blog.codecentric.de/en/2014/04/faster-cleaner-code-since-java-7/
    
    Author: David Mollitor <[email protected]>
    Author: Beluga Behr <[email protected]>
    Author: David Mollitor <[email protected]>
    
    Reviewers: Enrico Olivelli <[email protected]>, Andor Molnar 
<[email protected]>
    
    Closes #882 from belugabehr/ZOOKEEPER-3342
---
 .../recipes/queue/DistributedQueueTest.java        | 29 +++++++++++-----------
 .../org/apache/zookeeper/ServerAdminClient.java    |  9 ++++---
 .../org/apache/zookeeper/cli/AddAuthCommand.java   |  3 ++-
 .../org/apache/zookeeper/cli/CreateCommand.java    |  3 ++-
 .../org/apache/zookeeper/cli/DelQuotaCommand.java  |  7 +++---
 .../java/org/apache/zookeeper/cli/GetCommand.java  |  3 ++-
 .../org/apache/zookeeper/cli/GetConfigCommand.java |  7 +++---
 .../org/apache/zookeeper/cli/ListQuotaCommand.java |  7 +++---
 .../org/apache/zookeeper/cli/ReconfigCommand.java  |  3 ++-
 .../java/org/apache/zookeeper/cli/SetCommand.java  |  3 ++-
 .../org/apache/zookeeper/cli/SetQuotaCommand.java  |  9 ++++---
 .../zookeeper/client/FourLetterWordMain.java       |  3 ++-
 .../apache/zookeeper/server/ContainerManager.java  |  3 ++-
 .../java/org/apache/zookeeper/server/DataTree.java |  9 ++++---
 .../zookeeper/server/FinalRequestProcessor.java    |  3 ++-
 .../org/apache/zookeeper/server/NIOServerCnxn.java |  3 ++-
 .../apache/zookeeper/server/NettyServerCnxn.java   |  3 ++-
 .../zookeeper/server/PrepRequestProcessor.java     |  3 ++-
 .../java/org/apache/zookeeper/server/Request.java  |  3 ++-
 .../org/apache/zookeeper/server/ZKDatabase.java    |  3 ++-
 .../server/auth/DigestAuthenticationProvider.java  |  3 ++-
 .../auth/EnsembleAuthenticationProvider.java       |  3 ++-
 .../server/auth/KeyAuthenticationProvider.java     | 21 ++++------------
 .../server/quorum/FastLeaderElection.java          |  7 +++---
 .../apache/zookeeper/server/quorum/Follower.java   |  5 ++--
 .../org/apache/zookeeper/server/quorum/Leader.java |  3 ++-
 .../apache/zookeeper/server/quorum/Learner.java    |  9 ++++---
 .../apache/zookeeper/server/quorum/Observer.java   |  3 ++-
 .../zookeeper/server/quorum/ObserverMaster.java    |  3 ++-
 .../zookeeper/server/quorum/QuorumCnxManager.java  |  3 ++-
 .../server/quorum/QuorumZooKeeperServer.java       |  2 +-
 .../common/AtomicFileWritingIdiomTest.java         |  5 ++--
 32 files changed, 101 insertions(+), 82 deletions(-)

diff --git 
a/zookeeper-recipes/zookeeper-recipes-queue/src/test/java/org/apache/zookeeper/recipes/queue/DistributedQueueTest.java
 
b/zookeeper-recipes/zookeeper-recipes-queue/src/test/java/org/apache/zookeeper/recipes/queue/DistributedQueueTest.java
index 0493d87..f5ec02f 100644
--- 
a/zookeeper-recipes/zookeeper-recipes-queue/src/test/java/org/apache/zookeeper/recipes/queue/DistributedQueueTest.java
+++ 
b/zookeeper-recipes/zookeeper-recipes-queue/src/test/java/org/apache/zookeeper/recipes/queue/DistributedQueueTest.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.recipes.queue;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.fail;
@@ -50,10 +51,10 @@ public class DistributedQueueTest extends ClientBase {
             queueHandles[i] = new DistributedQueue(clients[i], dir, null);
         }
 
-        queueHandles[0].offer(testString.getBytes());
+        queueHandles[0].offer(testString.getBytes(UTF_8));
 
         byte[] dequeuedBytes = queueHandles[0].remove();
-        assertEquals(new String(dequeuedBytes), testString);
+        assertEquals(new String(dequeuedBytes, UTF_8), testString);
     }
 
     @Test
@@ -68,10 +69,10 @@ public class DistributedQueueTest extends ClientBase {
             queueHandles[i] = new DistributedQueue(clients[i], dir, null);
         }
 
-        queueHandles[0].offer(testString.getBytes());
+        queueHandles[0].offer(testString.getBytes(UTF_8));
 
         byte[] dequeuedBytes = queueHandles[1].remove();
-        assertEquals(new String(dequeuedBytes), testString);
+        assertEquals(new String(dequeuedBytes, UTF_8), testString);
     }
 
     @Test
@@ -86,10 +87,10 @@ public class DistributedQueueTest extends ClientBase {
             queueHandles[i] = new DistributedQueue(clients[i], dir, null);
         }
 
-        queueHandles[0].offer(testString.getBytes());
+        queueHandles[0].offer(testString.getBytes(UTF_8));
 
         byte[] dequeuedBytes = queueHandles[0].take();
-        assertEquals(new String(dequeuedBytes), testString);
+        assertEquals(new String(dequeuedBytes, UTF_8), testString);
     }
 
     @Test
@@ -124,7 +125,7 @@ public class DistributedQueueTest extends ClientBase {
 
         for (int i = 0; i < n; i++) {
             String offerString = testString + i;
-            queueHandles[0].offer(offerString.getBytes());
+            queueHandles[0].offer(offerString.getBytes(UTF_8));
         }
 
         byte[] data = null;
@@ -133,7 +134,7 @@ public class DistributedQueueTest extends ClientBase {
         }
 
         assertNotNull(data);
-        assertEquals(new String(data), testString + (m - 1));
+        assertEquals(new String(data, UTF_8), testString + (m - 1));
     }
 
     @Test
@@ -157,13 +158,13 @@ public class DistributedQueueTest extends ClientBase {
 
         for (int i = 0; i < n; i++) {
             String offerString = testString + i;
-            queueHandles[0].offer(offerString.getBytes());
+            queueHandles[0].offer(offerString.getBytes(UTF_8));
         }
 
         for (int i = 0; i < m; i++) {
             queueHandles[1].remove();
         }
-        assertEquals(new String(queueHandles[1].element()), testString + m);
+        assertEquals(new String(queueHandles[1].element(), UTF_8), testString 
+ m);
     }
 
     @Test
@@ -211,7 +212,7 @@ public class DistributedQueueTest extends ClientBase {
         Thread.sleep(1000);
         Thread offerThread = new Thread(() -> {
             try {
-                queueHandles[0].offer(testString.getBytes());
+                queueHandles[0].offer(testString.getBytes(UTF_8));
             } catch (KeeperException | InterruptedException ignore) {
                 // no op
             }
@@ -222,7 +223,7 @@ public class DistributedQueueTest extends ClientBase {
         takeThread.join();
 
         assertNotNull(takeResult[0]);
-        assertEquals(new String(takeResult[0]), testString);
+        assertEquals(new String(takeResult[0], UTF_8), testString);
     }
 
     @Test
@@ -252,7 +253,7 @@ public class DistributedQueueTest extends ClientBase {
             Thread.sleep(1000);
             Thread offerThread = new Thread(() -> {
                 try {
-                    queueHandles[0].offer(threadTestString.getBytes());
+                    queueHandles[0].offer(threadTestString.getBytes(UTF_8));
                 } catch (KeeperException | InterruptedException ignore) {
                     // no op
                 }
@@ -263,7 +264,7 @@ public class DistributedQueueTest extends ClientBase {
             takeThread.join();
 
             assertNotNull(takeResult[0]);
-            assertEquals(new String(takeResult[0]), threadTestString);
+            assertEquals(new String(takeResult[0], UTF_8), threadTestString);
         }
     }
 
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/ServerAdminClient.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/ServerAdminClient.java
index ab7b08a..a08810f 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/ServerAdminClient.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ServerAdminClient.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -52,7 +53,7 @@ public class ServerAdminClient {
             byte[] resBytes = new byte[4];
 
             int rc = is.read(resBytes);
-            String retv = new String(resBytes);
+            String retv = new String(resBytes, UTF_8);
             System.out.println("rc=" + rc + " retv=" + retv);
         } catch (IOException e) {
             LOG.warn("Unexpected exception", e);
@@ -86,7 +87,7 @@ public class ServerAdminClient {
             byte[] resBytes = new byte[1024];
 
             int rc = is.read(resBytes);
-            String retv = new String(resBytes);
+            String retv = new String(resBytes, UTF_8);
             System.out.println("rc=" + rc + " retv=" + retv);
         } catch (IOException e) {
             LOG.warn("Unexpected exception", e);
@@ -120,7 +121,7 @@ public class ServerAdminClient {
             byte[] resBytes = new byte[1024];
 
             int rc = is.read(resBytes);
-            String retv = new String(resBytes);
+            String retv = new String(resBytes, UTF_8);
             System.out.println("rc=" + rc + " retv=" + retv);
         } catch (IOException e) {
             LOG.warn("Unexpected exception", e);
@@ -153,7 +154,7 @@ public class ServerAdminClient {
             byte[] resBytes = new byte[4];
 
             int rc = is.read(resBytes);
-            String retv = new String(resBytes);
+            String retv = new String(resBytes, UTF_8);
             System.out.println("rc=" + rc + " retv=" + retv);
         } catch (IOException e) {
             LOG.warn("Unexpected exception", e);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/AddAuthCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/AddAuthCommand.java
index b59a90d..4c4aff0 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/AddAuthCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/AddAuthCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
@@ -57,7 +58,7 @@ public class AddAuthCommand extends CliCommand {
     public boolean exec() throws CliException {
         byte[] b = null;
         if (args.length >= 3) {
-            b = args[2].getBytes();
+            b = args[2].getBytes(UTF_8);
         }
 
         zk.addAuthInfo(args[1], b);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CreateCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CreateCommand.java
index 181a04e..395ffa5 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CreateCommand.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CreateCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.util.List;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
@@ -112,7 +113,7 @@ public class CreateCommand extends CliCommand {
         String path = args[1];
         byte[] data = null;
         if (args.length > 2) {
-            data = args[2].getBytes();
+            data = args[2].getBytes(UTF_8);
         }
         List<ACL> acl = ZooDefs.Ids.OPEN_ACL_UNSAFE;
         if (args.length > 3) {
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/DelQuotaCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/DelQuotaCommand.java
index 6d9f870..70c0be3 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/DelQuotaCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/DelQuotaCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.util.List;
 import org.apache.commons.cli.CommandLine;
@@ -119,13 +120,13 @@ public class DelQuotaCommand extends CliCommand {
             System.err.println("quota does not exist for " + path);
             return true;
         }
-        StatsTrack strack = new StatsTrack(new String(data));
+        StatsTrack strack = new StatsTrack(new String(data, UTF_8));
         if (bytes && !numNodes) {
             strack.setBytes(-1L);
-            zk.setData(quotaPath, strack.toString().getBytes(), -1);
+            zk.setData(quotaPath, strack.toString().getBytes(UTF_8), -1);
         } else if (!bytes && numNodes) {
             strack.setCount(-1);
-            zk.setData(quotaPath, strack.toString().getBytes(), -1);
+            zk.setData(quotaPath, strack.toString().getBytes(UTF_8), -1);
         } else if (bytes && numNodes) {
             // delete till you can find a node with more than
             // one child
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetCommand.java
index 96bf0fd..4cdb48d 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetCommand.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
@@ -92,7 +93,7 @@ public class GetCommand extends CliCommand {
             throw new CliException(ex);
         }
         data = (data == null) ? "null".getBytes() : data;
-        out.println(new String(data));
+        out.println(new String(data, UTF_8));
         if (cl.hasOption("s")) {
             new StatPrinter(out).print(stat);
         }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetConfigCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetConfigCommand.java
index ef583aa..5da9c4f 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetConfigCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/GetConfigCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
@@ -72,11 +73,11 @@ public class GetConfigCommand extends CliCommand {
         } catch (KeeperException | InterruptedException ex) {
             throw new CliWrapperException(ex);
         }
-        data = (data == null) ? "null".getBytes() : data;
+        data = (data == null) ? "null".getBytes(UTF_8) : data;
         if (cl.hasOption("c")) {
-            out.println(ConfigUtils.getClientConfigStr(new String(data)));
+            out.println(ConfigUtils.getClientConfigStr(new String(data, 
UTF_8)));
         } else {
-            out.println(new String(data));
+            out.println(new String(data, UTF_8));
         }
 
         if (cl.hasOption("s")) {
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ListQuotaCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ListQuotaCommand.java
index 748afd2..4ae1d22 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ListQuotaCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ListQuotaCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
@@ -64,11 +65,11 @@ public class ListQuotaCommand extends CliCommand {
             err.println("absolute path is " + absolutePath);
             Stat stat = new Stat();
             byte[] data = zk.getData(absolutePath, false, stat);
-            StatsTrack st = new StatsTrack(new String(data));
-            out.println("Output quota for " + path + " " + st.toString());
+            StatsTrack st = new StatsTrack(new String(data, UTF_8));
+            out.println("Output quota for " + path + " " + st);
 
             data = zk.getData(Quotas.quotaZookeeper + path + "/" + 
Quotas.statNode, false, stat);
-            out.println("Output stat for " + path + " " + new StatsTrack(new 
String(data)).toString());
+            out.println("Output stat for " + path + " " + new StatsTrack(new 
String(data, UTF_8)));
         } catch (IllegalArgumentException ex) {
             throw new MalformedPathException(ex.getMessage());
         } catch (KeeperException.NoNodeException ne) {
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ReconfigCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ReconfigCommand.java
index f0d9aa6..8afc14b 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ReconfigCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/ReconfigCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.FileInputStream;
 import java.util.Properties;
 import org.apache.commons.cli.CommandLine;
@@ -151,7 +152,7 @@ public class ReconfigCommand extends CliCommand {
             }
 
             byte[] curConfig = ((ZooKeeperAdmin) zk).reconfigure(joining, 
leaving, members, version, stat);
-            out.println("Committed new configuration:\n" + new 
String(curConfig));
+            out.println("Committed new configuration:\n" + new 
String(curConfig, UTF_8));
 
             if (cl.hasOption("s")) {
                 new StatPrinter(out).print(stat);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetCommand.java
index 190ca04..035d82a 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetCommand.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.DefaultParser;
 import org.apache.commons.cli.Options;
@@ -62,7 +63,7 @@ public class SetCommand extends CliCommand {
     @Override
     public boolean exec() throws CliException {
         String path = args[1];
-        byte[] data = args[2].getBytes();
+        byte[] data = args[2].getBytes(UTF_8);
         int version;
         if (cl.hasOption("v")) {
             version = Integer.parseInt(cl.getOptionValue("v"));
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetQuotaCommand.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetQuotaCommand.java
index 68c48fa..f9c17f5 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetQuotaCommand.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/cli/SetQuotaCommand.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.cli;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.cli.CommandLine;
@@ -169,21 +170,21 @@ public class SetQuotaCommand extends CliCommand {
         strack.setBytes(bytes);
         strack.setCount(numNodes);
         try {
-            zk.create(quotaPath, strack.toString().getBytes(), 
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
+            zk.create(quotaPath, strack.toString().getBytes(UTF_8), 
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
             StatsTrack stats = new StatsTrack(null);
             stats.setBytes(0L);
             stats.setCount(0);
-            zk.create(statPath, stats.toString().getBytes(), 
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
+            zk.create(statPath, stats.toString().getBytes(UTF_8), 
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
         } catch (KeeperException.NodeExistsException ne) {
             byte[] data = zk.getData(quotaPath, false, new Stat());
-            StatsTrack strackC = new StatsTrack(new String(data));
+            StatsTrack strackC = new StatsTrack(new String(data, UTF_8));
             if (bytes != -1L) {
                 strackC.setBytes(bytes);
             }
             if (numNodes != -1) {
                 strackC.setCount(numNodes);
             }
-            zk.setData(quotaPath, strackC.toString().getBytes(), -1);
+            zk.setData(quotaPath, strackC.toString().getBytes(UTF_8), -1);
         }
         return true;
     }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/client/FourLetterWordMain.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/client/FourLetterWordMain.java
index 9fa042a..42a4e28 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/client/FourLetterWordMain.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/client/FourLetterWordMain.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.client;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -113,7 +114,7 @@ public class FourLetterWordMain {
         BufferedReader reader = null;
         try {
             OutputStream outstream = sock.getOutputStream();
-            outstream.write(cmd.getBytes());
+            outstream.write(cmd.getBytes(UTF_8));
             outstream.flush();
 
             // this replicates NC - close the output stream before reading
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java
index 63f750d..9ecb8c6 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.HashSet;
@@ -128,7 +129,7 @@ public class ContainerManager {
         for (String containerPath : getCandidates()) {
             long startMs = Time.currentElapsedTime();
 
-            ByteBuffer path = ByteBuffer.wrap(containerPath.getBytes());
+            ByteBuffer path = ByteBuffer.wrap(containerPath.getBytes(UTF_8));
             Request request = new Request(null, 0, 0, 
ZooDefs.OpCode.deleteContainer, path, null);
             try {
                 LOG.info("Attempting to delete candidate container: {}", 
containerPath);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java
index d3529cf..afb549f 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/DataTree.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -391,10 +392,10 @@ public class DataTree {
             return;
         }
         synchronized (node) {
-            updatedStat = new StatsTrack(new String(node.data));
+            updatedStat = new StatsTrack(new String(node.data, UTF_8));
             updatedStat.setCount(updatedStat.getCount() + countDiff);
             updatedStat.setBytes(updatedStat.getBytes() + bytesDiff);
-            node.data = updatedStat.toString().getBytes();
+            node.data = updatedStat.toString().getBytes(UTF_8);
         }
         // now check if the counts match the quota
         String quotaNode = Quotas.quotaPath(lastPrefix);
@@ -406,7 +407,7 @@ public class DataTree {
             return;
         }
         synchronized (node) {
-            thisStats = new StatsTrack(new String(node.data));
+            thisStats = new StatsTrack(new String(node.data, UTF_8));
         }
         if (thisStats.getCount() > -1 && (thisStats.getCount() < 
updatedStat.getCount())) {
             LOG.warn(
@@ -1260,7 +1261,7 @@ public class DataTree {
         }
         synchronized (node) {
             nodes.preChange(statPath, node);
-            node.data = strack.toString().getBytes();
+            node.data = strack.toString().getBytes(UTF_8);
             nodes.postChange(statPath, node);
         }
     }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
index 889e7ed..6db245e 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/FinalRequestProcessor.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -329,7 +330,7 @@ public class FinalRequestProcessor implements 
RequestProcessor {
             case OpCode.reconfig: {
                 lastOp = "RECO";
                 rsp = new GetDataResponse(
-                    ((QuorumZooKeeperServer) 
zks).self.getQuorumVerifier().toString().getBytes(),
+                    ((QuorumZooKeeperServer) 
zks).self.getQuorumVerifier().toString().getBytes(UTF_8),
                     rc.stat);
                 err = Code.get(rc.err);
                 break;
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/NIOServerCnxn.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/NIOServerCnxn.java
index fd29aef..2e65da8 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/NIOServerCnxn.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/NIOServerCnxn.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -442,7 +443,7 @@ public class NIOServerCnxn extends ServerCnxn {
          */
         private void checkFlush(boolean force) {
             if ((force && sb.length() > 0) || sb.length() > 2048) {
-                sendBufferSync(ByteBuffer.wrap(sb.toString().getBytes()));
+                sendBufferSync(ByteBuffer.wrap(sb.toString().getBytes(UTF_8)));
                 // clear our internal buffer
                 sb.setLength(0);
             }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/NettyServerCnxn.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/NettyServerCnxn.java
index e3acdcd..110807a 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/NettyServerCnxn.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/NettyServerCnxn.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import io.netty.buffer.CompositeByteBuf;
@@ -233,7 +234,7 @@ public class NettyServerCnxn extends ServerCnxn {
          */
         private void checkFlush(boolean force) {
             if ((force && sb.length() > 0) || sb.length() > 2048) {
-                sendBuffer(ByteBuffer.wrap(sb.toString().getBytes()));
+                sendBuffer(ByteBuffer.wrap(sb.toString().getBytes(UTF_8)));
                 // clear our internal buffer
                 sb.setLength(0);
             }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/PrepRequestProcessor.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/PrepRequestProcessor.java
index 9a5c125..6eb7b96 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/PrepRequestProcessor.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/PrepRequestProcessor.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
@@ -331,7 +332,7 @@ public class PrepRequestProcessor extends 
ZooKeeperCriticalThread implements Req
             break;
         }
         case OpCode.deleteContainer: {
-            String path = new String(request.request.array());
+            String path = new String(request.request.array(), UTF_8);
             String parentPath = getParentPathAndValidate(path);
             ChangeRecord nodeRecord = getRecordForPath(path);
             if (nodeRecord.childCount > 0) {
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/Request.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/Request.java
index c2c4da5..0a8bde6 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/Request.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/Request.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.nio.ByteBuffer;
 import java.util.List;
 import org.apache.jute.Record;
@@ -408,7 +409,7 @@ public class Request {
                 if (pathLen >= 0 && pathLen < 4096 && rbuf.remaining() >= 
pathLen) {
                     byte[] b = new byte[pathLen];
                     rbuf.get(b);
-                    path = new String(b);
+                    path = new String(b, UTF_8);
                 }
             } catch (Exception e) {
                 // ignore - can't find the path, will output "n/a" instead
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZKDatabase.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZKDatabase.java
index f758f5d..9d40c5a 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZKDatabase.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZKDatabase.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -677,7 +678,7 @@ public class ZKDatabase {
             }
             this.dataTree.setData(
                 ZooDefs.CONFIG_NODE,
-                qv.toString().getBytes(),
+                qv.toString().getBytes(UTF_8),
                 -1,
                 qv.getVersion(),
                 Time.currentWallTime());
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/DigestAuthenticationProvider.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/DigestAuthenticationProvider.java
index 2330000..573cba3 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/DigestAuthenticationProvider.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/DigestAuthenticationProvider.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.auth;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import org.apache.zookeeper.KeeperException;
@@ -88,7 +89,7 @@ public class DigestAuthenticationProvider implements 
AuthenticationProvider {
 
     public static String generateDigest(String idPassword) throws 
NoSuchAlgorithmException {
         String[] parts = idPassword.split(":", 2);
-        byte[] digest = 
MessageDigest.getInstance("SHA1").digest(idPassword.getBytes());
+        byte[] digest = 
MessageDigest.getInstance("SHA1").digest(idPassword.getBytes(UTF_8));
         return parts[0] + ":" + base64Encode(digest);
     }
 
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/EnsembleAuthenticationProvider.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/EnsembleAuthenticationProvider.java
index 5fb4de2..d5649c8 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/EnsembleAuthenticationProvider.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/EnsembleAuthenticationProvider.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.auth;
 
+import java.nio.charset.StandardCharsets;
 import java.util.HashSet;
 import java.util.Set;
 import org.apache.zookeeper.KeeperException;
@@ -76,7 +77,7 @@ public class EnsembleAuthenticationProvider implements 
AuthenticationProvider {
             return KeeperException.Code.OK;
         }
 
-        String receivedEnsembleName = new String(authData);
+        String receivedEnsembleName = new String(authData, 
StandardCharsets.UTF_8);
 
         if (ensembleNames == null) {
             ServerMetrics.getMetrics().ENSEMBLE_AUTH_SKIP.add(1);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/KeyAuthenticationProvider.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/KeyAuthenticationProvider.java
index 03c15a1..92bb380 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/KeyAuthenticationProvider.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/KeyAuthenticationProvider.java
@@ -18,7 +18,7 @@
 
 package org.apache.zookeeper.server.auth;
 
-import java.nio.charset.StandardCharsets;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.KeeperException.NoNodeException;
 import org.apache.zookeeper.data.Id;
@@ -75,8 +75,8 @@ public class KeyAuthenticationProvider extends 
ServerAuthenticationProvider {
     private boolean validate(byte[] key, byte[] auth) {
         // perform arbitrary function (auth is a multiple of key)
         try {
-            String keyStr = new String(key, StandardCharsets.UTF_8);
-            String authStr = new String(auth, StandardCharsets.UTF_8);
+            String keyStr = new String(key, UTF_8);
+            String authStr = new String(auth, UTF_8);
             int keyVal = Integer.parseInt(keyStr);
             int authVal = Integer.parseInt(authStr);
             if (keyVal != 0 && ((authVal % keyVal) != 0)) {
@@ -92,22 +92,11 @@ public class KeyAuthenticationProvider extends 
ServerAuthenticationProvider {
     @Override
     public KeeperException.Code handleAuthentication(ServerObjs serverObjs, 
byte[] authData) {
         byte[] key = getKey(serverObjs.getZks());
-        String authStr = "";
+        String authStr = new String(authData, UTF_8);
         String keyStr = "";
-        try {
-            authStr = new String(authData, StandardCharsets.UTF_8);
-        } catch (Exception e) {
-            LOG.error("UTF-8", e);
-        }
         if (key != null) {
             if (!validate(key, authData)) {
-                try {
-                    keyStr = new String(key, StandardCharsets.UTF_8);
-                } catch (Exception e) {
-                    LOG.error("UTF-8", e);
-                    // empty key
-                    keyStr = authStr;
-                }
+                keyStr = new String(key, UTF_8);
                 LOG.debug("KeyAuthenticationProvider handleAuthentication ({}, 
{}) -> FAIL.\n", keyStr, authStr);
                 return KeeperException.Code.AUTHFAILED;
             }
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FastLeaderElection.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FastLeaderElection.java
index 5f49220..f141e85 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FastLeaderElection.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FastLeaderElection.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.nio.BufferUnderflowException;
 import java.nio.ByteBuffer;
@@ -301,7 +302,7 @@ public class FastLeaderElection implements Election {
 
                                 synchronized (self) {
                                     try {
-                                        rqv = self.configFromString(new 
String(b));
+                                        rqv = self.configFromString(new 
String(b, UTF_8));
                                         QuorumVerifier curQV = 
self.getQuorumVerifier();
                                         if (rqv.getVersion() > 
curQV.getVersion()) {
                                             LOG.info("{} Received version: {} 
my version: {}",
@@ -349,7 +350,7 @@ public class FastLeaderElection implements Election {
                                 self.getPeerState(),
                                 response.sid,
                                 current.getPeerEpoch(),
-                                qv.toString().getBytes());
+                                qv.toString().getBytes(UTF_8));
 
                             sendqueue.offer(notmsg);
                         } else {
@@ -697,7 +698,7 @@ public class FastLeaderElection implements Election {
                 QuorumPeer.ServerState.LOOKING,
                 sid,
                 proposedEpoch,
-                qv.toString().getBytes());
+                qv.toString().getBytes(UTF_8));
 
             LOG.debug(
                 "Sending Notification: {} (n.leader), 0x{} (n.zxid), 0x{} 
(n.round), {} (recipient),"
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
index eb6742f..9420fc3 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.Collections;
@@ -176,7 +177,7 @@ public class Follower extends Learner {
 
             if (hdr.getType() == OpCode.reconfig) {
                 SetDataTxn setDataTxn = (SetDataTxn) txn;
-                QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData()));
+                QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData(), UTF_8));
                 self.setLastSeenQuorumVerifier(qv, true);
             }
 
@@ -213,7 +214,7 @@ public class Follower extends Learner {
             // get the new configuration from the request
             Request request = fzk.pendingTxns.element();
             SetDataTxn setDataTxn = (SetDataTxn) request.getTxn();
-            QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData()));
+            QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData(), UTF_8));
 
             // get new designated leader from (current) leader's message
             ByteBuffer buffer = ByteBuffer.wrap(qp.getData());
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java
index 0ddc4be..777aad0 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -1693,7 +1694,7 @@ public class Leader extends LearnerMaster {
 
     @Override
     public byte[] getQuorumVerifierBytes() {
-        return self.getLastSeenQuorumVerifier().toString().getBytes();
+        return self.getLastSeenQuorumVerifier().toString().getBytes(UTF_8);
     }
 
     @Override
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
index 8b02ac5..360f7b7 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
@@ -634,7 +635,7 @@ public class Learner {
 
                     if (pif.hdr.getType() == OpCode.reconfig) {
                         SetDataTxn setDataTxn = (SetDataTxn) pif.rec;
-                        QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData()));
+                        QuorumVerifier qv = self.configFromString(new 
String(setDataTxn.getData(), UTF_8));
                         self.setLastSeenQuorumVerifier(qv, true);
                     }
 
@@ -644,7 +645,7 @@ public class Learner {
                 case Leader.COMMITANDACTIVATE:
                     pif = packetsNotCommitted.peekFirst();
                     if (pif.hdr.getZxid() == qp.getZxid() && qp.getType() == 
Leader.COMMITANDACTIVATE) {
-                        QuorumVerifier qv = self.configFromString(new 
String(((SetDataTxn) pif.rec).getData()));
+                        QuorumVerifier qv = self.configFromString(new 
String(((SetDataTxn) pif.rec).getData(), UTF_8));
                         boolean majorChange = self.processReconfig(
                             qv,
                             ByteBuffer.wrap(qp.getData()).getLong(), 
qp.getZxid(),
@@ -680,7 +681,7 @@ public class Learner {
                         packet.hdr = logEntry.getHeader();
                         packet.rec = logEntry.getTxn();
                         packet.digest = logEntry.getDigest();
-                        QuorumVerifier qv = self.configFromString(new 
String(((SetDataTxn) packet.rec).getData()));
+                        QuorumVerifier qv = self.configFromString(new 
String(((SetDataTxn) packet.rec).getData(), UTF_8));
                         boolean majorChange = self.processReconfig(qv, 
suggestedLeaderId, qp.getZxid(), true);
                         if (majorChange) {
                             throw new Exception("changes proposed in 
reconfig");
@@ -728,7 +729,7 @@ public class Learner {
                     LOG.info("Learner received NEWLEADER message");
                     if (qp.getData() != null && qp.getData().length > 1) {
                         try {
-                            QuorumVerifier qv = self.configFromString(new 
String(qp.getData()));
+                            QuorumVerifier qv = self.configFromString(new 
String(qp.getData(), UTF_8));
                             self.setLastSeenQuorumVerifier(qv, true);
                             newLeaderQV = qv;
                         } catch (Exception e) {
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
index 47c58b9..fbf1d55 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.jute.Record;
@@ -216,7 +217,7 @@ public class Observer extends Learner {
             hdr = logEntry.getHeader();
             txn = logEntry.getTxn();
             digest = logEntry.getDigest();
-            QuorumVerifier qv = self.configFromString(new String(((SetDataTxn) 
txn).getData()));
+            QuorumVerifier qv = self.configFromString(new String(((SetDataTxn) 
txn).getData(), UTF_8));
 
             request = new Request(hdr.getClientId(), hdr.getCxid(), 
hdr.getType(), hdr, txn, 0);
             request.setTxnDigest(digest);
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMaster.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMaster.java
index 54a22c2..98c0d0c 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMaster.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMaster.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.DataInputStream;
@@ -343,7 +344,7 @@ public class ObserverMaster extends LearnerMaster 
implements Runnable {
 
     @Override
     public byte[] getQuorumVerifierBytes() {
-        return self.getLastSeenQuorumVerifier().toString().getBytes();
+        return self.getLastSeenQuorumVerifier().toString().getBytes(UTF_8);
     }
 
     @Override
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
index 7efa0de..98283fb 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumCnxManager.java
@@ -18,6 +18,7 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.zookeeper.common.NetUtils.formatInetAddr;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -255,7 +256,7 @@ public class QuorumCnxManager {
 
             // in PROTOCOL_VERSION_V1 we expect to get a single address here 
represented as a 'host:port' string
             // in PROTOCOL_VERSION_V2 we expect to get multiple addresses 
like: 'host1:port1|host2:port2|...'
-            String[] addressStrings = new String(b).split("\\|");
+            String[] addressStrings = new String(b, UTF_8).split("\\|");
             List<InetSocketAddress> addresses = new 
ArrayList<>(addressStrings.length);
             for (String addr : addressStrings) {
 
diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumZooKeeperServer.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumZooKeeperServer.java
index 350aa13..f27ce82 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumZooKeeperServer.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumZooKeeperServer.java
@@ -186,7 +186,7 @@ public abstract class QuorumZooKeeperServer extends 
ZooKeeperServer {
         pwriter.print("peerType=");
         pwriter.println(self.getLearnerType().ordinal());
         pwriter.println("membership: ");
-        pwriter.print(new 
String(self.getQuorumVerifier().toString().getBytes()));
+        pwriter.print(self.getQuorumVerifier().toString());
     }
 
     @Override
diff --git 
a/zookeeper-server/src/test/java/org/apache/zookeeper/common/AtomicFileWritingIdiomTest.java
 
b/zookeeper-server/src/test/java/org/apache/zookeeper/common/AtomicFileWritingIdiomTest.java
index 923fc08..d3e833b 100644
--- 
a/zookeeper-server/src/test/java/org/apache/zookeeper/common/AtomicFileWritingIdiomTest.java
+++ 
b/zookeeper-server/src/test/java/org/apache/zookeeper/common/AtomicFileWritingIdiomTest.java
@@ -27,6 +27,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Writer;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import org.apache.zookeeper.ZKTestCase;
 import 
org.apache.zookeeper.common.AtomicFileWritingIdiom.OutputStreamStatement;
@@ -335,7 +336,7 @@ public class AtomicFileWritingIdiomTest extends ZKTestCase {
         assertFalse(target.exists(), "file should not exist");
     }
 
-    private String getContent(File file, String encoding) throws IOException {
+    private String getContent(File file, Charset encoding) throws IOException {
         StringBuilder result = new StringBuilder();
         FileInputStream fis = new FileInputStream(file);
         byte[] b = new byte[20];
@@ -348,7 +349,7 @@ public class AtomicFileWritingIdiomTest extends ZKTestCase {
     }
 
     private String getContent(File file) throws IOException {
-        return getContent(file, "ASCII");
+        return getContent(file, StandardCharsets.US_ASCII);
     }
 
     private void createFile(File file, String content) throws IOException {

Reply via email to