Releases: thatdot/quine
Release Quine 1.8.2
Bugfixes
- Fix MultipleValuesStandingQuery State for LocalPropertyState, LabelsState, and AllPropertiesState to ensure subscribers are updated on node wake
- Improve Cassandra snapshot read to avoid reading extra parts from a singleton snapshot
Release Quine 1.8.1
Updates with special concerns:
MultipleValues standing queries will not migrate from Quine 1.7.3.
If you have any MultipleValues standing queries and you are using RocksDB, your database files will not carry forward.
If you are using MultipleValues standing queries and Cassandra, perform the following steps to remove all MultipleValues data while leaving your graph intact:
- Before shutting down Quine 1.7.3, use the API to delete all MultipleValues standing queries
- After shutting down Quine 1.7.3, but before launching Quine 1.8.0, use cqlsh to
TRUNCATE standing_query_states
- After launching Quine 1.8.0, use the API to recreate all MultipleValues standing queries
Open Source Enhancements
- Disable log redaction by default
Enhancements
- Stop treating queries as PII
- Add CSP and X-Frame-Options headers for clickjacking hardening
- Node/edge query endpoints now silently permit (and skip over)
null
return values to improve ergonomics of OPTIONAL MATCH queries - Simplify configuration for TLS termination (reported by @min-mwei)
Bugfixes
- Refactored MultipleValues Standing Query registration behavior to improve result consistency and reduce initial match latency
- Fix an NullPointerException in the recipe interpreter
- LocalProperty standing queries no longer drop results after a node is re-awakened from persistence
- Changed the ID generation algorithm for MultipleValues standing query internals to prevent standing querise from overwriting
- Log a warning if MultipleValues standing queries overwrite each other
- Some user errors that were returned as HTTP 500-class responses are now correctly 400-class responses
Updates
- Replaced Guava caching library in favor of Caffeine
- sslcontext-kickstart, ... to 8.3.7
- pekko-http to 1.1.0, pekko-http-circe to 3.0.0
- endpoints4s to 1.12.1 (+ related)
- clickhouse-http-client to 0.6.5
- logback-classic to 1.5.8
- commons-io to 2.17.0
- pekko to 1.1.1
- scalacheck to 1.18.1
- protobuf-java to 3.25.5
- sbt-scalajs, scalajs-compiler, ... to 1.17.0
- embedded-cassandra to 5.0.0
- scala-library to 2.13.15
- commons-csv to 1.12.0
- org.eclipse.jgit to 7.0.0.202409031743-r
- pekko-connectors-kafka to 1.1.0
Release Quine 1.7.3
Enhancements
- Add support for modern SHOW PROCEDURES syntax via rewrite rule
- Add support for sum and avg aggregators with
duration
-typed values - Improve the warning offered when trying to resolve an illegal QuineId and add suggestions for how to fix the query
- Normalize logging and error messages which timeout for ExactlyOnceAsks
- Add timers for ingest query runtime, ingest deserialization runtime and SQ result queue time
- Add timers for node sleeps and node wakes
- Add histogram for property sizes
- Standardize logging framework to slf4j/logback
Bugfixes
- Fix "Promise already completed" warning that could occur when sending [ask] messages
- Update unit subqueries to correctly return one row rather than the number of rows from the inner query
- Fix unit subquery scope for side-effect-only subqueries to no longer leak to the higher scope
- Filter ethereum transaction ingest to only use valid transactions
- Fix rare race condition in node messaging
- Account for node lifecycle in node size histograms
- Fix a typo in query API that suppressed user-facing log references
- Fix false-positive "Query cannot end with CALL combined with YIELD" errors
- Fix some scenarios where ingest status displays the wrong value
- Fix NullPointerException that could occur when logging some messages
- Improve resiliency of Standing Query wake-up protocol with slow persistors
Updates
- AWS SDK to 2.26.31
- cassandra to 4.18.1
- circe-yaml to 0.16.0
- circe to 3.9.8
- commons-compress to 1.27.1
- dropwizard metrics to 4.2.27
- flatbuffers-java to 24.3.25
- guava to 33.3.0-jre
- kafka-clients to 3.8.0
- logback-classic to 1.5.7
- rocksdbjni to 9.0.0
- schema-registry-serde to 1.1.20
- snappy-java to 1.1.10.6
Release Quine 1.7.2
Enhancements
- Added log sanitization. This feature suppresses exception logging and hides values that may have been sourced from ingested records or query definitions. This behavior is enabled by default, and may be customized with the
quine.log-config
configuration section. - Added
text.regexReplaceAll
Cypher function for regex-based string substitution - Added function
text.regexGroups
that will, given a regular expression and a string, return all matching capture groups from the string. - Added support for
<duration>.<unit>
and<duration>["<unit">]
syntax in Cypher queries - Added support for constructing duration Cypher values with approximate units, e.g., days
- Updated logo colors in exploration UI
- The REST API documentation UI now makes requests based on relative rather than absolute paths, allowing it to work in more deployment environments
- Added additional logging to alert on issues caused by poor network connection
- Clarified the language in some error messages
- Simplify error formatting in ingest and standing query output streams
- Added additional error handling for certain uses of invalid QuineIds and illegal regular expressions
- Reduced log noise at
DEBUG
log level - Persistor errors that occur during all-node scans will now be reported consistently with all other persistor errors
- Improved error handling for missing file errors in the recipe interpreter and file ingests
Bugfixes
- Fixed compilation of
WITH DISTINCT
Cypher query clauses to now properly interpret the returned distinct set in all cases (contributed by @harpocrates) - The example standing query in the API no longer uses the removed
exists(n.property)
syntax - The error message returned by
standing.wiretap
when a standing query is not found now refers to the name argument, rather than the procedure name - MultipleValues standing queries with emitCancellations = false will no longer emit cancellations
- Multiple Values Standing Queries no longer read node labels as a property
Updates
- skunk-circe, skunk-core to 0.6.4
- s3, sts to 2.25.70
- scala-java-time to 2.6.0
- pureconfig to 0.17.7
- tapir-json-circe, ... to 1.10.10
- pekko to 1.0.3
- pekko-http-circe to 2.6.0
- protobuf-java to 3.25.4
- circe to 0.14.9
- circe-yaml to 0.15.3
- circe-generic-extras to 0.14.4
- Dropwizard metrics to 4.2.26
- scaffeine to 5.3.0
- commons-codec to 1.17.1
- Removed scala-java8-compat
Release 1.7.0
Updates with special concerns:
MultipleValues standing queries will not migrate from Quine 1.6.4.
If you have any MultipleValues standing queries and you are using RocksDB, your database files will not carry forward.
If you are using MultipleValues standing queries and Cassandra, perform the following steps to remove all MultipleValues data while leaving your graph intact:
- Before shutting down Quine 1.6.4, use the API to delete all MultipleValues standing queries
- After shutting down Quine 1.6.4, but before launching Quine 1.7.0, use cqlsh to
TRUNCATE standing_query_states
- After launching Quine 1.7.0, use the API to recreate all MultipleValues standing queries
Ad-hoc queries now reflect SETs and REMOVEs made during the query
If your ad-hoc (i.e., ingest, Cypher standing query output, or /query/cypher/ POSTed) queries rely on the original "capture state on MATCH" behavior, add a variable with WITH capturing the state you need.
For example, MATCH (n) SET n.x = 2 RETURN n.x AS oldX
becomes MATCH (n) WITH n, n.x AS oldX SET n.x = 2 RETURN oldX
Enhancements:
- MultipleValues standing queries have been rewritten from the ground up for significant performance gains
- Failing to deserialize an ingested record now logs a warning + INFO message, and resumes the stream, rather than moving the stream to an error state
- Updated the behavior of the SET and REMOVE clause to reflect their expected changes on the in-memory copies of query-related values
- Protobuf message types can now be set by short name or full name
- Added
toProtobuf
Cypher serialization procedure - Protobuf procedures now yield
null
values on failing to serialize/deserialize - Enhanced telemetry with basic feature usage indicators to support prioritizing most-used features
- Simplified and tuned ingest registration logic
Bugfixes:
- It is now possible to wake nodes with persisted state referring to deleted MultipleValues standing queries
- Cassandra persistor now respects the
should-create-tables
configuration option when using only the default namespace - Cypher
log
procedure now accepts log levels in a case-insensitive manner - ANSI control codes are no longer logged except when running a recipe
- Cypher
node.debug
error no longer reports an error on nodes tracking MultipleValues standing queries
Updates:
- Remove aws-java-sdk-sts
- scalajs to 1.16.0
- kafka-clients to 3.6.2
- amazon-kinesis-client to 2.5.8
- marketplacemetering, s3, sts to 2.25.42
- scala-parser-combinators to 2.4.0
- sttp-circe to 3.9.7
- sbt-paradox to 0.10.7
- commons-io to 2.16.1
- commons-compress to 1.26.1
- commons-text to 1.12.0
- circe to 0.14.7
- logback-classic to 1.5.6
- tapir to 1.10.8
- jwt-circe to 10.0.1
- guava to 33.2.1-jre
- cats-core to 2.12.0
- commons-compress to 1.26.2
- shapeless to 2.3.12
- scala-library to 2.13.14
- scalacheck to 1.18.0
- sbt, sbt-dependency-tree to 1.10.0
- jedis to 5.1.3
Release 1.6.4
Quine 1.6.4
Enhancements:
- Add round() and radians() cypher functions
- Improve error handling in the exploration UI
- Add
parseProtobuf
cypher procedure. This procedure takes 3 arguments: bytes to decode, schema URL, and type name; and yields a single value namedvalue
.
Bugfixes:
- Unregistered routes will now return a "not found" page instead of an error about a missing query parameter
- The cypher interpreter will no longer report "undefined variable" when returning variables bound to pattern expressions (e.g.,
MATCH p=(a) RETURN p
) - SET n.prop = NULL now correctly removes the property
- Multiple SET clauses in sequence now correctly updates the node's properties instead of replacing them
Updates:
- cats-effect to 3.5.4
- amazon-kinesis-client to 2.5.7
- guava to 33.1.0-jre
- commons-io to 2.16.0
- webjars-locator to 0.52
- pekko-http-circe to 2.4.0
- logback-classic to 1.5.3
- jedis to 5.1.2
- scala-library to 2.13.13
- Cassandra java-driver to 4.18.0.
- commons-codec to 1.17.0
- tapir to 1.10.6
Release 1.6.2
Quine 1.6.2
Enhancements:
- Lowered node wake latency by parallelising journal rehydration
Bugfixes:
- Webserver bind port or address can now be set without setting both
Updates:
- Update antlr to 4.13.1
- Update sbt-scalajs, scalajs-compiler, ... to 1.13.2
- Update slinky-core, slinky-web to 0.7.4
- Update jnr-posix to 3.1.19
- Update aws-java-sdk-sts to 1.12.670
- Update mapdb to 3.1.0
- Update rocksdbjni to 8.11.3
- Update pekko-http-circe to 2.3.4
- Update pekko-http, pekko-http-xml to 1.0.1
- Update marketplacemetering, s3, sts to 2.20.162
Release 1.6.1
Changes that may require attention:
- Standardize the names of the NumberIteratorIngest fields
startAtOffset
andmaxPerSecond
. If you were previously using the namesstartAt
orthrottlePerSecond
, you will need to update your recipes and API calls
Enhancements:
- Reintroduce the classic single-line query bar on the Explore UI with SHIFT-ENTER to run a text query
- Add support for arbitrary kafka properties on WriteToKafka Standing Query output via
kafkaProperties
field - Allow Multiple Values Standing Queries to event on arbitrarily-keyed property changes by using a
RETURN properties(n)
rather than having to list all properties manually
Bugfixes:
- Reintroduce error messages encountered during Cypher query compilation which were lost as part of the Scala 2.13 migration in 1.6.0
- Improve favicon support on all platforms
Updates:
- pekko, pekko-stream, pekko-connectors to 1.0.2
- Fix CVE-2024-25710: add explicit apache commons compress dep 1.26.0
- scalajs-dom to 2.8.0
- commons-codec to 1.16.1
- pureconfig to 0.17.6
- bootstrap to 5.3.3
- sbt, sbt-dependency-tree to 1.9.9
- logback-classic to 1.5.1
- protobuf-java to 3.25.3
- jedis to 5.1.1
- everit-json-schema to 1.14.4
- sttp to 3.9.2
- webjars-locator to 0.50
- pekko-http-circe to 2.1.1
- circe-optics to 0.15.0
- dropwizard metrics to 4.2.25
- guava to 33.0.0-jre
- skunk-circe, skunk-core to 0.6.3
- thatDot-opencypher to 9.1.1
- commons-text to 1.11.0
- msgpack-core to 0.9.8
- cats-effect to 3.5.3
- rocksdbjni to 8.5.4
Release v1.6.0
Quine
Enhancements
- Migrate from Lightbend Akka to Apache Pekko Framework
- Dropped Apache Pulsar ingest support due to Akka dependency
- Migrate from Scala 2.12 to Scala 2.13
- Forbid specifying
JdniLoginModule
as asasl.jaas.config
to avoid CVE-2023-25194 - Limit InfluxDB metrics logging to error
- Added open source telemetry, for more info visit quine.io/reference/telemetry
- Support multiline queries in the Exploration UI
Bugfixes:
- Fixed "Run again as text query" button in the results panel in the Exploration UI
Updates:
scala-library
2.13 to 2.13.12msgpack-core
to 0.9.6dropwizard metrics-core
,metrics-jmx
,metrics-jvm
to 4.2.20commons-compress
to 1.25.0 to address CVE-2021-35516, CVE-2021-35517, CVE-2021-36090mapdb
to 3.0.10kafka-clients
to 2.7.2avro
to 1.11.3 to address CVE-2023-39410aws-sdk
to 2.20.159guava
to 32.1.3-jrecirce-config
to 0.10.1circe-yaml-v12
to 0.15.1commons-io
to 2.15.1logback-classic
to 1.4.13
Release Quine 1.5.7
Enhancements:
- SSL is now supported when interacting with Quine in an untrusted environment by using the
SSL_KEYSTORE_PATH
andSSL_KEYSTORE_PASSWORD
environment variables - Add
create.setProperty
procedure to allow setting a property with a dynamic key, dual to accessing a property with square-bracket syntax - Additional performance metrics can be added with
enableDebugMetrics
setting to help diagnose internal messaging and node load/unload throughput
Bugfixes:
- Multiple Value Standing Query (MVSQ) will now properly trigger a change when a property is set/unset to
null
Updates:
- stoplight elements to v7.12.0
- snakeyaml-engine to 2.7
- logback-classic to 1.4.11
- sts to 2.20.139
- cats-core to 2.10.0
- circe-core, circe-parser, ... to 0.14.6
- msgpack-core to 0.9.5
- scalajs-dom to 2.6.0
- guava to 32.1.2-jre