vmui/logs: switched requests to sequential execution (#6624)

### Describe Your Changes

This PR changes `/select/logsql/query` and `/select/logsql/hits` to
execute sequentially
Fixed
https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6558#issuecomment-2219298984

### Checklist

The following checks are **mandatory**:

- [x] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
This commit is contained in:
Yury Molodov 2024-07-18 11:55:42 +02:00 committed by Aliaksandr Valialkin
parent 7eb24d98e1
commit be2a61c244
No known key found for this signature in database
GPG Key ID: 52C003EE2BCDB9EB
3 changed files with 13 additions and 7 deletions

View File

@ -48,9 +48,9 @@ const ExploreLogs: FC = () => {
const newPeriod = getPeriod();
setPeriod(newPeriod);
fetchLogs(newPeriod);
fetchLogHits(newPeriod);
fetchLogs(newPeriod).then((isSuccess) => {
isSuccess && fetchLogHits(newPeriod);
}).catch(e => e);
setSearchParamsFromKeys( {
query,
"g0.range_input": duration,
@ -90,7 +90,7 @@ const ExploreLogs: FC = () => {
onRun={handleRunQuery}
onChangeMarkdownParsing={handleChangeMarkdownParsing}
/>
{isLoading && <Spinner />}
{isLoading && <Spinner message={"Loading logs..."}/>}
{error && <Alert variant="error">{error}</Alert>}
{!error && (
<ExploreLogsBarChart

View File

@ -57,7 +57,10 @@ const ExploreLogsBarChart: FC<Props> = ({ logHits, period, error, isLoading }) =
"vm-block_mobile": isMobile,
})}
>
{isLoading && <Spinner containerStyles={{ position: "absolute" }}/>}
{isLoading && <Spinner
message={"Loading hits stats..."}
containerStyles={{ position: "absolute" }}
/>}
{!error && noDataMessage && (
<div className="vm-explore-logs-chart__empty">
<Alert variant="info">{noDataMessage}</Alert>

View File

@ -52,20 +52,23 @@ export const useFetchLogs = (server: string, query: string, limit: number) => {
setError(text);
setLogs([]);
setIsLoading(prev => ({ ...prev, [id]: false }));
return;
return false;
}
const lines = text.split("\n").filter(line => line).slice(0, limit);
const data = lines.map(parseLineToJSON).filter(line => line) as Logs[];
setLogs(data);
setIsLoading(prev => ({ ...prev, [id]: false }));
return true;
} catch (e) {
setIsLoading(prev => ({ ...prev, [id]: false }));
if (e instanceof Error && e.name !== "AbortError") {
setError(String(e));
console.error(e);
setLogs([]);
}
return false;
}
setIsLoading(prev => ({ ...prev, [id]: false }));
}, [url, query, limit]);
return {