Author: mahadev Date: Tue Dec 23 13:29:28 2008 New Revision: 729131 URL: http://svn.apache.org/viewvc?rev=729131&view=rev Log: ZOOKEEPER-214. add new "stat reset" command to server admin port. (pat via mahadev)
Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/docs/zookeeperAdmin.html hadoop/zookeeper/trunk/docs/zookeeperAdmin.pdf hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerCnxn.java hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerStats.java Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Tue Dec 23 13:29:28 2008 @@ -91,6 +91,9 @@ ZOOKEEPER-256. support use of JMX to manage log4j configuration at runtime. (pat via mahadev) + ZOOKEEPER-214. add new "stat reset" command to server admin port. (pat via +mahadev) + Release 3.0.0 - 2008-10-21 Non-backward compatible changes: Modified: hadoop/zookeeper/trunk/docs/zookeeperAdmin.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperAdmin.html?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/docs/zookeeperAdmin.html (original) +++ hadoop/zookeeper/trunk/docs/zookeeperAdmin.html Tue Dec 23 13:29:28 2008 @@ -1123,6 +1123,14 @@ <dt> +<term>srst</term> +</dt> +<dd> +<p>Reset statistics returned by stat command.</p> +</dd> + + +<dt> <term>stat</term> </dt> <dd> @@ -1136,7 +1144,7 @@ <pre class="code">$ echo ruok | nc 127.0.0.1 5111 imok </pre> -<a name="N10388"></a><a name="sc_dataFileManagement"></a> +<a name="N1038F"></a><a name="sc_dataFileManagement"></a> <h3 class="h4">Data File Management</h3> <p>ZooKeeper stores its data in a data directory and its transaction log in a transaction log directory. By default these two directories are @@ -1144,7 +1152,7 @@ transaction log files in a separate directory than the data files. Throughput increases and latency decreases when transaction logs reside on a dedicated log devices.</p> -<a name="N10391"></a><a name="The+Data+Directory"></a> +<a name="N10398"></a><a name="The+Data+Directory"></a> <h4>The Data Directory</h4> <p>This directory has two files in it:</p> <ul> @@ -1190,14 +1198,14 @@ idempotent nature of its updates. By replaying the transaction log against fuzzy snapshots ZooKeeper gets the state of the system at the end of the log.</p> -<a name="N103CD"></a><a name="The+Log+Directory"></a> +<a name="N103D4"></a><a name="The+Log+Directory"></a> <h4>The Log Directory</h4> <p>The Log Directory contains the ZooKeeper transaction logs. Before any update takes place, ZooKeeper ensures that the transaction that represents the update is written to non-volatile storage. A new log file is started each time a snapshot is begun. The log file's suffix is the first zxid written to that log.</p> -<a name="N103D7"></a><a name="File+Management"></a> +<a name="N103DE"></a><a name="File+Management"></a> <h4>File Management</h4> <p>The format of snapshot and log files does not change between standalone ZooKeeper servers and different configurations of @@ -1214,7 +1222,7 @@ needs the latest complete fuzzy snapshot and the log files from the start of that snapshot. The PurgeTxnLog utility implements a simple retention policy that administrators can use.</p> -<a name="N103E8"></a><a name="sc_commonProblems"></a> +<a name="N103EF"></a><a name="sc_commonProblems"></a> <h3 class="h4">Things to Avoid</h3> <p>Here are some common problems you can avoid by configuring ZooKeeper correctly:</p> @@ -1268,7 +1276,7 @@ </dd> </dl> -<a name="N1040C"></a><a name="sc_bestPractices"></a> +<a name="N10413"></a><a name="sc_bestPractices"></a> <h3 class="h4">Best Practices</h3> <p>For best results, take note of the following list of good Zookeeper practices. <em>[tbd...]</em> Modified: hadoop/zookeeper/trunk/docs/zookeeperAdmin.pdf URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperAdmin.pdf?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== Binary files - no diff available. Modified: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml (original) +++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml Tue Dec 23 13:29:28 2008 @@ -810,6 +810,14 @@ </varlistentry> <varlistentry> + <term>srst</term> + + <listitem> + <para>Reset statistics returned by stat command.</para> + </listitem> + </varlistentry> + + <varlistentry> <term>stat</term> <listitem> Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java Tue Dec 23 13:29:28 2008 @@ -526,13 +526,20 @@ // We take advantage of the limited size of the length to look // for cmds. They are all 4-bytes which fits inside of an int if (len == ruokCmd) { + LOG.info("Processing ruok command from " + + sock.socket().getRemoteSocketAddress()); + sendBuffer(imok.duplicate()); sendBuffer(NIOServerCnxn.closeConn); k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == killCmd) { + LOG.info("Processing kill command from " + + sock.socket().getRemoteSocketAddress()); System.exit(0); } else if (len == getTraceMaskCmd) { + LOG.info("Processing getracemask command from " + + sock.socket().getRemoteSocketAddress()); long traceMask = ZooTrace.getTextTraceLevel(); ByteBuffer resp = ByteBuffer.allocate(8); resp.putLong(traceMask); @@ -542,6 +549,8 @@ k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == setTraceMaskCmd) { + LOG.info("Processing settracemask command from " + + sock.socket().getRemoteSocketAddress()); incomingBuffer = ByteBuffer.allocate(8); int rc = sock.read(incomingBuffer); @@ -560,6 +569,8 @@ k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == dumpCmd) { + LOG.info("Processing dump command from " + + sock.socket().getRemoteSocketAddress()); if (zk == null) { sendBuffer(ByteBuffer.wrap("ZooKeeper not active \n" .getBytes())); @@ -574,6 +585,8 @@ k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == reqsCmd) { + LOG.info("Processing reqs command from " + + sock.socket().getRemoteSocketAddress()); StringBuffer sb = new StringBuffer(); sb.append("Requests:\n"); synchronized (outstanding) { @@ -586,6 +599,8 @@ k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == statCmd) { + LOG.info("Processing stat command from " + + sock.socket().getRemoteSocketAddress()); StringBuffer sb = new StringBuffer(); if(zk!=null){ sb.append("Zookeeper version: ").append(Version.getFullVersion()) @@ -607,6 +622,8 @@ k.interestOps(SelectionKey.OP_WRITE); return; } else if (len == enviCmd) { + LOG.info("Processing envi command from " + + sock.socket().getRemoteSocketAddress()); StringBuffer sb = new StringBuffer(); List<Environment.Entry> env = Environment.list(); @@ -620,6 +637,15 @@ sendBuffer(ByteBuffer.wrap(sb.toString().getBytes())); k.interestOps(SelectionKey.OP_WRITE); return; + } else if (len == srstCmd) { + LOG.info("Processing srst command from " + + sock.socket().getRemoteSocketAddress()); + ServerStats stats = ServerStats.getInstance(); + stats.reset(); + + sendBuffer(ByteBuffer.wrap("Stats reset.\n".getBytes())); + k.interestOps(SelectionKey.OP_WRITE); + return; } } if (len < 0 || len > BinaryInputArchive.maxBuffer) { Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerCnxn.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerCnxn.java?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerCnxn.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerCnxn.java Tue Dec 23 13:29:28 2008 @@ -31,24 +31,31 @@ import org.apache.zookeeper.proto.WatcherEvent; public interface ServerCnxn extends Watcher { + + /** + * See <a href="{...@docroot}/../../../docs/zookeeperAdmin.html#sc_zkCommands"> + * Zk Admin</a>. this link is for all the commands. + */ final static int killCmd = ByteBuffer.wrap("kill".getBytes()).getInt(); - + final static int ruokCmd = ByteBuffer.wrap("ruok".getBytes()).getInt(); final static int dumpCmd = ByteBuffer.wrap("dump".getBytes()).getInt(); - + final static int statCmd = ByteBuffer.wrap("stat".getBytes()).getInt(); - + final static int reqsCmd = ByteBuffer.wrap("reqs".getBytes()).getInt(); final static int setTraceMaskCmd = ByteBuffer.wrap("stmk".getBytes()) .getInt(); - + final static int getTraceMaskCmd = ByteBuffer.wrap("gtmk".getBytes()) .getInt(); - + final static int enviCmd = ByteBuffer.wrap("envi".getBytes()).getInt(); - + + final static int srstCmd = ByteBuffer.wrap("srst".getBytes()).getInt(); + final static ByteBuffer imok = ByteBuffer.wrap("imok".getBytes()); public abstract int getSessionTimeout(); Modified: hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerStats.java URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerStats.java?rev=729131&r1=729130&r2=729131&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerStats.java (original) +++ hadoop/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/ServerStats.java Tue Dec 23 13:29:28 2008 @@ -136,5 +136,10 @@ synchronized public void resetRequestCounters(){ packetsReceived=packetsSent=0; } + + synchronized public void reset() { + resetLatency(); + resetRequestCounters(); + } }