First checks
Run these in order before digging into a specific symptom. Each step rules out a class of problem.1
Confirm the CLI is working and you are in the right project
goldsky login before continuing. If goldsky turbo list reports that the turbo binary is not installed, install the Turbo CLI extension first. A pipeline that “doesn’t exist” is often just a pipeline in a different project.2
Find the pipeline and check its status
3
Read recent logs
Execution error lines or the same error recurring across restarts. See reading logs below, and match any error text against the error message reference.4
Watch live data flow through the pipeline
Pipeline states
goldsky turbo list reports one of these statuses for each pipeline:
Job-mode pipelines (
job: true) cannot be restarted. Delete the job and re-apply the YAML instead. They are auto-deleted about 1 hour after termination, whether they succeeded or failed, so capture logs before the cleanup window closes. See the job mode guide.Reading logs
You do not need to read every line. Scan for these signals:
Useful variations when the last 100 lines are not enough:
Diagnosis walkthroughs
Each walkthrough useseth-transfers as the example pipeline, a streaming pipeline reading ethereum.erc20_transfers and writing to a Postgres sink. Substitute your own pipeline name.
Pipeline is in an error state
Symptom:goldsky turbo list shows the pipeline as error, or it crash-loops between starting and error.
What to check: the logs, which almost always name the failing component.
Execution error line identifying the root cause. For example, the single most common failure, bad database credentials in a secret:
-
Verify the credentials work outside Goldsky, for example with
psql 'postgresql://user:pass@host:5432/db'. -
Recreate the secret with the corrected connection string. Secrets cannot be edited in place, so delete and create it again under the same name:
-
Restart the pipeline so it picks up the new secret:
secret_name in your YAML against that list; a misspelled secret_name fails the same way as a missing secret.
No data is arriving
Symptom: the pipeline isrunning, but the sink table is empty or stopped growing.
What to check: whether records are flowing at each hop (source, transform, sink) using Live Inspect in print mode. Start at the source:
-
No records at all (“Waiting for records…” with nothing printed). If the source uses
start_at: latest, the pipeline only sees data created after deployment:Combined with a selective filter, it can legitimately take a long time for the first matching record to arrive. To process history instead, changestart_atand redeploy. Becauseapplypreserves checkpoints, you needgoldsky turbo restart eth-transfers --clear-state(or a renamed source) to make the pipeline re-read from the new starting point. -
Records at the source but nothing downstream. Move node by node with
-n <node-name>until records stop appearing:- If records stop after a transform, the transform is filtering everything out. Check the WHERE clause and the exact spelling of the name in
FROM: it must match the source key exactly. - If records reach the last transform but never hit the sink, check the sink’s
from:field points at the node you think it does.
- If records stop after a transform, the transform is filtering everything out. Check the WHERE clause and the exact spelling of the name in
goldsky turbo validate eth-transfers.yaml, then goldsky turbo apply eth-transfers.yaml. Deploy with -i to reopen the inspect TUI and confirm records now reach the sink node.
Output looks wrong
Symptom: data arrives, but rows are duplicated, fields are null or missing, or values don’t match what the transform should produce. What to check: compare a transform’s input against its output. Open the inspect TUI and switch between node tabs, or capture samples of each node for a side-by-side look:- Duplicate rows: the
primary_keycolumn isn’t unique per record, so upserts collide or multiply. Joins are a common source of accidental fan-out. - Missing or null fields: the SQL doesn’t select the column, or a TypeScript transform returns an object missing fields declared in its
schema. - Wrong values: check for type casts (numeric strings compared as text) and case-sensitive comparisons on address columns.
apply preserves checkpoints, the corrected logic only applies to new data. To rewrite history through the fixed transform, restart with cleared state:
Sink write failures
Symptom: logs show errors mentioning the sink, and lag starts growing. When a sink can’t accept writes, backpressure deliberately slows the whole pipeline rather than dropping data. What to check: the logs, which include the database’s own error text:
After fixing the database side, the pipeline resumes on its own retries; if it sits in
error, nudge it with goldsky turbo restart eth-transfers.
Pipeline is stuck or lagging
Symptom: the pipeline isrunning and data arrives, but minutes or hours behind the chain tip, or throughput has visibly dropped.
What to check: the health dashboard first. Its where to look first flow separates source, pipeline, and sink bottlenecks. In short:
- Checkpoint failures non-zero? Check the logs immediately: the pipeline is not durably saving progress.
- Block lag growing? Look at sink flush latency next. Growing end-to-end lag is usually a slow sink applying backpressure, not a slow source.
- Sinks fast but checkpoint duration high? Tune batching: raise
batch_sizeor lowerbatch_flush_intervalon the sink (see the pipeline configuration reference).
out of memoryin the logs with periodic restarts: the pipeline is undersized. Raiseresource_size(s→m→l) and redeploy.backpressureor lag warnings with high sink flush latency on the dashboard: the sink is the bottleneck. Add indexes for the upsert path, size up the database, or split load across sinks.- Steadily processing but far behind after a fresh deploy: a pipeline backfilling history is supposed to show high lag while it catches up. Watch whether lag trends down; only intervene if it doesn’t.
resource_size), batching (batch_size, batch_flush_interval), or the sink database itself. For a transient wedge with no clear cause, a plain restart is safe and keeps checkpoints:
goldsky turbo state list eth-transfers to see exactly what state exists (and what --clear-state would remove).
Error message reference
Match text fromgoldsky turbo logs against these patterns. Grouped by category.
Authentication
Network
Configuration
Storage
Data
Resources
Performance
Transforms
When the CLI itself misbehaves
Two failure modes live in the CLI rather than the pipeline:-
Commands hang with no output. The update notifier can stall on a failed network check. Disable it for one command to confirm:
If it still hangs, bound the command with a timeout and check basic connectivity to rule out a network problem:If
goldskycommands work butturbosubcommands hang, the turbo binary may be corrupted. Remove it and reinstall: -
“The turbo binary is not installed.” Turbo is a separate CLI extension. Install (or reinstall) it, then verify with
goldsky turbo list:
Still stuck
If none of the above resolves it, contact support. Including the following up front usually saves a round trip:- The pipeline name and project.
- The pipeline definition:
goldsky turbo get my-pipeline. - Recent logs with timestamps:
goldsky turbo logs my-pipeline --tail 100 --timestamps. - The exact error messages you matched (or failed to match) in the reference above, and roughly when the problem started.