Repository: zookeeper
Updated Branches:
  refs/heads/branch-3.5 edb93d496 -> b33ca3aa3


ZOOKEEPER-3039: TxnLogToolkit uses Scanner badly

Fixed by creating a single Scanner for all queries in the main() method.

Author: Andor Molnar <an...@cloudera.com>

Reviewers: ph...@apache.org

Closes #517 from anmolnar/ZOOKEEPER-3039 and squashes the following commits:

a35e2e280 [Andor Molnar] ZOOKEEPER-3039. Optimize imports
a196443cb [Andor Molnar] ZOOKEEPER-3039. Use the same Scanner for all queries

Change-Id: Icf66888d4e6ad902615ed8ffde58a5a8fdd41237
(cherry picked from commit 2fa315b7d0ed65828479fcdcc9e76ca8552fba4a)
Signed-off-by: Patrick Hunt <ph...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/b33ca3aa
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/b33ca3aa
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/b33ca3aa

Branch: refs/heads/branch-3.5
Commit: b33ca3aa30a7d43f2b3c09fbbbeaa5d3fc4a3aa6
Parents: edb93d4
Author: Andor Molnar <an...@cloudera.com>
Authored: Thu May 10 13:14:24 2018 -0700
Committer: Patrick Hunt <ph...@apache.org>
Committed: Thu May 10 13:15:10 2018 -0700

----------------------------------------------------------------------
 .../server/persistence/TxnLogToolkit.java       | 32 +++++++++-----------
 .../server/persistence/TxnLogToolkitTest.java   |  4 +--
 2 files changed, 16 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b33ca3aa/src/java/main/org/apache/zookeeper/server/persistence/TxnLogToolkit.java
----------------------------------------------------------------------
diff --git 
a/src/java/main/org/apache/zookeeper/server/persistence/TxnLogToolkit.java 
b/src/java/main/org/apache/zookeeper/server/persistence/TxnLogToolkit.java
index c6703ea..887d98b 100644
--- a/src/java/main/org/apache/zookeeper/server/persistence/TxnLogToolkit.java
+++ b/src/java/main/org/apache/zookeeper/server/persistence/TxnLogToolkit.java
@@ -39,8 +39,6 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
 import java.text.DateFormat;
 import java.util.Date;
 import java.util.Scanner;
@@ -98,7 +96,7 @@ public class TxnLogToolkit implements Closeable {
      */
     public static void main(String[] args) throws Exception {
         try (final TxnLogToolkit lt = parseCommandLine(args)) {
-            lt.dump(new InputStreamReader(System.in));
+            lt.dump(new Scanner(System.in));
             lt.printStat();
         } catch (TxnLogToolkitParseException e) {
             System.err.println(e.getMessage() + "\n");
@@ -131,7 +129,7 @@ public class TxnLogToolkit implements Closeable {
         }
     }
 
-    public void dump(Reader input) throws Exception {
+    public void dump(Scanner scanner) throws Exception {
         crcFixed = 0;
 
         FileHeader fhdr = new FileHeader();
@@ -172,7 +170,7 @@ public class TxnLogToolkit implements Closeable {
                 if (recoveryMode) {
                     if (!force) {
                         printTxn(bytes, "CRC ERROR");
-                        if (askForFix(input)) {
+                        if (askForFix(scanner)) {
                             crcValue = crc.getValue();
                             ++crcFixed;
                         }
@@ -201,19 +199,17 @@ public class TxnLogToolkit implements Closeable {
         }
     }
 
-    private boolean askForFix(Reader input) throws TxnLogToolkitException {
-        try (Scanner scanner = new Scanner(input)) {
-            while (true) {
-                System.out.print("Would you like to fix it (Yes/No/Abort) ? ");
-                char answer = Character.toUpperCase(scanner.next().charAt(0));
-                switch (answer) {
-                    case 'Y':
-                        return true;
-                    case 'N':
-                        return false;
-                    case 'A':
-                        throw new TxnLogToolkitException(0, "Recovery 
aborted.");
-                }
+    private boolean askForFix(Scanner scanner) throws TxnLogToolkitException {
+        while (true) {
+            System.out.print("Would you like to fix it (Yes/No/Abort) ? ");
+            char answer = Character.toUpperCase(scanner.next().charAt(0));
+            switch (answer) {
+                case 'Y':
+                    return true;
+                case 'N':
+                    return false;
+                case 'A':
+                    throw new TxnLogToolkitException(0, "Recovery aborted.");
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/b33ca3aa/src/java/test/org/apache/zookeeper/server/persistence/TxnLogToolkitTest.java
----------------------------------------------------------------------
diff --git 
a/src/java/test/org/apache/zookeeper/server/persistence/TxnLogToolkitTest.java 
b/src/java/test/org/apache/zookeeper/server/persistence/TxnLogToolkitTest.java
index dd34fa5..79a69c4 100644
--- 
a/src/java/test/org/apache/zookeeper/server/persistence/TxnLogToolkitTest.java
+++ 
b/src/java/test/org/apache/zookeeper/server/persistence/TxnLogToolkitTest.java
@@ -29,7 +29,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintStream;
-import java.io.StringReader;
+import java.util.Scanner;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -138,7 +138,7 @@ public class TxnLogToolkitTest {
         TxnLogToolkit lt = new TxnLogToolkit(true, false, logfile.toString(), 
false);
 
         // Act
-        lt.dump(new StringReader("y\n"));
+        lt.dump(new Scanner("y\n"));
 
         // Assert
         String output = outContent.toString();

Reply via email to