Droonga 1.1.0 has been released!

2015-04-29

Very sorry for this delay, now we’ve released Droonga 1.1.0 with a long-cherished feature!

What’s Droonga?

Droonga is a distributed full text search engine, compatible to Groonga. A Droonga cluster works like an HTTP server compatible to Groonga with the replication feature.

Are you interested in Droonga: how it works and how useful? Let’s try the tutorial for an introduction, and see the overview to understand Droonga’s design strategy more and more.

True hot-add of replica nodes is now available!

The most important topic on this release Droonga 1.1.0 is true hot-add of replica nodes. It was one of long-planned features of Droonga, but we’ve got it. Now you can add new replica nodes to your Droonga cluster without any downtime, even if you don’t stop crawling/adding new data!

To do it, you have to have two or more replicas in the cluster, except the new adding replica node. For more information, see tutorial for adding replica nodes.

Detailed list of improvements

  • Droonga-engine 1.1.0
    • General:
      • Graceful stopping/restarting works correctly with continual inpouring messages.
      • A new parameter single_operation is introduced to single step definitions. If you set it to true, messages for the handler will be delivered to just single volume (one of replicas and slices). It is useful for commands which has to be executed only once in a cluster, like system.status.
      • A new parameter use_all_replicas is introduced to single step definitions. If you set it to true, messages for the handler will be delivered to all replica volumes always. It is useful for commands which has to be executed all replicas, like system.statistics.object.count.per-volume.
      • add command now accepts requests with automatically-convertible mismatched type keys. For example, a string key "1" is available for a table with the key type UInt32.
      • dump command: the value of a column referring any record of another table are correctly exported as its key string, instead of object value (it’s invalid value for a message of the add command). As the result, now tables with reference columns are correctly copied between multiple clusters.
      • dump command: records in a table which has only one column _key are exported correctly.
      • dump command: forwarded messages are now have their own date field.
      • Collectors::RecursiveSum is introduced.
      • system.status command: now the reporter node and its internal name is reported as a part of response body.
      • system.statistics.object.count command is now available. It is used by command line utilities internally.
      • system.statistics.object.count.per-volume command is now available. It is useful to confirm equivalence of replicas.
      • system.absorb-data command is now available. It is used by command line utilities internally.
    • Message format:
      • targetRole field is introduced to the envelope. Now you can specify the role of the engine node which can process the messsage. If mismatched role node receives the message, it will be bounced to suitable node automatically if possible.
      • timeout field is introduced to the envelope. Now you can specify time to expire the request, in seconds.
    • Command line utilities:
      • droonga-engine-join and droonga-engine-absorb-data commands work more surely.
      • A new option --verbose is introduced to monitor internal Serf operations, for droonga-engine-join and droonga-engine-absorb-data.
      • A new command line utility droonga-engine-set-role is available (mainly for debugging).
    • Compatibility with Groonga:
      • Better compatibility to Groonga’s delete command:
        • Works correctly for tables with integer key types. The report by funa1g inspired this improvement. Thanks!
        • Accepts requests with automatically-convertible mismatched type keys. For example, a numeric key 1 is available for a table with the key type ShortText.
  • Droonga-http-server 1.1.2
    • Bump required version of express-droonga.
  • Express-droonga 1.0.9
    • Updated for the latest Droonga Engine 1.1.0.
    • Supports uber-cache 2.0.0.
    • New endpoints are introduced to inspect connections to Droonga Engine nodes.
      • /engines returns the list of currently conencted Droonga Engine nodes.
      • /connections returns detailed status of internal connections to Droonga Engine nodes.
    • Always reconnects to Droonga Engine nodes when there is any change around the Droonga cluster.
    • Query parameters for /droonga/* endpoints are used as the message body.
  • Drndump 1.0.1
    • Becomes modulable. You can use internal libraries for other products.
  • Drntest 1.2.0
    • Improvements
      • Supported new directives to activate/diactivate completion and validation of messages.
        • #@enable_completion and #@disable_completion controls completion of request messages. Required fields of request messages are automatically completed by default.
        • #@enable_validation and #@disable_validation controls validation of request messages. Messages are validated by default.
      • #@subscribe-until directive, for subscription type commands like dump. You can unsubscribe the next request following to the directive automatically with given timeout, like: #@subscribe-until 10s
      • A NO RESPONSE result is now returned immediately, for a stalled engine process.
      • Invalid format responses for Groonga commands are now ignored.
  • Droonga-client-ruby 0.2.1
    • Required fields of input messages are automatically completed by default.
    • Input messages are automatically validated by default.
    • Timeout option for subscription is available. You can unsubscribe subscription automatically with specified timeout, like: client.subscribe(request, :subscription_timeout => 10)
    • New utility commands are available as shorthand.
      • droonga-system-status: allows you to send a system.status request to the cluster easily.
      • droonga-add: allows you to send an add request to the cluster easily.
      • droonga-groonga: works like the groonga command.
    • droonga-send, droonga-request:
      • A new option --[no-]completion is introduced. You should specify --no-completion to send incomplete messages intentionally.
      • A new option --[no-]validation is introduced. You should specify --no-validation to send invalid messages intentionally.
      • A new option --default-dataset is introduced. It is used for sending messages if they have no dataset field.
      • A new option --default-target-role is introduced. It is used for sending messages if they have no targetRole field.
      • The “date” field is filled with the format same to droonga-engine’s internal one like “2015-04-08T06:16:20.571303Z”.

Conclusion

  • Droonga 1.1.0 has been released!
  • Now you can add new replica to the cluster without any downtime.
  • Droonga project will release a new version continuously!

Droonga project welcomes you to join us as a user and/or a developer! See community to contact us!