Skip to content
This repository has been archived by the owner on Sep 18, 2021. It is now read-only.

twitter-archive/gizzmo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gizzmo

Gizzmo is a command-line client for managing gizzard clusters.

Installation and setup

Installation is a simple gem install. You may find it useful to create a ~/.gizzmorc file, which is simply YAML key/values. The keys are the long-style command line option keys converted into Ruby-style variables. A common .gizzmorc will simply be:

host: localhost
port: 7920

Usage

Run ‘gizzmo help` for up-to-date usage.

Recipes

Block and unblock a shard

BLOCKER=`gizzmo wrap com.twitter.gizzard.shards.BlockedShard a_shard`

gizzmo unwrap $BLOCKER

Reweight a shard safely (the hard way)

NEW_WEIGHT=1
REPL=`gizzmo wrap com.twitter.service.flock.edges.ReplicatingShard a_shard`
PARENT=`gizzmo links $REPL | cut -f 1 | grep -v $REPL | head -1`
gizzmo addlink $PARENT a_shard $NEW_WEIGHT
gizzmo unwrap $REPL

Contributing

Contributions are welcome! Please send a pull request, or if you’re internal to Twitter, please make a branch! Commits to master, and/or patches without minimal test coverage will be rejected/reverted.

Running tests

The tests may be somewhat difficult to run outside of Twitter. They assume that:

  • You don’t mind blowing away the data in your dev environment.

  • Your MySQL username and password are in the environment variables DB_USERNAME and DB_PASSWORD

To execute the tests:

  1. Build the included test server (once):

    // create the database for the local nameserver
    echo "create database gizzard_test_integration_ns;" | mysql
    // retrieve test server dependencies
    cd test_server ; sbt update
  2. Start the test server (with service, injector, management ports of 7918, 7919, 7920 respectively):

    cd test_server ; sbt "run 7918 7919 7920"
    
  3. Run ./test/test.sh

Copyright © 2010 Twitter, Inc. See LICENSE for details.