Code

sysdb-0.8.0
object b8cdba842519c2de8ffdf5e2464c9fe637ea6b15
authorSebastian Harl <sh@tokkee.org>
Thu, 25 Feb 2016 20:54:46 +0000 (21:54 +0100)
Release 0.8.0 of SysDB.

Version 0.8.0, Release Date: 2016-02-25
---------------------------------------

  This release focuses on a generic and much more powerful store (query)
  interface and modular store implementations via plugins. The in-memory store
  has been moved into a plugin on top of that. Various fixes and improvements,
  mostly related to iterators, have been applied to the parser and query
  language.

   * build system:
     - Fix VPATH (out of tree) builds.
     - Fixed a build issue (configure failure) when using RRDtool 1.5.
     - Enable silent build rules by default (if supported).
     - Fix build issues with GCC 5.
   * parser:
     - Add a new, standalone parser module based on a generic (public) AST
       (abstract syntax tree). This replaces the (internal) parser of the
       frontend module.
     - Improved error reporting for syntactic and semantic errors by
       propagating error messages in the parser and analyzer.
   * core / store:
     - Fully support array access and comparison (all element types).
     - Service/metric parent host names are now available via the "hostname"
       attribute (populated automatically).
     - Rebase the store query interface on top of the new parser: store
       implementations prepare actual queries from an AST, thus, allowing
       multiple implementations of store readers.
     - Querying the store (through the new interface) will emit data to an
       arbitrary writer implementation allowing for more flexible post-
       processing.
     - Fixed a memory leak in the TIMESERIES implementation.
     - data: Added support for boolean values; this is a backward incompatible
       change which breaks the network encoding.
     - Include nano-second fraction of datatime values (if any) in the string
       format (including JSON query results).
     - Add new callback type for store-readers (query plugins) based on the
       new generic query interface.
     - memstore: Refactor the in-memory store implementation into a separate
       data-type. It implements the writer and query/reader APIs.
     - The main, in-memory store is no longer enabled by default (see
       store::memory plugin). Instead, all updates go through the plugin API
       and are distributed to all registered writers.
     - Handle hostname canonicalization in the generic plugin module instead
       of requiring each writer plugin to do so.
     - Do not canonicalize hostnames when fetching time-series.
     - Determine an object's backends and update interval in the generic
       plugin module and pass it on to writer plugins which are expected to
       merge it with existing entries.
     - Let the JSON formatter implement the writer API to make it more
       flexible and uncouple it from the memstore module; let it support
       arbitrary top-level objects (besides hosts).
     - FETCH (in the core) now supports all object types and child objects as
       well as fetching the base object without children / siblings.
   * frontend:
     - Added the SERVER_VERSION command; this allows clients to check for
       supported servers.
     - Fixed a memory leak in failed FETCH commands.
     - Switch to the new, pluggable query interface: use registered plugins to
       write to or query the SysDB store.
     - Move protocol-specific (query) logic out of the core and into the
       frontend (based on the new query API).
     - A generic TIMESERIES implementation based on the query API replaces the
       in-core implementation.
   * query language:
     - Check types of comparison operands and arithmetic expression and treat
       mismatches as errors; previously those comparisons would fail silently.
     - Added the 'NOT IN' operator.
     - Support iterators (ANY/ALL) of arbitrary array expressions.
     - Change child-object iterator syntax to 'ANY/ALL <type>.name', that is,
       require the field name and add support for accessing arbitrary fields.
     - Added new field "value" for attribute values.
     - Added new field "timeseries" (boolean) for metrics indicating whether
       a time-series store is known to SysDB.
     - Support attribute and backend iterators in FILTER expressions.
     - Enforce that TIMESERIES end times are greater than start times.
     - Added unary 'IS TRUE' / 'IS FALSE' operators.
     - Iterator expressions may now reference a chain of sibling objects as
       long as only one such reference is an iterator. For example,
       `LOOKUP services MATCHING ANY host.backend =~ 'foo'`.
   * testing:
     - Use check "loop" tests; this will run all test-cases even if there are
       failures.
     - Create separate binaries for each test; this allows to run more in
       parallel.
     - Make it possible to run unit and integration tests separately; see
       README.

  Stores:
   * store::memory: Added a store-writer/store-reader plugin providing an
     in-memory store replacing the previous, always-enabled store. It is based
     on the 'memstore' module.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAABAgAGBQJWz2o+AAoJEMwFfnIvH/zHgTgP/Ahw/pf//xnkMShHJtkoPfLZ
W0j804FKKnCxtt1kZf7KpVqih6RBHUmJ3cGA8xFzczPPYbD+JacrgGxSdsCS7y0C
QOghttiMIpV/dMXoESPGE4VRsO8KeOzF3qUZdCvt8TyNXGNwtXLItiGTg4tcupCL
a97ysNdewWQ3QQSuKGSA7KUkpHDt7A0F1r1v3BMaFCxs0jx8EMNdR/B73AQ63fbY
dPBBjJMvUIJIIViSAYPZkYMNUyUpxXV8N6576cPXII2TaqkCELB01P59fe9vuB6A
bJAro6XuSh90dLCuKwo+occ1uBAS6mWBRFK5ZLIIkn4gMbcvFwEytuXotELH9eI3
k1iF4SbeYWLta7sAESE2cneBhCn+pDKOAaddzTBgt+gYYcK/wcyphNIoz4GEGqiu
ymbu9cwWc1mHsc7/o41iIvJLOoB4TBaqe0sUm1/wL0io1HJw9FbdWOFESQ+YKYM/
VEES/TVzf9g8egZuV3gOCxJekRIWOxk9A6M8rDmkwnmYtrihZK2ThyUaJ5I+fEw5
5EEOWcK667zNxHbjAnLPZpuSDcGgdIXHj3l2JZ/1L7v7ypMhjDZKSLHbcA7B/Nb0
0VydGMmgtbUb6byWt9GdxUrqiS5ptpxmNonSKJjBXVZg/W9RAZwDHa21t95+Dm9l
n1gxtB7VS2ZqWi+BNFn5
=au/7
-----END PGP SIGNATURE-----