Skytable 0.7.5: System metrics, improved error infrastructure, new actions and several fixes

Skytable 0.7.5: System metrics, improved error infrastructure, new actions and several fixes

The Skytable Team is extremely happy to announce the release of Skytable 0.7.5. Skytable is a free and open-source NoSQL database that aims to provide flexible data modeling at scale. This release packs some new actions while also adding a huge number of very critical fixes. We strongly recommended you to update your instances to 0.7.5 to apply the fixes. But before you do, let's take a quick look at them.

System actions

Until now, there was no way to get information about a Skytable instance. This release changes that, with the sys action that enables you to get information from the system. sys has two kinds of subactions:

  • info: This is used to query static properties, i.e properties that do not change at runtime. Examples include version, protocol and protover
  • metric: This is used to query metrics or dynamic properties, i.e properties that can change during runtime. The currently available metrics include a health check endpoint and an on-disk storage usage check

Improved error detection and reporting

This release greatly improves error detection and reporting. Like you know, Skytable's data is stored in a data directory. Say the PARTMAP for the default keyspace gets corrupted due to a disk fault. Previously, you'd get a vague error like below:

[2022-03-27T06:18:41Z ERROR skyd] Error while initializing database: invalid data

With this update, this is what it will look like:

[2022-03-27T06:25:50Z ERROR skyd] Storage engine error: file `default/PARTMAP` is corrupted

Hence, you get actionable insights on what is broken and what isn't, making it easier for you to attempt a fix or for us to debug. Another important fix lies in the detection of a new instance. Previously we relied on a bad heuristic – checking if the data/ks/PRELOAD file was present or not. Now we check the structure of the data directory instead, making the check more reliable and not accidentally deleting or overwriting files.

Actions

Apart from the sys actions, the following actions were added or improved:

  • auth whoami: returns the name of the currently logged in user
  • lmod push: now enables multiple elements to be pushed in at once
  • inspect keyspace: instead of having to supply the keyspace name, without any arguments the action now checks the tables in the current keyspace
  • inspect table: when run without any arguments, this checks the properties of the current table

Fixes, and towards 0.8

This release is a significant bugfix release. It includes many critical fixes including: pipeline stages returning invalid responses, fixes in the protocol implementation when not enough data is buffered, improved metadata corruption detection, snapshot overwrite protection, fixes for crashes and much more. You can read the complete changelog here. We recommend you to immediately update your servers to use 0.7.5 as several critical fixes have been delivered. Download the the 0.7.5 release here.

Unless any severe bugs emerge, this will be the last release in the 0.7 release track. So yeah, let's launch our text editors – we'll start working on 0.8 while you can start using Skytable in your app!