Skip to content

feat: Add custom_image input to debug Spice Cloud workflow#238

Merged
phillipleblanc merged 3 commits into
trunkfrom
phillip/debug-custom-image
Mar 31, 2026
Merged

feat: Add custom_image input to debug Spice Cloud workflow#238
phillipleblanc merged 3 commits into
trunkfrom
phillip/debug-custom-image

Conversation

@phillipleblanc
Copy link
Copy Markdown
Contributor

Add a custom_image workflow input to run_spicebench_debug_spice_cloud that allows specifying a custom runtime container image (e.g. ghcr.io/spiceai/spiceai-dev:spicebench-sf10) instead of the default nightly image.

How it works

When custom_image is set, the image reference is parsed into components:

  • ghcr.io/spiceai/spiceai-dev:spicebench-sf10registry=ghcr.io, image=spiceai/spiceai-dev, tag=spicebench-sf10

These are passed to spidapter as SPIDAPTER_IMAGE_REGISTRY, SPIDAPTER_IMAGE_NAME, and SPIDAPTER_IMAGE_TAG env vars. The channel is automatically switched from nightly to internal.

Other changes

  • Added executor_memory_limit input (was missing from debug workflow but present in main workflow)

Depends on

@phillipleblanc phillipleblanc force-pushed the phillip/debug-custom-image branch 2 times, most recently from ed48acd to 29161f2 Compare March 27, 2026 07:55
@phillipleblanc phillipleblanc self-assigned this Mar 27, 2026
Add a custom_image workflow input to run_spicebench_debug_spice_cloud
that allows specifying a custom runtime container image (e.g.
ghcr.io/spiceai/spiceai-dev:spicebench-sf10) instead of the default
nightly image.

When set, the image reference is parsed into registry, image name, and
tag components and passed through to spidapter as SPIDAPTER_IMAGE_REGISTRY,
SPIDAPTER_IMAGE_NAME, and SPIDAPTER_IMAGE_TAG env vars. The channel is
automatically switched to internal.

Also adds executor_memory_limit input and fixes NUM_QUERY_CLIENTS to
match the main workflow (2 instead of 8).
@phillipleblanc phillipleblanc force-pushed the phillip/debug-custom-image branch 3 times, most recently from 316e8d8 to 8fe6fb7 Compare March 30, 2026 06:19
Move table row count validation to run as the first phase (Phase 0)
before the probe query. Row count queries are cheap SELECT COUNT(*)
and immediately surface data loss or duplication without waiting for
expensive analytical queries to converge.
@phillipleblanc phillipleblanc force-pushed the phillip/debug-custom-image branch from 8fe6fb7 to 690b185 Compare March 30, 2026 06:30
Log insert/update/delete row counts for each batch written through
write_segments_for_batch. This covers both the initialization phase
and the main ETL run pipeline.

Example log output:
  INFO etl: Writing segments for batch table=customer batch_id=5
    segments=3 insert_rows=8192 update_rows=512 delete_rows=128

This allows post-hoc reconciliation: summing insert_rows - delete_rows
per table should match the expected row count at each checkpoint.
If there is a mismatch, the per-batch logs pinpoint which batch_id
had unexpected operation counts.
@phillipleblanc phillipleblanc merged commit bac5948 into trunk Mar 31, 2026
10 of 13 checks passed
@phillipleblanc phillipleblanc deleted the phillip/debug-custom-image branch March 31, 2026 02:02
Jeadie pushed a commit that referenced this pull request Apr 2, 2026
* feat: Add custom_image input to debug Spice Cloud workflow

Add a custom_image workflow input to run_spicebench_debug_spice_cloud
that allows specifying a custom runtime container image (e.g.
ghcr.io/spiceai/spiceai-dev:spicebench-sf10) instead of the default
nightly image.

When set, the image reference is parsed into registry, image name, and
tag components and passed through to spidapter as SPIDAPTER_IMAGE_REGISTRY,
SPIDAPTER_IMAGE_NAME, and SPIDAPTER_IMAGE_TAG env vars. The channel is
automatically switched to internal.

Also adds executor_memory_limit input and fixes NUM_QUERY_CLIENTS to
match the main workflow (2 instead of 8).

* fix: Run row count validation first in checkpoint validation

Move table row count validation to run as the first phase (Phase 0)
before the probe query. Row count queries are cheap SELECT COUNT(*)
and immediately surface data loss or duplication without waiting for
expensive analytical queries to converge.

* chore: Add per-batch operation row count logging for data reconciliation

Log insert/update/delete row counts for each batch written through
write_segments_for_batch. This covers both the initialization phase
and the main ETL run pipeline.

Example log output:
  INFO etl: Writing segments for batch table=customer batch_id=5
    segments=3 insert_rows=8192 update_rows=512 delete_rows=128

This allows post-hoc reconciliation: summing insert_rows - delete_rows
per table should match the expected row count at each checkpoint.
If there is a mismatch, the per-batch logs pinpoint which batch_id
had unexpected operation counts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant