Skip to content

Commit 267945e

Browse files
author
2948351
committed
[FLINK-38899][runtime-web] Introduce the Rescales/History sub-page for streaming jobs with the adaptive scheduler enabled - Temporary commit for review (Changed the variable name and refresh for detail panel)
1 parent f2f4915 commit 267945e

2 files changed

Lines changed: 52 additions & 37 deletions

File tree

flink-runtime-web/web-dashboard/src/app/pages/job/rescales/job-rescales.component.html

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<nz-table
2828
class="no-border small"
2929
[nzSize]="'small'"
30-
[nzData]="rescalesHistories || []"
30+
[nzData]="jobRescaleDetails || []"
3131
[nzFrontPagination]="false"
3232
[nzShowPagination]="false"
3333
>
@@ -79,83 +79,85 @@
7979
</tr>
8080
</thead>
8181
<tbody>
82-
<ng-container *ngFor="let history of rescalesHistories; trackBy: trackById">
82+
<ng-container *ngFor="let jobRescaleDetails of rescalesHistory; trackBy: trackById">
8383
<tr>
8484
<td
8585
nzShowExpand
86-
[nzExpand]="isExpanded(history.rescaleUuid)"
87-
(nzExpandChange)="onExpandChange(history, $event)"
86+
[nzExpand]="isExpanded(jobRescaleDetails.rescaleUuid)"
87+
(nzExpandChange)="onExpandChange(jobRescaleDetails, $event)"
8888
></td>
89-
<td nz-tooltip [nzTooltipTitle]="history.rescaleUuid">
90-
{{ truncateUuid(history.rescaleUuid) }}
89+
<td nz-tooltip [nzTooltipTitle]="jobRescaleDetails.rescaleUuid">
90+
{{ truncateUuid(jobRescaleDetails.rescaleUuid) }}
9191
</td>
92-
<td>{{ history.rescaleAttemptId }}</td>
93-
<td nz-tooltip [nzTooltipTitle]="history.resourceRequirementsUuid">
94-
{{ truncateUuid(history.resourceRequirementsUuid) }}
92+
<td>{{ jobRescaleDetails.rescaleAttemptId }}</td>
93+
<td nz-tooltip [nzTooltipTitle]="jobRescaleDetails.resourceRequirementsUuid">
94+
{{ truncateUuid(jobRescaleDetails.resourceRequirementsUuid) }}
9595
</td>
96-
<td>{{ history.triggerCause }}</td>
96+
<td>{{ jobRescaleDetails.triggerCause }}</td>
9797
<td>
9898
<flink-job-badge
99-
*ngIf="history.terminalState"
100-
[state]="history.terminalState"
99+
*ngIf="jobRescaleDetails.terminalState"
100+
[state]="jobRescaleDetails.terminalState"
101101
></flink-job-badge>
102-
<span *ngIf="!history.terminalState">-</span>
102+
<span *ngIf="!jobRescaleDetails.terminalState">-</span>
103+
</td>
104+
<td>{{ jobRescaleDetails.terminatedReason || '-' }}</td>
105+
<td>
106+
{{ jobRescaleDetails.startTimestampInMillis | date: 'yyyy-MM-dd HH:mm:ss.SSS' }}
103107
</td>
104-
<td>{{ history.terminatedReason || '-' }}</td>
105-
<td>{{ history.startTimestampInMillis | date: 'yyyy-MM-dd HH:mm:ss.SSS' }}</td>
106108
<td>
107109
{{
108-
(history.endTimestampInMillis || Date.now()) - history.startTimestampInMillis
109-
| humanizeDuration
110+
(jobRescaleDetails.endTimestampInMillis || Date.now()) -
111+
jobRescaleDetails.startTimestampInMillis | humanizeDuration
110112
}}
111113
</td>
112114
<td>
113115
{{
114-
history.endTimestampInMillis
115-
? (history.endTimestampInMillis | date: 'yyyy-MM-dd HH:mm:ss.SSS')
116+
jobRescaleDetails.endTimestampInMillis
117+
? (jobRescaleDetails.endTimestampInMillis | date: 'yyyy-MM-dd HH:mm:ss.SSS')
116118
: '-'
117119
}}
118120
</td>
119121
</tr>
120-
<tr [nzExpand]="isExpanded(history.rescaleUuid)">
121-
<td colspan="10" *ngIf="isExpanded(history.rescaleUuid)" class="collapse-td">
122+
<tr [nzExpand]="isExpanded(jobRescaleDetails.rescaleUuid)">
123+
<td colspan="10" *ngIf="isExpanded(jobRescaleDetails.rescaleUuid)" class="collapse-td">
122124
<div class="rescale-details-wrapper">
123125
<div class="rescale-details-box">
124126
<h3><strong>Rescale Details</strong></h3>
125127
<tr>
126128
<td>
127129
<span>
128130
<strong>Rescale UUID:</strong>
129-
{{ truncateUuid(history.rescaleUuid) }}
131+
{{ truncateUuid(jobRescaleDetails.rescaleUuid) }}
130132
</span>
131133
<nz-divider nzType="vertical"></nz-divider>
132134
<span>
133135
<strong>Attempt ID:</strong>
134-
{{ history.rescaleAttemptId }}
136+
{{ jobRescaleDetails.rescaleAttemptId }}
135137
</span>
136138
<nz-divider nzType="vertical"></nz-divider>
137139
<span>
138140
<strong>Requirements ID:</strong>
139-
{{ truncateUuid(history.resourceRequirementsUuid) }}
141+
{{ truncateUuid(jobRescaleDetails.resourceRequirementsUuid) }}
140142
</span>
141143
<nz-divider nzType="vertical"></nz-divider>
142144
<span>
143145
<strong>Trigger Cause:</strong>
144-
{{ history.triggerCause }}
146+
{{ jobRescaleDetails.triggerCause }}
145147
</span>
146148
<nz-divider nzType="vertical"></nz-divider>
147149
<span>
148150
<strong>Terminal State:</strong>
149-
{{ history?.terminalState || '-' }}
151+
{{ jobRescaleDetails?.terminalState || '-' }}
150152
</span>
151153
<nz-divider nzType="vertical"></nz-divider>
152154
<span>
153155
<strong>Terminal Reason:</strong>
154-
{{ history?.terminatedReason || '-' }}
156+
{{ jobRescaleDetails?.terminatedReason || '-' }}
155157
</span>
156158
</td>
157159
</tr>
158-
<ng-container *ngIf="getDetail(history.rescaleUuid) as detail">
160+
<ng-container *ngIf="getDetail(jobRescaleDetails.rescaleUuid) as detail">
159161
<nz-table
160162
class="small"
161163
[nzData]="detail.vertices | keyvalue"
@@ -362,7 +364,7 @@ <h3><strong>Rescale Details</strong></h3>
362364
</nz-table>
363365
</ng-container>
364366

