Skip to main content
Segment reload dry run previews what a table reload would change before you run the real reload. It samples table segments on the servers that host them, loads temporary segment copies with the proposed indexing config and schema, then returns the estimated index additions/removals, preprocessing time, size change, and any per-segment errors.
Dry run does not mutate the live segment directories. It creates temporary copies for sampled local segments and deletes them after the check.

When to Use

Use reload dry run before:
  • Adding, removing, or changing indexes on a large table.
  • Reloading segments after a schema or table-index config change.
  • Estimating segment size growth from new index settings.
  • Validating whether sampled segments can be reloaded successfully before triggering a full reload.
  • Comparing index changes across old, latest, or random segment samples.
For task-level planning such as Segment Backfill or Segment Purge, use the task dry-run APIs for those task types instead.

Endpoint

Path parameter: The controller:
  1. Resolves the table config and schema from ZooKeeper.
  2. Applies only index-loading-related fields from the request’s proposed tableConfig.
  3. Sends the enriched request to servers hosting the table.
  4. Aggregates server responses into one controller-level response.
If segment preprocessing is disabled for the table, the response is empty because no index changes can be previewed.

Request Body

Example: Preview an Inverted Index

This request previews adding an inverted index to the status column and a bloom filter to customerId.
Example response:

Example: Target Specific Segments

Use targetSegments when you want to dry run the exact segments that failed a previous reload or segments representative of a known time range.
Each server intersects the requested list with its locally hosted segments. A server that does not host any requested segment returns an empty per-server response.

Sampling Strategies

Remote segments that are not locally materialized can be counted as needing reload but are excluded from sample execution. The dry-run response can therefore show totalSegmentsNeedReload greater than sampledSegments.length.

Response Fields

Per-segment result fields:

Operational Notes

  • Dry run uses temporary segment directories and deletes them after the request.
  • Dry-run work is isolated from the real reload executor so it does not consume real reload worker threads.
  • sampleCount is capped at 10 to prevent expensive accidental scans.
  • timeoutMs applies to sampled segment dry-run work. Timed-out segments appear with an exception such as Dry-run timed out.
  • The controller always starts from the ZooKeeper table config and applies proposed indexing and field-config changes from the request.
  • Tier backend settings are adjusted so dry-run loading uses local temporary copies rather than writing to remote tier storage.

Interpreting Results

Use netColumnIndexChanged to confirm the reload would perform the expected index transition. For example:
Use avgSizeChangeInBytes as a sample-based estimate, not an exact whole-table storage forecast. Multiply it by the number of segments that need reload to estimate rough footprint change, then validate with a larger or targeted sample if the result is close to your storage budget. If numExceptions is non-zero, inspect serverResults before triggering a full reload. Common failures include invalid index config, incompatible schema changes, segment format issues, or request timeout.

Troubleshooting