Skip to content

Platform Status Troubleshooting

This page is the diagnostic entry point for the Platform Status page. Most of it covers Dataplane Diagnostics, the panel an Admin uses to capture a live report of what the Dataplane is doing, because that is where a slow or stalled operation is actually explained.

Start From the Symptom

WHAT IS WRONG WHERE TO GO
The Database row is unhealthy. Not a Dataplane problem. The platform cannot save or read data at all. See the Components Card and the FAQ.
The app is locked behind a Database Connection Lost dialog. The platform lost its database connection while you were signed in. The dialog rechecks the connection every 10 seconds and closes on its own when it returns. See Platform Outage.
The RabbitMQ row is unhealthy. Not a Dataplane problem. No operation request can reach the engine. See the Components Card and the FAQ.
A component shows a grey dot. The status request itself did not return, so the state is unknown rather than unhealthy. Refresh the status summary.
The page warns about executor capacity. The engine cannot get the workers it needs. See Capacity Warnings.
The Dataplane is unhealthy and will not come back. Capture a report if the engine still answers, then restart it.
An operation is slow, stalled, or behaving oddly. The rest of this page.

Dataplane Diagnostics

Dataplane Diagnostics is a subtab of the Dataplane card on the Platform Status page. It captures a detailed report of what the Dataplane is doing at that moment and renders it inline, so an Admin can answer "why is this operation slow?" without leaving the platform.

A report covers the operations running right now with their progress, a timeline of the work each one has done, how much memory, storage, and task capacity is in use, and automated findings that flag a slow or unhealthy pattern along with its likely cause and owner.

Permissions

Only users with the Admin role can open the Diagnostics subtab or capture a report. The subtab is not rendered at all for Managers. See the Permissions page for the full matrix.

How Capture Works

Each capture is live. The platform asks the Dataplane to render its current state, receives the finished report, and displays it. The report reflects the engine at the instant of the capture.

BEHAVIOR WHAT TO EXPECT
First open Opening the Diagnostics subtab captures a report automatically.
Capture time A capture can take up to about 30 seconds, because the engine renders it on demand while it is still doing its normal work.
No history Nothing is stored. There is no archive of past reports, and leaving the Status page discards the one on screen. Use Download snapshot to keep a copy.
Switching subtabs Moving to Configuration and back keeps the current report loaded, without re-capturing.
During a recapture The report already on screen stays visible and holds its scroll position until the replacement has finished loading.
Theme The report follows the platform's light or dark theme and re-skins instantly when you toggle. Deployments running an older engine build return a light-only report.
Engine unreachable If the Dataplane answers the health check but produces no report, an error notification appears and the previous report stays on screen.

Keeping evidence before a restart

Restarting the Dataplane clears the state a report describes, and reports are not retained. If you are about to restart a wedged engine, capture and download a report first so the state leading up to the restart can still be reviewed afterward.

Panel Controls

The panel's controls are covered step by step in the how-tos: Capture a Diagnostics Report for the Recapture diagnostics button, Capture on an Interval for Auto recapture , and Download a Diagnostics Report for Download snapshot .

When no report has been captured yet, the panel shows No diagnostics loaded with a prompt to recapture.

Info

The report is read-only. Its links are stripped during capture, so nothing in it navigates anywhere. The only interaction it keeps is column sorting: click a table header to sort by that column.

Where to Look in a Report

A report is long, so jump to the section that matches what you are chasing rather than reading it top to bottom.

WHAT YOU ARE SEEING START HERE WHY
One operation is running far longer than usual. Findings, then Active work. Findings names the cause outright when a detector fired. Active work confirms whether the operation is still advancing at all.
An operation reports no progress. Executor stability. Losing a worker makes the engine silently redo its cached and shuffle work, which reads as a stall everywhere else.
Everything feels slow, not one operation in particular. The Workload tiles, then the Admission governor. The tiles show whether the engine is saturated. The governor says how much concurrent work it is currently allowing, and why.
One datastore feels slower than the rest. Source latency. It ranks sources by measured p95, so a slow source stops being an impression.
A read of a large table never finishes. Running loads, then Findings. A partition count of one on a large table is the single-connection case, and it fires its own finding.
You are worried about memory. The Spill tile in Workload, then Resources by operation. Spill means the engine admitted more concurrent work than memory held comfortably. Resources says which operation is holding it.
You cannot tell whether work is still moving. Nothing in one report. Movement needs two readings. Turn on automatic recapture and watch Rows read and Input advanced.

