Droonga 1.1.0 has been released!
2015-04-29Very 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 totrue
, 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, likesystem.status
. - A new parameter
use_all_replicas
is introduced to single step definitions. If you set it totrue
, messages for the handler will be delivered to all replica volumes always. It is useful for commands which has to be executed all replicas, likesystem.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 typeUInt32
.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 theadd
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 owndate
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
anddroonga-engine-absorb-data
commands work more surely.- A new option
--verbose
is introduced to monitor internal Serf operations, fordroonga-engine-join
anddroonga-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 typeShortText
.
- Better compatibility to Groonga’s
- General:
- Droonga-http-server 1.1.2
- Bump required version of
express-droonga
.
- Bump required version of
- 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 likedump
. 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.
- Supported new directives to activate/diactivate completion and validation of messages.
- Improvements
- 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 asystem.status
request to the cluster easily.droonga-add
: allows you to send anadd
request to the cluster easily.droonga-groonga
: works like thegroonga
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 nodataset
field. - A new option
--default-target-role
is introduced. It is used for sending messages if they have notargetRole
field. - The “date” field is filled with the format same to droonga-engine’s internal one like “2015-04-08T06:16:20.571303Z”.
- A new option
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!