Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion render/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# An argument so an unreleased build can be tried locally:
# docker build --build-arg SQLFLOW_IMAGE=turbolytics/sql-flow:<tag> render
ARG SQLFLOW_IMAGE=turbolytics/sql-flow:v2026.09.19.1
ARG SQLFLOW_IMAGE=turbolytics/sql-flow:v2026.09.21
FROM ${SQLFLOW_IMAGE}

# psql and pg_isready apply the migrations. curl sends the install events.
Expand Down
2 changes: 1 addition & 1 deletion render/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Must match the Dockerfile and docker-compose.yml.
SQLFLOW_IMAGE ?= turbolytics/sql-flow:v2026.09.19.1
SQLFLOW_IMAGE ?= turbolytics/sql-flow:v2026.09.21

.PHONY: validate rollups up test psql clean

Expand Down
4 changes: 2 additions & 2 deletions render/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ of both:
```json
{"name": "install.deployed", "type": "count", "value": 1,
"dimensions": {"install_id": "3f0c1b7e-…", "source": "render",
"template": "render-metrics", "sqlflow_version": "v2026.09.19.1"}}
"template": "render-metrics", "sqlflow_version": "v2026.09.21"}}
```

```json
{"name": "install.first_request", "type": "count", "value": 1,
"dimensions": {"install_id": "3f0c1b7e-…", "source": "render",
"template": "render-metrics", "sqlflow_version": "v2026.09.19.1"}}
"template": "render-metrics", "sqlflow_version": "v2026.09.21"}}
```

| Field | What it is |
Expand Down
2 changes: 1 addition & 1 deletion render/bin/telemetry.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ TEMPLATE=render-metrics

sql() { psql "$SQLFLOW_POSTGRES_URI" -X -Atq -v ON_ERROR_STOP=1 -c "$1" 2>/dev/null; }

# The first line of `sqlflow --version` is "sqlflow v2026.09.19.1".
# The first line of `sqlflow --version` is "sqlflow v2026.09.21".
VERSION="$(sqlflow --version 2>/dev/null | awk 'NR==1 {print $2}')"
case "$VERSION" in ''|*[!A-Za-z0-9._-]*) VERSION=unknown ;; esac

Expand Down
6 changes: 3 additions & 3 deletions render/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ services:
build:
context: .
args:
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.19.1}
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.21}
depends_on:
postgres:
condition: service_healthy
Expand Down Expand Up @@ -71,7 +71,7 @@ services:
build:
context: .
args:
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.19.1}
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.21}
depends_on:
postgres:
condition: service_healthy
Expand All @@ -93,7 +93,7 @@ services:
build:
context: .
args:
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.19.1}
SQLFLOW_IMAGE: ${SQLFLOW_IMAGE:-turbolytics/sql-flow:v2026.09.21}
entrypoint: /app/bin/serve.sh
depends_on:
postgres:
Expand Down
16 changes: 16 additions & 0 deletions render/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
# SQLFLOW_WEBHOOK_HMAC_SECRET required under hmac
# SQLFLOW_WEBHOOK_PORT default 8001
# SQLFLOW_WEBHOOK_MAX_BODY_BYTES default 26214400, 25 MiB
# SQLFLOW_TURBOSTATS_REPORT_TO optional. A control plane's report URL, such
# as https://ingest.turbolytics.io/v1/turbostats.
# Empty, the default, reports nowhere.
# SQLFLOW_TURBOSTATS_KEY required with a report URL: the credential
# the control plane issued
# SQLFLOW_TURBOSTATS_ID default sqlflow-metrics-ingest
# SQLFLOW_WRITER_ID required. bin/entrypoint.sh makes one per
# process start. Never set it by hand: two
# processes that share one replace each
Expand Down Expand Up @@ -94,6 +100,16 @@ tables:

pipeline:
name: render-metrics
# Reports this instance to a control plane when
# SQLFLOW_TURBOSTATS_REPORT_TO is set, signed with SQLFLOW_TURBOSTATS_KEY.
# Empty, the default, reports nowhere. The values are quoted so an unset
# variable renders as an empty string, which the pipeline schema reads as
# off, and not as null, which it rejects. Needs SQLFlow v2026.09.21 or later.
turbostats:
id: "{{ SQLFLOW_TURBOSTATS_ID|default('sqlflow-metrics-ingest') }}"
report_to: "{{ SQLFLOW_TURBOSTATS_REPORT_TO|default('') }}"
key: "{{ SQLFLOW_TURBOSTATS_KEY|default('') }}"

batch_size: 500
# A lone curl is a partial batch. It waits this long, then the minute has to
# close, so a first metric is readable after one to two minutes.
Expand Down
16 changes: 16 additions & 0 deletions render/serve.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
# deploy asks for it. bin/serve.sh refuses one that
# would need encoding in a URL.
# SQLFLOW_SERVE_PORT default 8080
# SQLFLOW_TURBOSTATS_REPORT_TO optional. A control plane's report URL, such
# as https://ingest.turbolytics.io/v1/turbostats.
# Empty, the default, reports nowhere.
# SQLFLOW_TURBOSTATS_KEY required with a report URL: the credential
# the control plane issued
# SQLFLOW_TURBOSTATS_ID default sqlflow-metrics-api
#
# The metric and metric_total grains are written by hand. sqlflow rollup
# generates a dataset of at most one dimension, folded, and a series here is
Expand Down Expand Up @@ -41,6 +47,16 @@ commands:
serve:
name: render-metrics-api

# Reports this instance to a control plane when
# SQLFLOW_TURBOSTATS_REPORT_TO is set, signed with SQLFLOW_TURBOSTATS_KEY.
# Empty, the default, reports nowhere. The values are quoted so an unset
# variable renders as an empty string, which the serve schema reads as
# off, and not as null, which it rejects. Needs SQLFlow v2026.09.21 or later.
turbostats:
id: "{{ SQLFLOW_TURBOSTATS_ID|default('sqlflow-metrics-api') }}"
report_to: "{{ SQLFLOW_TURBOSTATS_REPORT_TO|default('') }}"
key: "{{ SQLFLOW_TURBOSTATS_KEY|default('') }}"

http:
addr: "0.0.0.0:{{ SQLFLOW_SERVE_PORT|default('8080') }}"

Expand Down
2 changes: 1 addition & 1 deletion render/test/e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ API="http://127.0.0.1:${API_HOST_PORT:-8080}"
SECRET=local-secret
# The tag the image is built from, which an install reports as its version.
# make test passes it. Must match the Dockerfile's default.
: "${SQLFLOW_IMAGE:=turbolytics/sql-flow:v2026.09.19.1}"
: "${SQLFLOW_IMAGE:=turbolytics/sql-flow:v2026.09.21}"
export SQLFLOW_IMAGE
GRAINS="1m 5m 15m 1h 6h 1d"

Expand Down
Loading