A report opens with a one-line health verdict, then presents its sections in a fixed order. Sections with nothing to report are left out entirely, so a healthy idle engine produces a much shorter report than one under load. The sections group into the three questions below.

What Is Happening

The present moment: whether the engine considers itself healthy, how loaded it is, which operations are in flight, and how their steps have unfolded.

Health

A single line at the top of the report: the word Health, a colored badge, the dominant reason, and the job success rate for the last hour.

BADGE WHEN IT APPEARS
Healthy No finding reaches beyond a single container, and no job failed. A count of localized advisories may still be shown.
Attention A finding affects a whole operation, a job failed, or executors were lost unexpectedly.
Degraded A finding is degrading the whole cluster.

Info

The badge is a worst-of verdict, not an average. A single serious finding cannot be diluted by everything else going well. Localized findings never set the badge on their own, because by definition the work still completes.

Workload

A row of tiles covering both live pressure and the trailing hour. Each tile has a headline value and a smaller detail line.

TILE HEADLINE VALUE DETAIL LINE
Operations How many operations are currently running Spark work. The breakdown by operation type, or none active.
Container admission Container slots in use against the total. Slots waiting and available, plus the per-operation ceiling that a single scan, profile, or materialize can hold.
Task Demand Tasks running right now. Tasks pending, live slots, and live executors against the maximum.
Persisted storage Cached data held in memory. How many cached datasets, and how much of them spilled to disk.
Active RAM Total memory across the live engine processes. The split between executors and driver, and the percentage in use.
Local SSD Capacity of the local volume the engine writes shuffle and spill data to. Free space, how many volumes, and how many executors report them.
Data processed (last hour) Bytes read from sources in the last hour. The matching row count.
Job success rate (last hour) Percentage of jobs that succeeded. The counts behind it, any aborted jobs, and the percentage of task attempts that ran clean.
Rate while active Read throughput measured only over the time the engine was actually working. The peak rate for comparison.
Peak ingest The highest read rate observed in the sampling window. How many executors were live at that peak.
Peak slot use The highest share of task slots occupied. The peak count of running tasks.
Spill (last hour) Data written out of memory to disk. The memory and disk split. Zero spill reads no spill, admission healthy; any spill is a sign the engine admitted more concurrent work than memory comfortably held.

A context line below the tiles states how many jobs ran in the hour and how much of that hour the engine was actually busy.

Info

Rates are deliberately measured against busy time rather than wall-clock time. The workload is bursty, so dividing by a mostly-idle hour would understate how fast the engine actually moves data.

Active Work

Two tables describing what is in flight.

Profile and scan operations

COLUMN WHAT IT SHOWS
Operation The operation ID.
Type The operation type.
Progress Containers completed out of the total, with a percentage.
Active Containers being processed right now.
Pending Containers not started yet.
Succeeded Containers finished successfully.
Failed Containers that failed.
Elapsed How long the operation has been running.
Since progress How long since a container last completed.
Status Running, or No progress when nothing has completed for 10 minutes. Hovering the badge explains why, including whether executors were recently lost.

Running loads

In-flight source reads, updated from live worker reports rather than only at the end of a task.

COLUMN WHAT IT SHOWS
Operation The operation type and ID driving the read.
Container The table, file, or computed asset being read.
Source The source type.
Partition key The field the read is partitioned on, or -- when there is none.
Partitions Partitions completed out of those planned, plus how many are running.
Rows read Rows read so far.
Expected The row count the load expected, when it reported one.
Progress Rows read against expected, as a percentage.
Rate The average read rate.
ETA Estimated time to finish at the current rate.
Input advanced How long since the row counters last moved. Two minutes or more is highlighted, because a frozen counter is a hang forming before the task ever ends.

Info

A prefix means the row had retried or duplicate task attempts. Those attempts re-read rows that were already counted, so progress and rate read higher than reality.

Tip

A rate that makes the ETA absurd is the clearest signal of a skewed or single-connection read. Cross-check the container against the Findings table.

Operation Event Timeline

A visual timeline of instrumented steps, one lane per operation, colored by phase. In a captured report the axis is fitted to the period of activity, so a three-minute incident fills the frame and a busy hour shows the hour. Hover a bar for its details.

