feat(api): add request timeout to API calls in ResourceStatsPage and TrafficDashboard for improved reliability
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m12s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 2m12s
This commit is contained in:
@@ -1,8 +1 @@
|
|||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771912295663}
|
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912788315}
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771912297719}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912335274}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912395275}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912395275}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771912434898}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771912439040}
|
|
||||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912455273}
|
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import PageHeader from './components/PageHeader.jsx';
|
import PageHeader from './components/PageHeader.jsx';
|
||||||
|
|
||||||
|
const REQUEST_TIMEOUT_MS = 15000;
|
||||||
|
|
||||||
function formatBytes(bytes) {
|
function formatBytes(bytes) {
|
||||||
if (bytes == null || bytes === 0) return '0 B';
|
if (bytes == null || bytes === 0) return '0 B';
|
||||||
const k = 1024;
|
const k = 1024;
|
||||||
@@ -149,7 +151,7 @@ export default function ResourceStatsPage() {
|
|||||||
const fetchStats = useCallback(async (abortSignal) => {
|
const fetchStats = useCallback(async (abortSignal) => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
const opts = abortSignal ? { signal: abortSignal } : {};
|
const opts = { timeout: REQUEST_TIMEOUT_MS, ...(abortSignal ? { signal: abortSignal } : {}) };
|
||||||
try {
|
try {
|
||||||
const res = await api.get('/resources/stats', opts);
|
const res = await api.get('/resources/stats', opts);
|
||||||
const data = res?.data;
|
const data = res?.data;
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ function formatBytes(bytes) {
|
|||||||
const DONUT_SIZE = 200;
|
const DONUT_SIZE = 200;
|
||||||
const DONUT_OUTER = 88;
|
const DONUT_OUTER = 88;
|
||||||
const DONUT_INNER = 52;
|
const DONUT_INNER = 52;
|
||||||
|
const REQUEST_TIMEOUT_MS = 15000;
|
||||||
|
|
||||||
function JumphostCard({ jumphost }) {
|
function JumphostCard({ jumphost }) {
|
||||||
const { name, host, error, interfaces } = jumphost;
|
const { name, host, error, interfaces } = jumphost;
|
||||||
@@ -184,7 +185,7 @@ export default function TrafficDashboard() {
|
|||||||
const fetchStats = useCallback(async (abortSignal) => {
|
const fetchStats = useCallback(async (abortSignal) => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
const opts = abortSignal ? { signal: abortSignal } : {};
|
const opts = { timeout: REQUEST_TIMEOUT_MS, ...(abortSignal ? { signal: abortSignal } : {}) };
|
||||||
try {
|
try {
|
||||||
const [statsRes, settingsRes] = await Promise.all([
|
const [statsRes, settingsRes] = await Promise.all([
|
||||||
api.get('/traffic/interface-stats', opts),
|
api.get('/traffic/interface-stats', opts),
|
||||||
|
|||||||
Reference in New Issue
Block a user