0.2
Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
A Thrift client wrapper that encapsulates some common failover behavior.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
>= 0

Runtime

~> 0.11.0
 Project Readme

A Thrift client wrapper that encapsulates some common failover behavior.

Features¶ ↑

  • Transparent connection management

  • Configurable failover and retry backoff

  • Ruby 2.1 compatibility

  • ThriftClient::Simple class, for working without generated bindings.

The Github source repository is here. Patches and contributions are very welcome.

Usage¶ ↑

Instantiate a client:

client = ThriftClient.new(CassandraRb::Client, '127.0.0.1:9160', :retries => 2)

You can then make calls to the server via the client instance as if was your internal Thrift client. The connection will be opened lazily and methods will be proxied through.

client.get_string_list_property("keyspaces")

On failures, the client will try the remaining servers in the list before giving up. See ThriftClient for more.

Timeouts¶ ↑

Timeouts are enforced per-try, so if you have a timeout of n and do m retries, the total time it could take is n*m.

Connection Handling¶ ↑

The library will shuffle the host list then work its way down this list, only moving to the next host if it received an error or you’ve doing more than server_max_requests requests with that host (defaults to 0 which means there’s no limit).

Servers that throw an error get marked as dead and will only be retried every server_retry_period seconds (at that time all dead servers are retried, no matter long they’ve been marked as dead).

Installation¶ ↑

You need Ruby 2.1.7. Just run:

sudo gem install thrift_client

Additional Documentation¶ ↑

Additional documentation and api access can be found here

Contributing¶ ↑

To contribute changes:

  1. Fork the project

  2. Make your change, adding tests

  3. Send a pull request to twitter

Reporting problems¶ ↑

The Github issue tracker is here.

License¶ ↑

Copyright 2009-2012 Twitter, Inc. See included LICENSE file.

The public certificate for this gem is here.