365-
<div *ngIf="!getDetail(history.rescaleUuid)">Loading...</div>
367+
<div *ngIf="!getDetail(jobRescaleDetails.rescaleUuid)">Loading...</div>
366368
</div>
367369
</div>
368370
</td>

flink-runtime-web/web-dashboard/src/app/pages/job/rescales/job-rescales.component.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ import { JobLocalService } from '../job-local.service';
6666
]
6767
})
6868
export class JobRescalesComponent implements OnInit, OnDestroy {
69-
public rescalesHistories?: RescalesHistory;
69+
public rescalesHistory?: RescalesHistory;
7070
public rescaleDetailsMap = new Map<string, JobRescaleDetails>();
7171
public rescalesConfig?: JobRescaleConfigInfo;
7272
public jobDetail: JobDetail;
@@ -102,7 +102,7 @@ export class JobRescalesComponent implements OnInit, OnDestroy {
102102
takeUntil(this.destroy$)
103103
)
104104
.subscribe(([histories, config]) => {
105-
this.rescalesHistories = histories;
105+
this.rescalesHistory = histories;
106106
this.rescalesConfig = config;
107107
this.cdr.markForCheck();
108108
});
@@ -127,27 +127,40 @@ export class JobRescalesComponent implements OnInit, OnDestroy {
127127
}
128128

129129
public refresh(): void {
130+
// Reload expanded rescale details without clearing (to avoid flickering)
131+
const expandedUuids = Array.from(this.expandedRowsSet);
132+
133+
expandedUuids.forEach(uuid => {
134+
this.jobService
135+
.loadRescaleDetail(this.jobDetail.jid, uuid)
136+
.pipe(takeUntil(this.destroy$))
137+
.subscribe(detail => {
138+
this.rescaleDetailsMap.set(uuid, detail);
139+
this.cdr.markForCheck();
140+
});
141+
});
142+
130143
this.refresh$.next();
131144
}
132145

133146
public trackById(item: BriefJobRescaleDetails): string {
134147
return item.rescaleUuid;
135148
}
136149

137-
public onExpandChange(history: BriefJobRescaleDetails, expanded: boolean): void {
150+
public onExpandChange(jobRescaleDetails: BriefJobRescaleDetails, expanded: boolean): void {
138151
if (expanded) {
139-
this.expandedRowsSet.add(history.rescaleUuid);
140-
if (!this.rescaleDetailsMap.has(history.rescaleUuid)) {
152+
this.expandedRowsSet.add(jobRescaleDetails.rescaleUuid);
153+
if (!this.rescaleDetailsMap.has(jobRescaleDetails.rescaleUuid)) {
141154
this.jobService
142-
.loadRescaleDetail(this.jobDetail.jid, history.rescaleUuid)
155+
.loadRescaleDetail(this.jobDetail.jid, jobRescaleDetails.rescaleUuid)
143156
.pipe(takeUntil(this.destroy$))
144157
.subscribe(detail => {
145-
this.rescaleDetailsMap.set(history.rescaleUuid, detail);
158+
this.rescaleDetailsMap.set(jobRescaleDetails.rescaleUuid, detail);
146159
this.cdr.markForCheck();
147160
});
148161
}
149162
} else {
150-
this.expandedRowsSet.delete(history.rescaleUuid);
163+
this.expandedRowsSet.delete(jobRescaleDetails.rescaleUuid);
151164
}
152165
}
153166

0 commit comments

Comments
 (0)