MARKING MEANING
Load Reading data from the source.
Shuffle / prepare Redistributing data between workers.
Analytics Running the quality checks and profiling work.
Write Writing results out.
Other Anything not classified above.
Hatched bar Still running at the moment of capture.
Red outline Failed.
Shaded band A stretch with no instrumented work.
Red band An executor was removed at that point.

Time by Phase

A stacked bar per operation showing where its time went, split by the same phases as the timeline. Bar length is relative to the longest operation, and hovering a segment gives its duration and share.

Info

Totals sum concurrent and nested steps, so a bar can add up to more than the operation's elapsed wall-clock time.

What Is Wrong

The diagnosis. Rather than leaving you to correlate five tables by eye, the engine names the symptom, attributes a cause, says who owns the fix, and states how far the damage reaches.

The Findings section is omitted entirely when there is nothing to say. It appears when a finding fired, when executors were added or removed during active work, or when a capacity warning is active, so a routine scale-down can bring the section up without anything being wrong.

Findings

The section that names what is wrong. It can carry up to three things: a red banner for anything degrading the whole cluster, a note or warning about executor churn and capacity, and a ranked table of findings.

Each finding is one row.

COLUMN WHAT IT SHOWS
Operation The operation the finding belongs to, or -- when it cannot be tied to one.
Container The table, file, or computed asset being processed.
Symptom What is observably wrong. See Symptoms.
Cause The attributed reason for the symptom. See Causes and owners.
Owner Who can fix it: source, cluster, config, or unattributed.
Evidence The measured numbers behind the finding, such as the observed rate against the source's own median.
Blast radius How far the damage reaches. See Blast radius.
Since How long the finding has been active, expressed as an age rather than a timestamp.

Symptoms

SYMPTOM WHAT IT MEANS
failing The container's work is accumulating task failures and retries beyond a normal level.
crawling Throughput is far below what this source normally delivers, measured against its own history rather than a fixed threshold.
stuck A task is still running but has read nothing new for an extended period.
single-connection A large table is being read through a single connection because no usable partition field was available, so the read cannot spread across executors.
skewed One task is taking dramatically longer than the median for the same stage, which points at an uneven partition key.
small-files A file source is being read as a very large number of very small files, so per-file overhead dominates.
over-partitioned The work was split into so many tiny tasks that scheduling overhead outweighs the work itself. The mirror image of single-connection.
memory-pressured Storage is nearly full and data is spilling, or a single partition is oversized. This is a warning before an out-of-memory failure, not after one.
recompute-thrash Stages are being retried because shuffle output went missing, so the same work is being redone.

Causes and Owners

CAUSE OWNER TYPICAL FIX
source unstable source The source is dropping connections. Investigate the source system's stability or connection limits.
source throttling source The source is rate-limiting the reads. Reduce concurrency against it or raise its quota.
source slow source The source is simply returning data slowly, with no failures. Investigate load on the source system.
source file layout source The source is laid out as many tiny files. Compact them at the source.
cluster churn cluster Executors were lost and their shuffle output had to be recomputed. Look at node stability and decommissioning behavior.
memory pressure cluster The engine is running out of headroom. Consider a larger deployment size.
slow executor cluster One worker is materially slower than its peers.
no partition field config The container has no usable partition field, so it reads through one connection. Set a partition field on the container.
bad partition key config The chosen partition key distributes rows unevenly. Choose a different key or adjust the bounds.
partition sizing config Partitions are too small and too numerous. Raise the partition size.
unattributed unattributed The symptom is real but no rule matched the evidence. The finding is still shown, with no owner asserted, and is worth reporting to the Qualytics support team.

Blast Radius

BLAST RADIUS WHAT IT MEANS
localized Only this container is affected. The operation still completes.
operation Several containers in the same operation are degraded, so the operation as a whole is dragging.
cluster This container is holding a large share of shared capacity while other work waits, so it is degrading everything else. Findings at this level also appear in the red banner at the top of the section.

Info

A finding only reaches cluster when something else is actually waiting for the capacity it is holding. On a lightly loaded engine, idle capacity next to a slow operation is expected and is not treated as cluster-wide damage.

Executor Notes

Above the findings table, one of three messages may appear about executors that went away during active work in the last 30 minutes.

