You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Jason Hane (Commented) (JIRA)" <ji...@apache.org> on 2012/02/27 14:54:49 UTC

[jira] [Commented] (ZOOKEEPER-1218) zktreeutil tool enhancement

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-1218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13217193#comment-13217193 ] 

Jason Hane commented on ZOOKEEPER-1218:
---------------------------------------

Using the original zktreeutil and this patched version, I always get an error trying to import, update or diff the tree.  Export and dump are the only features that work.

[zktreeutil] unknown znode during traversal: 
Aborted

I added some debugging to the traverseBranch_ method of ZkTreeUtil.cc and it turns out during the if statement comparison of the childNodeSptr->getKey() and nodes[znode_idx], nodes[znode_idx] is empty.  In fact I don't think nodes is populated at all.

If there is anything I can give you to help replicate the problem please let me know.  This tool is vital to our needs but we are unable to use it.
                
> zktreeutil tool enhancement
> ---------------------------
>
>                 Key: ZOOKEEPER-1218
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1218
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: contrib
>    Affects Versions: 3.3.3
>         Environment: GNU/Linux i386/i686/x64_84
>            Reporter: Anirban Roy
>            Assignee: Anirban Roy
>              Labels: patch
>             Fix For: 3.5.0
>
>         Attachments: zktreeutil.patch
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> ==========================================
> zktreeutil - Zookeeper Tree Data Utility
> Author: Anirban Roy (r_anirban@yahoo.com)
> Organization: Yahoo Inc.
> ==========================================
> zktreeutil program is intended to manage and manipulate zk-tree data quickly,
> efficiently and with ease. The utility operates on free-form ZK-tree and hence
> can be used for any cluster managed by Zookeeper. Here are the basic
> functionalities -
> EXPORT: The whole/partial ZK-tree is exported into a XML file. This helps in
> capturing a current snapshot of the data for backup/analysis. For a subtree
> export, one need to specify the path to the ZK-subtree with proper option.
> Since Zookeeper store binary data against znode, the data dumped on xml file
> is based64 encoded with an attribute "encode=true". Optionally one may specify
> not to encode data with --noencode option if data stored on zookeeper is
> guaranteed to be text data.
> IMPORT: The ZK (sub)tree can be imported from XML into ZK cluster. This helps in
> priming the new ZK cluster with static configuration. The import can be
> non-intrusive by making only additions and modifications in the existing data.
> One may optionally delete existing (sub)tree before importing the new data
> with --force option. The znodes which carries an attribute "encode=true" will be
> decoded and written to zookeeper.
> DIFF: Creates a diff between live ZK data vs data saved in XML file. Diff can
> ignore some ZK-tree branches (possibly dynamic data) on reading the optional
> ignore flag from XML file. Taking diff on a ZK-subtree achieved by providing
> path to ZK-subtree with diff command.
> UPDATE: Make the incremental changes into the live ZK-tree from saved XML,
> essentially after running the diff.
> DUMP: Dumps the ZK (sub)tree on the standard output device reading either from
> live ZK server or XML file.
> The exported ZK data into XML file can be shortened by only keeping the static
> ZK nodes which are required to prime an application. The dynamic zk nodes
> (created on-the-fly) can be ignored by setting a 'ignore' attribute at the root
> node of the dynamic subtree (see tests/zk_sample.xml), possibly deleting all
> inner ZK nodes under that.  Once ignored, the whole subtree is ignored during
> DIFF, UPDATE and WRITE.
> Pre-requisites
> --------------
> 1. Linux system with 2.6.X kernel.
> 2. Zookeeper C client library (locally built at ../../c/.libs) >= 3.X.X
> 3. Development build libraries (rpm packages):
>   a. boost-devel >= 1.32.0
>   b. libxml2-devel >= 2.7.3
>   c. log4cxx0100-devel >= 0.9.0
>   d. openssl-devel >= 0.9.7a
> Build instructions
> ------------------
> 1. cd into this directory
> 2. autoreconf -if
> 3. ./configure
> 4. make
> 5. 'zktreeutil' binary created under src directory
> Testing  and usage of zktreeutil
> --------------------------------
> 1.  Run Zookeeper server locally on port 2181
> 2.  export LD_LIBRARY_PATH=../../c/.libs/:/usr/local/lib/
> 3.  ./src/zktreeutil --help                                                                                         # show help
> 4.  ./src/zktreeutil --zookeeper=localhost:2181 --import --xmlfile=tests/zk_sample.xml 2>/dev/null                  # import sample ZK tree
> 5.  ./src/zktreeutil --zookeeper=localhost:2181 --dump --path=/myapp/version-1.0 2>/dev/null                        # dump Zk subtree 
> 6.  ./src/zktreeutil --zookeeper=localhost:2181 --dump --depth=3 2>/dev/null                                        # dump Zk tree till certain depth
> 7.  ./src/zktreeutil --xmlfile=zk_sample.xml -D 2>/dev/null                                                         # dump the xml data
> 8.  Change zk_sample.xml with adding/deleting/chaging some nodes 
> 9.  ./src/zktreeutil -z localhost:2181 -F -x zk_sample.xml -p /myapp/version-1.0/configuration 2>/dev/null          # take a diff of changes
> 10.  ./src/zktreeutil -z localhost:2181 -E --noencode 2>/dev/null > zk_sample2.xml                                   # export the mofied ZK tree
> 11. ./src/zktreeutil -z localhost:2181 -U -x zk_sample.xml -p /myapp/version-1.0/distributions 2>/dev/null          # update with incr. changes
> 12. ./src/zktreeutil --zookeeper=localhost:2181 --import --force --xmlfile=zk_sample2.xml 2>/dev/null               # re-prime the ZK tree

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira