From 0f199264add045641d75e2d006093d15d40687ad Mon Sep 17 00:00:00 2001 From: Ian He <39037239+ianhe8x@users.noreply.github.com> Date: Thu, 14 Mar 2024 17:53:39 +1300 Subject: [PATCH] improve logging --- packages/network-support/src/fetch.ts | 6 ++++-- packages/network-support/src/orderManager.ts | 6 +++++- packages/network-support/test/fetch.test.ts | 18 ++++++++++-------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/packages/network-support/src/fetch.ts b/packages/network-support/src/fetch.ts index 203adc23..b1b0b3cc 100644 --- a/packages/network-support/src/fetch.ts +++ b/packages/network-support/src/fetch.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { OrderManager } from './orderManager'; -import { customFetch, generateUniqueId } from './utils'; +import { customFetch, generateUniqueId, Logger } from './utils'; import { ChannelState, OrderType } from './types'; import { ScoreType } from './scoreManager'; import { Base64 } from 'js-base64'; @@ -32,7 +32,8 @@ export class FetchError extends Error { export function createFetch( orderManager: OrderManager, - maxRetries = 5 + maxRetries = 5, + logger?: Logger ): (init: RequestInit) => Promise { let retries = 0; return async function fetch(init: RequestInit): Promise { @@ -84,6 +85,7 @@ export function createFetch( text: () => undefined, } as unknown as Response; } catch (e) { + logger?.warn(e); if (retries < maxRetries) { orderManager.updateScore(runner, ScoreType.RPC); retries += 1; diff --git a/packages/network-support/src/orderManager.ts b/packages/network-support/src/orderManager.ts index 9219c131..4a1787d8 100644 --- a/packages/network-support/src/orderManager.ts +++ b/packages/network-support/src/orderManager.ts @@ -263,7 +263,11 @@ export class OrderManager { return [body, state, '']; } default: - throw new Error('invalid X-Indexer-Response-Format'); + if (typeof payload === 'object' && (payload as any).code) { + throw new Error(JSON.stringify(payload)); + } else { + throw new Error('invalid X-Indexer-Response-Format'); + } } } diff --git a/packages/network-support/test/fetch.test.ts b/packages/network-support/test/fetch.test.ts index c4254c0a..1fb27782 100644 --- a/packages/network-support/test/fetch.test.ts +++ b/packages/network-support/test/fetch.test.ts @@ -20,14 +20,16 @@ describe('eth provider', () => { logger: mockLogger, responseFormat: ResponseFormat.Wrapped, }); - const fetch = createFetch(orderManager); + const fetch = createFetch(orderManager, 3, mockLogger); - const res = await fetch({ - body: JSON.stringify({ jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 1 }), - headers: { 'Content-Type': 'application/json' }, - method: 'post', - }); - expect(res).toBeTruthy(); - expect(await res.json()).toBeTruthy(); + for (let i = 0; i < 10; i++) { + const res = await fetch({ + body: JSON.stringify({ jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 1 }), + headers: { 'Content-Type': 'application/json' }, + method: 'post', + }); + expect(res).toBeTruthy(); + expect(await res.json()).toBeTruthy(); + } }, 30000); });