/makrut

Resiliency framework on top of Guava.

Primary LanguageJavaISC LicenseISC

Makrut: Resilient Client Libraries

Build Status

This is an tool for providing a straightforward framework for building clients that are resilient to failures in other components in a distributed system.

This is an experiment in building a reliability framework using the tools provided by Google's Guava, Guice, and codahale's metrics library.

Work Remaining

makrut-core

  • Provide more robust metrics, including high level success or failure.
  • Allow BasicMakrutCommand to retry in the same thread, holding acquired resources until it finishes.
  • Provide a module which will make it easier for those not using Guice.
  • Improve documentation, in particular providing a sample project.
  • Deeper, more robust integration tests.
  • Set up publishing.
  • Allow for cross-cutting error detection and health checking.
  • Profile current patterns and generate some baseline performance metrics.
  • Provide a little easier tunability for advanced use cases.

makrut-db

  • Provide batch capability.
  • Make using transactions from the factory easier.
  • Currently very rough interface, could use a little work on the exact pattern for usage, ordering, etc. This is especially true for transactions.
  • Better integration with Guice for nontrivial use cases.
  • Better support for SQLState evaluation for retrying.
  • Utilities, especially around ResultSetHandler.