Takehiro YOSHIHAMA edited this page Jul 4, 2016 · 44 revisions

This document is old, so please read README.md or USAGE.md.

Download | Documents | FAQ


Flare is a distributed, and persistent key-value storage compatible with memcached, with several additional features (as follows):

  • persistent storage (you can use flare as persistent memcached)
  • pluggable storage
  • Tokyo Cabinet
  • Kyoto Cabinet (experimental)
  • data replication (synchronous or asynchronous)
  • data partitioning (automatically partitioned according to the number of master servers (transparent for clients)
  • dynamic reconstruction, and partitioning (you can dynamically (I mean, without any service interruption) add slave servers and partition master servers)
  • node monitoring and failover (if any server is down, the server is automatically isolated from active servers and another slave server is promoted to master server)
  • request proxy (you can always get same result regardless of servers you connect to, so you can think of a flare cluster as one big key-value storage)
  • over 256 bytes keys, and over 1M bytes values are available

Flare is free software base on GNU GENERAL PUBLIC LICENSE Version 2.


[2016/03/01] 1.3.1 release

released 1.3.1


  • feature updates
    • Add "node_map_version" parameter to "stats"

[2015/03/25] 1.3.0 release

released 1.3.0


  • feature updates

    • Forward read queries also according to the cluster-replication-mode
  • bug fixes

    • Fix time_watcher performance

[2014/12/17] 1.2.1 release

released 1.2.1


  • feature updates

    • Add bwlimit to op_dump_key
  • bug fixes

    • Fix time_watcher options
    • Fix to build with clang
    • Fix op_set binary parser to enable behavior_cas flag

[2014/11/14] 1.2.0 release

released 1.2.0


  • feature updates

    • Added storage access time watching feature
    • Replication over cluster
  • bug fixes

    • Avoid to close the already closed socket.
    • Fix bwlimit when creating new partition
    • Fix initial value of epoll socket
    • Fix pthread_cond_wait() in zookeeper_lock::_assure_session_connected()
    • Fix resource leak of server socket
    • Fix some initialization
    • Fix the race condition in thread class
    • Fix zookeeper_lock::_assure_session_connected()
    • Fixed socket condition add_epoll_socket and add_kqueue_socket
    • Modified include guards to fit them to the C++ standard naming convention.
    • Skip proxy when destination node is down
  • others

    • Support TravisCI

[2014/09/01] 1.1.1 release

released 1.1.1


  • bug fixes
    • Avoid to close the already closed socket
    • Skip proxy request when destination node is down
    • Fix the resource leaks of socket in server
    • Fix some compile warnings
    • Fix some race conditions in thread.cc
    • Check dynamic_cast result
    • Fix pthread_cond_wait() in zookeeper_lock::_assure_session_connected()
    • Add initialization of cluster#node
    • Remove some deadcode
    • Add null check before the code with the potential null access
    • Exit when IO-buffer is unsafe
    • Fix memory leak of proxy in op_parser_text

[2014/05/14] 1.1.0 release

released 1.1.0


  • feature updates

    • Redundant index servers
    • Add coordinator classes to store and restore the state of the index server
      • Add coordinator class for handling the state of the index server
      • Move the code for storing and restoring flare.xml from cluster to file_coordinator
      • Add zookeeper_coordinator class to store flare.xml into a zookeeper cluster
      • Add --index-db option to flarei to specify a database for storing flare.xml
      • Add --index-servers option to flared to specify multiple index servers
      • Add connect_retry_limit parameter to connection_tcp to avoid retrying too much in open()
    • Improved statistics information
    • Automatically node down when storage error happens
  • bug fixes

    • Modified include guards to fit them to the C++ standard naming convention.
    • Remove unnecessary null check and avoid double free

[2013/12/20] release


  • feature updates

  • Allow combination of reconstruct-interval and reconstruct-bwlimit

  • bug fixes

  • Fix a crash when a log message contains a format string

  • Fixed invalid input of set command and added test cases

  • Safety dump operation

[2013/10/17] 1.0.18 release

released 1.0.18


  • feature updates

  • Skip memory tests with valgrind < 3.8

  • Do not build tests when packaging

  • Switched from simple/adler32 to jenkins/murmur

  • Unified packaging for debian and ubuntu

  • Made core dump file size limit configurable

  • bug fixes

  • Fix for deletion replication bug

  • Fixed CAS behavior when using defered deletion

  • Fixed compilation warning

  • Skip version checks on expired and removed items

  • Added version checks to storage tests

  • Ignore version on touch commands

  • Always store the last version number on deletion

  • Fixed build on Ubuntu

  • Monitor failover fix

  • Fix handler_monitor to avoid deadlock caused by simultaneous node down events

  • Fixes for Ubuntu Saucy Salamander (13.10)

  • Ignore new test-driver script

  • Fixed erroneous memory leak report

[2013/04/16] release


  • feature updates
  • flarei: sanity check the thread_type value in flare.xml
  • bug fixes
  • fixed a duplicate thread id issue

[2013/02/18] 1.0.17 release

released 1.0.17


  • Feature updates:
  • added support for Kyoto cabinet
  • binary protocol implementation and input tests
  • touch/gat implementation
  • migration from gethostbyname to getaddrinfo
  • integrated valgrind memory tests
  • added over 2000 unit tests
  • Bug fixes:
  • various fixes under BSD
  • append does not reset the stored flag anymore
  • fixes for input validation

[2013/01/21] release


  • Bug Fix
  • fixed a rare race condition which could lead a replication process to end prematurely.

[2012/10/16] 1.0.16 release

released 1.0.16


  • Feature Updates
  • add --noreply-window-limit (default=0) for high latency network
  • Bug Fixes
  • fix connection::readline() to check the last character of a read buffer
  • fix thread safety of utility functions
  • fix reconstruction-bwlimit option


  • Feature Updates
  • added --key-hash-algorithm option (default=simple) -- (only applicable for new or single-partition clusters)
  • Bug Fixes
  • fix wrong post proxy destination during dynamic patition creation
  • fix unintentional thread triggering


  • Feature Updates
  • added 'stats threads queue' op
  • added 'shutdown' op (for graceful shutdown)
  • added --max-total-thread-queue option (default=0 (unlimited))
  • added --proxy-prior-netmask option
  • added --storage-dfunit (support for dynamic defragmentation)
  • Bug Fixes
  • fix double unlock (which causes dead lock)
  • fix dump error handling (tc iteration returns error in some rare cases)


  • Feature Updates
  • added 'show variables' op
  • added reconstruction-bwlimit option (node server only, in KB)
  • Bug Fixes
  • set default values to keep compatibility w/ older index servers
  • fix bug of replication inconsistency
  • fix possible memory leaks
  • fix possible node map corruption, happens when non-existent nodes are passed to remove_node()
  • fix segfault (cased by multi get w/ same keys (like "get key1 key1 key1"), w/ concurrent expiration)

[2011/03/01] 1.0.12 release

released 1.0.12

  • Bug Fixes
  • fix replication bug (esp.important when reconstructing nodes)
  • fix error handling in "keys" op

[2010/11/20] 1.0.11 release

released 1.0.11

  • Feature Updates
  • added --partition-size option (default=1024)
  • added --partition-modular-virtual option (default=4096)
  • Bug Fixes
  • fix possible dead locks (could happen when activating new master node under heavy load)
  • suppress bogus master reconstruction, happens when slave is promoted to master

Old News