Skip to content

Connector and transaction status UI#5749

Open
Karakatiza666 wants to merge 2 commits intomainfrom
connector-ui
Open

Connector and transaction status UI#5749
Karakatiza666 wants to merge 2 commits intomainfrom
connector-ui

Conversation

@Karakatiza666
Copy link
Contributor

@Karakatiza666 Karakatiza666 commented Mar 4, 2026

Changes:

  • Updated connector tables in the Performance tab based on the latest design
  • Added per-connector icons that symbolize
    • running/paused status
    • barrier state
    • presence of errors
    • transaction started / committing state
  • Added global transaction stats
    • transaction progress bar
    • transaction progress values - committed operators / total etc
    • status label near pipeline status that forwards to Performance tab

Time elapsed in the transaction is not yet available in API.

Manual testing: tested using a custom simulator that cycles through pipeline transaction states, and by observing a pipeline with deltalake inputs that is configured with transaction_mode: snapshot

image ------------------------------------------------------------- image ------------------------------------------------------------- image ------------------------------------------------------------- image ------------------------------------------------------------- image ------------------------------------------------------------- image ------------------------------------------------------------- image
Screencast.from.2026-03-04.16-07-11.webm

Signed-off-by: Karakatiza666 <bulakh.96@gmail.com>
…nector icon

Signed-off-by: Karakatiza666 <bulakh.96@gmail.com>
@lalithsuresh
Copy link
Contributor

@Karakatiza666 that screen recording looks wrong. Why is the progress bar moving forward, while the number of committed records goes from 27k/30K back to 17k/30k?

Copy link
Collaborator

@mythical-fred mythical-fred left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two soft issues inline. pipelineMetrics.ts has non-trivial logic (io_active detection, transaction_phase lowercasing, aggregate reductions) that would be well-served by Vitest unit tests — worth chipping away at (npm install -D vitest @testing-library/svelte jsdom).

io_active:
prev !== undefined && cur.metrics.total_records > prev.metrics.total_records,
transaction_phase: connectorPhase
? (connectorPhase.toLowerCase() as 'started' | 'committed')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unsafe assertion: if the API returns an unexpected casing or a future phase value, this silently produces a wrong type. Safer:

const p = connectorPhase.toLowerCase()
transaction_phase: (p === 'started' || p === 'committed') ? p : undefined

global: {
transaction_status: 'NoTransaction',
transaction_initiators: { initiated_by_connectors: {} }
} as GlobalMetricsTimestamp
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The as GlobalMetricsTimestamp cast hides incomplete initialization — only transaction_status and transaction_initiators are present. If any consumer reads e.g. global.start_time before the first real poll, it silently gets undefined. Consider typing the empty value explicitly (e.g., Partial<GlobalMetricsTimestamp>) and making consumers handle it, or provide a complete zero value.

@Karakatiza666
Copy link
Contributor Author

Karakatiza666 commented Mar 4, 2026

@lalithsuresh the number of records processed + total is actually only for operators currently being committed, not across the whole transaction.
I understand this is confusing; based on feedback I will either add a tooltip that explains this, or remove these metrics altogether if they are not needed often

@lalithsuresh
Copy link
Contributor

@Karakatiza666 what is the progress bar based on?

@Karakatiza666
Copy link
Contributor Author

Karakatiza666 commented Mar 4, 2026

Three values:
total value - operators "committed" + "in progress" + "remaining"
yellow bar - ("committed" + "in progress") / total
green bar - ("committed" + ("in progress" * in_progress_processed_records / in_progress_total_records)) / total

@lalithsuresh
Copy link
Contributor

@ryzhyk should know the most useful info here to showcase.

@Karakatiza666
Copy link
Contributor Author

@blp please take a look, too

@lalithsuresh
Copy link
Contributor

Nit

  • "Input blocks the commit" -> "Commit blocked by input"

Question:

  • What determines the order of icons between "input blocks the commit" icon and "transaction started"?
  • It's also an odd choice of icon for transaction started?

@Karakatiza666
Copy link
Contributor Author

Karakatiza666 commented Mar 4, 2026

The screenshots are confusing because I changed the order midway.
The order is fixed:

  1. Commit blocked by input
  2. Errors in connector
  3. transaction started/committing icon
  4. connector running/paused

Maximum two icons are shown at a time, they are prioritized based on importance to the current state. This helps visualize the most important information about the connector in any state without overloading the UI with a lot of icons.

It's also an odd choice of icon for transaction started

I will ask our designer for a better icon; this one made sense to me.

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.

3 participants