fixing high cpu usage after some time

retryinfo was not being updated and not being used by exchangeCheckRefresh pending operation
This commit is contained in:
Sebastian 2022-01-13 01:31:53 -03:00
parent 5eeb00e158
commit f6ec105b72
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1
2 changed files with 9 additions and 15 deletions

View File

@ -123,7 +123,7 @@ async function handleExchangeUpdateError(
): Promise<void> {
await ws.db
.mktx((x) => ({ exchanges: x.exchanges }))
.runReadOnly(async (tx) => {
.runReadWrite(async (tx) => {
const exchange = await tx.exchanges.get(baseUrl);
if (!exchange) {
return;
@ -131,6 +131,7 @@ async function handleExchangeUpdateError(
exchange.retryInfo.retryCounter++;
updateRetryInfoTimeout(exchange.retryInfo);
exchange.lastError = err;
await tx.exchanges.put(exchange)
});
if (err) {
ws.notify({ type: NotificationType.ExchangeOperationError, error: err });
@ -526,11 +527,11 @@ async function updateExchangeFromUrlImpl(
tosFound !== undefined
? tosFound
: await downloadExchangeWithTermsOfService(
baseUrl,
ws.http,
timeout,
"text/plain",
);
baseUrl,
ws.http,
timeout,
"text/plain",
);
let recoupGroupId: string | undefined = undefined;

View File

@ -51,25 +51,18 @@ async function gatherExchangePending(
resp: PendingOperationsResponse,
): Promise<void> {
await tx.exchanges.iter().forEachAsync(async (e) => {
let exchangeUpdateTimestampDue: Timestamp;
if (e.lastError) {
exchangeUpdateTimestampDue = e.retryInfo.nextRetry;
} else {
exchangeUpdateTimestampDue = e.nextUpdate;
}
resp.pendingOperations.push({
type: PendingTaskType.ExchangeUpdate,
givesLifeness: false,
timestampDue: exchangeUpdateTimestampDue,
timestampDue: e.lastError ? e.retryInfo.nextRetry : e.nextUpdate,
exchangeBaseUrl: e.baseUrl,
lastError: e.lastError,
});
resp.pendingOperations.push({
type: PendingTaskType.ExchangeCheckRefresh,
timestampDue: e.nextRefreshCheck,
timestampDue: e.lastError ? e.retryInfo.nextRetry : e.nextRefreshCheck,
givesLifeness: false,
exchangeBaseUrl: e.baseUrl,
});