MESSAGE TONE WHAT HAPPENED
Warning Executors were lost unexpectedly, for example crashed or stopped for memory. Their cached data and shuffle output are recomputed before dependent steps resume, which is why operations can report no progress while recovering.
Neutral note Executors were decommissioned by the platform, for example a node drain, reclaim, or preemption. Their work is recomputed, but this was not an engine decision.
Neutral note Executors were scaled down by the engine itself. This is normal elastic scaling, and the note says whether any job actually failed as a result.

Executor Stability

Worker lifecycle events from the last hour, newest first.

COLUMN WHAT IT SHOWS
Time When the event happened.
Event added, scaled down (the engine gave capacity back), reclaimed (the platform took it away), or removed (a crash or a memory kill).
Executor The worker's identifier.
Last observed live How many workers were live just before the event.
Active jobs How many jobs were running at that moment.
Reason The classified reason, with the raw reason on hover.

A Task retries by cause (last hour) table follows, listing each failure class against the number of task attempts the engine retried.

Info

These are retries, not losses. A task attempt that failed and succeeded on the next try cost time, not results. The line above the table states whether any job in the window actually failed to recover.

Admission Governor

A one-paragraph readout of the component that decides how much container work runs concurrently. It samples the engine every 10 seconds and resizes the pool accordingly.

The paragraph gives the current mode with a colored badge, how long it has been in that mode, the reason for the current decision, the admission target against actual capacity, and the cache headroom against resident cached data. When the mode has changed recently, a table follows with Time, From, To, and Reason for each transition.

The Trailing Hour

Roughly the last hour of activity the engine still retains, which is what turns "this feels slow" into a measured comparison.

Warning

Once that hour passes, the evidence is gone. Reports are never stored, so a completed incident survives only in a file you downloaded.

Source Latency

Load-step duration per data source over the last hour, ranked by p95. This is the section that separates "our engine is slow" from "your source is slow".

COLUMN WHAT IT SHOWS
Source The data source.
Load steps How many load steps ran against it, and how many are still active.
p50 Median load-step duration.
p95 95th percentile duration, also drawn as a bar relative to the slowest source.
Max The slowest single load step.
Total Combined time spent loading from this source.
Median load rate The typical read rate, shown only for sources whose loads report row or byte counts.

Info

Durations cover the whole load step: connecting, querying, transferring, and materializing. Active steps extend to now, so a source that is hanging climbs this table while it hangs.

Resources by Operation

Which operation is holding what. A line above the table gives the sampled peaks for the whole engine.

COLUMN WHAT IT SHOWS
Operation The operation.
Cached now / peak Data this operation currently holds in cache, and the most it has held.
Tasks now / peak Task slots it currently occupies, and the most it has occupied.
Peak execution memory The largest execution memory footprint observed for one of its jobs.

Info

A dataset shared by two operations counts toward both, so the column can add up to more than the engine actually holds.

Completed Work

Aggregated over the jobs the engine still retains, in two blocks.

Operation and container task outcomes, split into a By operation table and a By container table with the same columns:

COLUMN WHAT IT SHOWS
Workload The operation or container.
Source The data sources involved.
Jobs success / fail Job counts, with aborted jobs called out separately.
Job p50 / p95 / max Job duration percentiles.
Tasks success / fail Task attempt counts.
Task p50 / p95 / max Task duration percentiles.

Recent DataFrame materializations, the most recent source loads the engine completed:

COLUMN WHAT IT SHOWS
Started When the load started.
Operation The operation ID.
Type The operation type.
Container The container being loaded.
Step The named step within the operation.
Source The data source.
Source partitions How many partitions the read used. A red 1 · single-connection badge marks an oversized read that had no usable partition field.
Rows Rows materialized.
Cached size Size of the materialized result in memory, which is not the same as the bytes transferred from the source.
Duration How long the load took.
Throughput Rate across reading, transforming, and caching.
Outcome Success or failure.

Limitations

LIMITATION DETAIL
Admin only The subtab does not exist for other roles, and the underlying endpoint rejects them.
No retention Reports are never stored. Closing the page discards the one on screen. Download anything you need to keep.
Capture cost Each capture makes the engine render a report while it is working. Avoid leaving a short automatic interval running.
Bounded history The report describes roughly the last hour of retained activity, plus whatever is live at the moment of capture. Older incidents are gone.
Not available when the engine is down A capture needs the Dataplane to answer. If it has already stopped responding, there is nothing to render. Capture before restarting, not after.