Quine 1.2.0
Release Quine 1.2.0
This release brings several API improvements, new Cypher query features, and persistence backend bugfixes and optimizations to better support supernodes and other extreme-scale datasets. Some of these changes affect the data format on disk, and accordingly data from prior versions (<= 1.1.2) can not be used with Quine 1.2.0 without migration. Furthermore, this release increases the minimum supported Java version to 11.
Features:
- Add
reify.time
, a cypher procedure to generate a uniform structured representation of timestamp data within the graph, to make time-related data analysis via Standing Queries easier and more consistent - Add a REST API endpoint to request a specific node save a snapshot and go to sleep
- Added support for Cypher subqueries via the
CALL {}
syntax - EXPLAINed query ASTs will now be logged at debug level, if enabled
- Improved serialization for nodes with an extremely large edge and/or property counts in the persistence backend
- Nodes with an extremely large edge and/or property count can now be correctly accessed via the Literal Operations REST APIs
- Iteration and sort order of Map-type values in Cypher queries are handled consistently
- Add a configuration option for writing updates to disk before applying effects in-memory:
quine.persistence.effect-order
- Add a startup check to verify that Cassandra's configuration matches the provided Quine configuration, warning if there is a mismatch
- Calling the debug API on a node in a historical query now only includes journal events up to the time of the historical query
Bugfixes:
- Application start up can no longer log an opaque warning like "Current state = CODING, previous state = FLUSHED"
- Setting snapshot-singleton=true, snapshot-schedule=on-node-update, and journal-enabled=false no longer causes the most recent event on a node to be dropped
- Map-type values in Cypher hash to a consistent value, independent of how they were constructed
- Accessing nodes just as they fall out of the cache can no longer cause the system to enter a failsafe mode
- Historical queries that restore journals with noncommutative effects after a snapshot from Cassandra apply updates in order
- Fix an issue with RocksDB where some Standing Query states weren’t restored
- Added a minimum header width to recipe status query output
- Fix an issue where standing queries were not properly restored on startup
Misc:
- Remove support for DistinctId queries that do not specify a
DISTINCT
keyword - Remove support for
toInt
in Cypher queries (usetoInteger
instead) - Remove support for
filter
andextract
in Cypher queries (use list comprehensions instead) - ID values returned via the exploration UI are now pretty-printed
- Use Cypher for query UI edge queries for better performance and fewer timeouts when querying supernodes
- Make recipes and example queries more consistent in styling
- Make use of
datetime()
in Apache log recipe to parse timestamps - When the system clock moves backwards, Quine handles the issue transparently. Change the log level for this occasion from
warn
toinfo
. - Rename
executionGuarantee
parameter on the CypherQuery Standing Query Output toshouldRetry
, and set the default to true - Increase resilience of persistence operations in deployments with unreliable persistors
- Improve performance of historical queries involving nodes with many edges
- Add persistor exceptions, including timeouts, to the list of exception types that are retried for ingest queries and when
shouldRetry = true
- Rename Cassandra store options insert-time and select-timeout to write-timeout and read-timeout, respectively
Dependency Updates:
- akka-http, akka-http-xml to 10.2.9
- protobuf-java to 3.20.0
- rocksdbjni to 7.0.3
- ujson, upickle to 1.6.0
- shapeless to 2.3.9
- memeid4s to 0.5.0
- scalajs to 1.10.0
- scalatest to 3.2.12
- scalacheck to 1.16.0
- sbt-scalafix to 0.10.0
- classgraph to 4.8.146