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

ctubbsii pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.1 by this push:
     new ac2886c34e Remove direct use of System.out in shell (#4154)
ac2886c34e is described below

commit ac2886c34ee5b28b704bce2877d3952cb265a40b
Author: Christopher Tubbs <ctubb...@apache.org>
AuthorDate: Tue Jan 23 16:56:18 2024 -0500

    Remove direct use of System.out in shell (#4154)
    
    * Show shell config load info as a log message, so it can be suppressed
      from output more easily (depending on logging config)
    * Throw command line parse exception when an invalid shell option is
      used in FateCommand, instead of merely printing to System.out and
      returning
    * Use shellState.getWriter() for command-output messages instead of
      hard-coded System.out (use System.out for related unit tests)
---
 .../org/apache/accumulo/shell/ShellOptionsJC.java  |  2 +-
 .../accumulo/shell/commands/FateCommand.java       | 23 +++++++++++-----------
 .../accumulo/shell/commands/FateCommandTest.java   | 14 +++++++------
 3 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java 
b/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
index cb006fd438..0b4822caa1 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/ShellOptionsJC.java
@@ -201,7 +201,7 @@ public class ShellOptionsJC {
         File file = new File(path);
         if (file.isFile() && file.canRead()) {
           clientConfigFile = file.getAbsolutePath();
-          System.out.println("Loading configuration from " + clientConfigFile);
+          Shell.log.info("Loading configuration from {}", clientConfigFile);
           break;
         }
       }
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/FateCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/FateCommand.java
index d0e82b8b88..9ac7342d97 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/FateCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/FateCommand.java
@@ -22,6 +22,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.accumulo.core.fate.FateTxId.parseTidFromUserInput;
 
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Base64;
@@ -159,25 +160,25 @@ public class FateCommand extends Command {
     if (cl.hasOption(cancel.getOpt())) {
       String[] txids = cl.getOptionValues(cancel.getOpt());
       validateArgs(txids);
-      System.out.println(
+      throw new ParseException(
           "Option not available. Use 'accumulo admin fate -c " + String.join(" 
", txids) + "'");
     } else if (cl.hasOption(fail.getOpt())) {
       String[] txids = cl.getOptionValues(fail.getOpt());
       validateArgs(txids);
-      failedCommand = failTx(admin, zs, zk, managerLockPath, txids);
+      failedCommand = failTx(shellState.getWriter(), admin, zs, zk, 
managerLockPath, txids);
     } else if (cl.hasOption(delete.getOpt())) {
       String[] txids = cl.getOptionValues(delete.getOpt());
       validateArgs(txids);
-      failedCommand = deleteTx(admin, zs, zk, managerLockPath, txids);
+      failedCommand = deleteTx(shellState.getWriter(), admin, zs, zk, 
managerLockPath, txids);
     } else if (cl.hasOption(list.getOpt())) {
       printTx(shellState, admin, zs, zk, tableLocksPath, 
cl.getOptionValues(list.getOpt()), cl);
     } else if (cl.hasOption(print.getOpt())) {
       printTx(shellState, admin, zs, zk, tableLocksPath, 
cl.getOptionValues(print.getOpt()), cl);
     } else if (cl.hasOption(summary.getOpt())) {
-      System.out.println("Option not available. Use 'accumulo admin fate 
--summary'");
+      throw new ParseException("Option not available. Use 'accumulo admin fate 
--summary'");
     } else if (cl.hasOption(dump.getOpt())) {
       String output = dumpTx(zs, cl.getOptionValues(dump.getOpt()));
-      System.out.println(output);
+      shellState.getWriter().println(output);
     } else {
       throw new ParseException("Invalid command option");
     }
@@ -234,14 +235,14 @@ public class FateCommand extends Command {
         !cl.hasOption(disablePaginationOpt.getOpt()));
   }
 
-  protected boolean deleteTx(AdminUtil<FateCommand> admin, 
ZooStore<FateCommand> zs,
-      ZooReaderWriter zk, ServiceLockPath zLockManagerPath, String[] args)
+  protected boolean deleteTx(PrintWriter out, AdminUtil<FateCommand> admin,
+      ZooStore<FateCommand> zs, ZooReaderWriter zk, ServiceLockPath 
zLockManagerPath, String[] args)
       throws InterruptedException, KeeperException {
     for (int i = 1; i < args.length; i++) {
       if (admin.prepDelete(zs, zk, zLockManagerPath, args[i])) {
         admin.deleteLocks(zk, zLockManagerPath, args[i]);
       } else {
-        System.out.printf("Could not delete transaction: %s%n", args[i]);
+        out.printf("Could not delete transaction: %s%n", args[i]);
         return false;
       }
     }
@@ -254,12 +255,12 @@ public class FateCommand extends Command {
     }
   }
 
-  public boolean failTx(AdminUtil<FateCommand> admin, ZooStore<FateCommand> 
zs, ZooReaderWriter zk,
-      ServiceLockPath managerLockPath, String[] args) {
+  public boolean failTx(PrintWriter out, AdminUtil<FateCommand> admin, 
ZooStore<FateCommand> zs,
+      ZooReaderWriter zk, ServiceLockPath managerLockPath, String[] args) {
     boolean success = true;
     for (int i = 1; i < args.length; i++) {
       if (!admin.prepFail(zs, zk, managerLockPath, args[i])) {
-        System.out.printf("Could not fail transaction: %s%n", args[i]);
+        out.printf("Could not fail transaction: %s%n", args[i]);
         return !success;
       }
     }
diff --git 
a/shell/src/test/java/org/apache/accumulo/shell/commands/FateCommandTest.java 
b/shell/src/test/java/org/apache/accumulo/shell/commands/FateCommandTest.java
index 379dd5b5b1..856c7cb7e9 100644
--- 
a/shell/src/test/java/org/apache/accumulo/shell/commands/FateCommandTest.java
+++ 
b/shell/src/test/java/org/apache/accumulo/shell/commands/FateCommandTest.java
@@ -33,6 +33,7 @@ import java.io.FileDescriptor;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.PrintStream;
+import java.io.PrintWriter;
 import java.nio.file.Files;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -96,15 +97,15 @@ public class FateCommandTest {
     }
 
     @Override
-    protected boolean deleteTx(AdminUtil<FateCommand> admin, 
ZooStore<FateCommand> zs,
-        ZooReaderWriter zk, ServiceLockPath zLockManagerPath, String[] args)
-        throws InterruptedException, KeeperException {
+    protected boolean deleteTx(PrintWriter out, AdminUtil<FateCommand> admin,
+        ZooStore<FateCommand> zs, ZooReaderWriter zk, ServiceLockPath 
zLockManagerPath,
+        String[] args) throws InterruptedException, KeeperException {
       deleteCalled = true;
       return true;
     }
 
     @Override
-    public boolean failTx(AdminUtil<FateCommand> admin, ZooStore<FateCommand> 
zs,
+    public boolean failTx(PrintWriter out, AdminUtil<FateCommand> admin, 
ZooStore<FateCommand> zs,
         ZooReaderWriter zk, ServiceLockPath managerLockPath, String[] args) {
       failCalled = true;
       return true;
@@ -154,9 +155,10 @@ public class FateCommandTest {
 
     FateCommand cmd = new FateCommand();
     // require number for Tx
-    assertFalse(cmd.failTx(helper, zs, zk, managerLockPath, new String[] 
{"fail", "tx1"}));
+    var out = new PrintWriter(System.out);
+    assertFalse(cmd.failTx(out, helper, zs, zk, managerLockPath, new String[] 
{"fail", "tx1"}));
     // fail the long configured above
-    assertTrue(cmd.failTx(helper, zs, zk, managerLockPath, new String[] 
{"fail", "12345"}));
+    assertTrue(cmd.failTx(out, helper, zs, zk, managerLockPath, new String[] 
{"fail", "12345"}));
 
     verify(zs);
   }

Reply via email to