This commit is contained in:
Mateusz Gruszczyński committed 2026-10-14 16:07:58 +02:00
1 parent 4f36de240c
commit c41d1e00a2
18 files changed
+228 -336

No files matched your search

+42 -20
View File
@@ -8798,7 +8798,7 @@ html[data-dashboard-density=ultra] #panel-overview .stats-grid {
}
html[data-dashboard-density=normal] #panel-overview .stat {
padding: 12px 13px;
padding: 14px 14px;
}
html[data-dashboard-density=normal] #panel-overview .stat>span {
@@ -8806,8 +8806,8 @@ html[data-dashboard-density=normal] #panel-overview .stat>span {
}
html[data-dashboard-density=normal] #panel-overview .stat strong {
font-size: 25px;
margin: 5px 0 3px;
font-size: 26px;
margin: 6px 0 4px;
line-height: 1.3;
}
@@ -8816,7 +8816,7 @@ html[data-dashboard-density=normal] #panel-overview .stat small {
}
html[data-dashboard-density=compact] #panel-overview .stat {
padding: 10px 11px;
padding: 9px 10px;
}
html[data-dashboard-density=compact] #panel-overview .stat>span {
@@ -8825,8 +8825,8 @@ html[data-dashboard-density=compact] #panel-overview .stat>span {
}
html[data-dashboard-density=compact] #panel-overview .stat strong {
font-size: 25px;
margin: 4px 0 2px;
font-size: 22px;
margin: 3px 0 2px;
line-height: 1.2;
}
@@ -8860,7 +8860,17 @@ html[data-dashboard-density=ultra] #panel-overview .stat small {
}
html[data-dashboard-density=ultra] #panel-overview .stat-chart svg {
height: 38px;
height: 24px;
}
/* Dashboard density applies to charts and panels as well as number tiles.
Keep the Overview grid gutters independent of dashboard density. */
html[data-dashboard-density=normal] #panel-overview .stat-chart svg {
height: 34px;
}
html[data-dashboard-density=compact] #panel-overview .stat-chart svg {
height: 28px;
}
html[data-table-density=compact] :is(table th, table td) {
@@ -9529,7 +9539,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
}
.page-intro-title-row>:is(.quiet, .outline) {
min-height: 35px;
display: inline-flex;
align-items: center;
justify-content: center;
@@ -9555,7 +9564,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
.page-intro-title-row>:is(.quiet, .outline) {
width: 100%;
min-width: 0;
padding: 7px 9px;
white-space: normal;
text-align: center;
}
@@ -9567,9 +9575,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
letter-spacing: -.6px
}
.page-intro-title-row>:is(.quiet, .outline) {
font-size: 11px;
}
}
.system-info-heading-actions {
@@ -10850,9 +10855,12 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
white-space: normal;
}
html[data-dashboard-density=compact] #panel-overview .dashboard-overview-grid.is-aligned>.stat strong,
html[data-dashboard-density=normal] #panel-overview .dashboard-overview-grid.is-aligned>.stat strong {
font-size: calc(clamp(18px, 5.5vw, 25px));
font-size: clamp(20px, 5.8vw, 26px);
}
html[data-dashboard-density=compact] #panel-overview .dashboard-overview-grid.is-aligned>.stat strong {
font-size: clamp(19px, 5vw, 22px);
}
#panel-overview .dashboard-overview-grid.is-aligned>.card:not(.pool-card) {
@@ -10869,6 +10877,26 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
overflow: hidden;
}
html[data-dashboard-density=normal] #panel-overview .dashboard-overview-grid>.card:not(.pool-card) {
padding: 13px;
}
html[data-dashboard-density=compact] #panel-overview .dashboard-overview-grid>.card:not(.pool-card) {
padding: 10px;
}
html[data-dashboard-density=ultra] #panel-overview .dashboard-overview-grid>.card:not(.pool-card) {
padding: 7px;
}
html[data-dashboard-density=compact] #panel-overview .dashboard-overview-grid>.card .card-heading h2 {
font-size: 14px;
}
html[data-dashboard-density=ultra] #panel-overview .dashboard-overview-grid>.card .card-heading h2 {
font-size: 13px;
}
#panel-overview .overview-wide-chart .card-heading {
min-width: 0;
align-items: baseline;
@@ -11105,14 +11133,8 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
margin-left: auto;
}
.dashboard-widget-settings-controls>button {
min-height: 30px;
padding: 5px 10px;
}
.dashboard-widget-settings-controls>.dashboard-widget-scroll-button {
min-width: 30px;
padding-inline: 6px;
}
.dashboard-widget-settings-controls .dashboard-layout-open-settings {
+18 -5
View File
@@ -22,16 +22,18 @@
let elapsed = upstream_started.elapsed();
let connect_failure = cause.is_connect();
let detail = upstream_failure_detail(&cause, &active_backend, elapsed, connect_failure);
let failure_class =
upstream_health_error_class(&cause, connect_failure, &active_backend);
let graceful_h2_close = matches!(
failure_class,
"h2_graceful_goaway" | "h2_graceful_close"
);
if let Some(exchange) = &exchange {
exchange.websocket_error("upstream_request_failed", "upstream_http_error");
*exchange.upstream_error.lock().unwrap_or_else(|e| e.into_inner()) = Some(detail.clone());
}
if let Some(lease) = &active_lease {
lease.error_detail(
upstream_health_error_class(&cause, connect_failure, &active_backend),
&detail,
final_attempt_elapsed,
);
lease.error_detail(failure_class, &detail, final_attempt_elapsed);
}
if connect_failure {
tracing::warn!(
@@ -43,6 +45,17 @@
error = %detail,
"upstream connection failed"
);
} else if graceful_h2_close {
// Correlated GOAWAY(NO_ERROR) is expected connection churn. Keep
// failed requests visible as 502/access-log entries, but avoid
// repeating their verbose diagnostic at DEBUG severity.
tracing::trace!(
backend = %active_backend.id,
origin = %active_backend.origin,
elapsed_ms = elapsed.as_millis(),
error = %detail,
"upstream H2 graceful close left an unrecovered request"
);
} else {
tracing::debug!(
backend = %active_backend.id,