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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.