Skip to content

Upgrading to 2.1.0

This page covers what you need to know when upgrading to Quine 2.1.0.

What's New

  • Redesigned Status Dashboard — the home page is now built around a live diagram of how data flows through the system, from ingests through the write pipeline, on to standing queries, round-trip to the persistor, and out through outputs. Color coding shows whether each stage is flowing, constrained, backpressured, or stopped, and highlights the bottleneck stage. See the Dashboard page.

  • Rebuilt Cypher editor — the query editor used across the UI now provides Cypher syntax highlighting and a multi-line editing mode for longer queries. See Exploration UI.

  • Standing Query Inspections and Graph Feeds — sample a standing query's output pipeline directly from the Exploration UI, or set up a feed that draws a standing query's live results onto the graph as they happen.
  • Exploration UI Settings — a new settings panel for editing sample queries, quick queries, node appearances, and graph feeds directly in the UI, instead of only through the REST API.

  • Standing query propagation on creation — the create standing query API can propagate to existing data in the same request. See Behavior Changes.

  • Per-ingest restart policy — retry count, backoff timing, and retry window are configurable per ingest via onStreamError. See Ingest Sources.
  • Cypher pattern predicates — relationship patterns used as a boolean condition, for example combined with AND/OR/NOT or inside CASE WHEN, now evaluate correctly. See Cypher Enhancements.

Breaking Changes

Stricter API v2 Request Validation

API v2 now rejects requests containing unrecognized or misspelled JSON (or YAML) fields with a 400 error naming the offending field, for example:

{
  "error": {
    "code": 400,
    "status": "INVALID_ARGUMENT",
    "message": "Invalid value for: body (Unexpected field: [nam]; valid fields: name, source, query)",
    "details": []
  }
}

Previously, unknown fields were silently ignored and defaults were applied instead. Requests that used to succeed while carrying a misspelled field, and silently doing the wrong thing, now fail. Check any automation that constructs API v2 request bodies. API v1 is unaffected.

System Configuration Endpoint Returns Operational Fields Only

GET /api/v2/system/config now returns an explicit, pre-approved set of operational fields (persistor type, webserver address, shard count, node limits, metrics reporter types, default API version) instead of the entire raw configuration with sensitive fields masked. Credentials and other secrets embedded in the configuration can no longer be exposed through this endpoint. Update any tooling that read other fields from this endpoint's response.

Behavior Changes

Standing Queries Propagate on Creation

By default, a newly created standing query now propagates to data already in the graph, matching against every node in the in-memory cache. In 2.0.x, a new standing query matched only data written after it was registered.

The behavior is controlled by a new propagateTo query parameter on POST /api/v2/graph/quine/standingQueries:

  • NONE, no propagation; matches only data changed after registration (the 2.0.x behavior)
  • EXCLUDE_SLEEPING (default), propagates to nodes currently in the in-memory cache
  • INCLUDE_SLEEPING, propagates to all nodes, waking sleeping nodes from the persistor; tune with wakeUpParallelism (default 4)

Pass propagateTo=NONE to restore the previous behavior. See Standing Queries for details.

Web UI Updates Automatically After Deploys

The web UI now loads the latest version after a new release is deployed, without requiring a hard refresh to clear stale cached files. No action is needed; a stale browser tab from a pre-2.1.0 deployment may still need one final hard refresh.