You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by si...@apache.org on 2013/10/02 06:54:35 UTC

svn commit: r1528306 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java

Author: sijie
Date: Wed Oct  2 04:54:35 2013
New Revision: 1528306

URL: http://svn.apache.org/r1528306
Log:
BOOKKEEPER-645: Bookkeeper shell command to get a list of readonly bookies (rakesh via sijie)

Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1528306&r1=1528305&r2=1528306&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Wed Oct  2 04:54:35 2013
@@ -158,6 +158,8 @@ Trunk (unreleased changes)
 
       BOOKKEEPER-666: Naming threads of ExecutorService (rakesh via sijie)
 
+      BOOKKEEPER-645: Bookkeeper shell command to get a list of readonly bookies (rakesh via sijie)
+
     NEW FEATURE:
 
       BOOKKEEPER-562: Ability to tell if a ledger is closed or not (fpj)

Modified: zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java?rev=1528306&r1=1528305&r2=1528306&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieShell.java Wed Oct  2 04:54:35 2013
@@ -23,6 +23,8 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Formatter;
 import java.util.HashMap;
 import java.util.Map;
@@ -34,7 +36,6 @@ import org.apache.bookkeeper.zookeeper.Z
 
 import org.apache.bookkeeper.bookie.EntryLogger.EntryLogScanner;
 import org.apache.bookkeeper.bookie.Journal.JournalScanner;
-import org.apache.bookkeeper.bookie.Journal.LastLogMark;
 import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.client.BookKeeperAdmin;
 import org.apache.bookkeeper.conf.ClientConfiguration;
@@ -483,17 +484,38 @@ public class BookieShell implements Tool
 
         ListBookiesCmd() {
             super(CMD_LISTBOOKIES);
-            opts.addOption("h", "hostnames", false, "Also print hostnames");
+            opts.addOption("rw", "readwrite", false, "Print readwrite bookies");
+            opts.addOption("ro", "readonly", false, "Print readonly bookies");
+            opts.addOption("h", "hostnames", false,
+                    "Also print hostname of the bookie");
         }
 
         @Override
         public int runCmd(CommandLine cmdLine) throws Exception {
+            boolean readwrite = cmdLine.hasOption("rw");
+            boolean readonly = cmdLine.hasOption("ro");
+
+            if ((!readwrite && !readonly) || (readwrite && readonly)) {
+                LOG.error("One and only one of -readwrite and -readonly must be specified");
+                printUsage();
+                return 1;
+            }
             ClientConfiguration clientconf = new ClientConfiguration(bkConf)
                 .setZkServers(bkConf.getZkServers());
             BookKeeperAdmin bka = new BookKeeperAdmin(clientconf);
 
             int count = 0;
-            for (InetSocketAddress b : bka.getAvailableBookies()) {
+            Collection<InetSocketAddress> bookies = new ArrayList<InetSocketAddress>();
+            if (cmdLine.hasOption("rw")) {
+                Collection<InetSocketAddress> availableBookies = bka
+                        .getAvailableBookies();
+                bookies.addAll(availableBookies);
+            } else if (cmdLine.hasOption("ro")) {
+                Collection<InetSocketAddress> roBookies = bka
+                        .getReadOnlyBookies();
+                bookies.addAll(roBookies);
+            }
+            for (InetSocketAddress b : bookies) {
                 System.out.print(StringUtils.addrToString(b));
                 if (cmdLine.hasOption("h")) {
                     System.out.print("\t" + b.getHostName());
@@ -502,7 +524,7 @@ public class BookieShell implements Tool
                 count++;
             }
             if (count == 0) {
-                System.err.println("No bookies available");
+                System.err.println("No bookie exists!");
                 return 1;
             }
             return 0;
@@ -510,12 +532,12 @@ public class BookieShell implements Tool
 
         @Override
         String getDescription() {
-            return "List all available bookies.";
+            return "List the bookies, which are running as either readwrite or readonly mode.";
         }
 
         @Override
         String getUsage() {
-            return "listbookies [-hostnames]";
+            return "listbookies [-readwrite|-readonly] [-hostnames]";
         }
 
         @Override
@@ -659,7 +681,7 @@ public class BookieShell implements Tool
         System.err.println("       readlog      [-msg] <entry_log_id|entry_log_file_name>");
         System.err.println("       readjournal  [-msg] <journal_id|journal_file_name>");
         System.err.println("       autorecovery [-enable|-disable]");
-        System.err.println("       listbookies  [-hostnames]");
+        System.err.println("       listbookies  [-readwrite|-readonly] [-hostnames]");
         System.err.println("       lastmark");
         System.err.println("       help");
     }