Reduce verbosity of smartprovider logging (#3084)

pull/3089/head
J M Rossy 11 months ago committed by GitHub
parent d18f7ae8e1
commit 1918560609
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      typescript/sdk/src/providers/SmartProvider/HyperlaneEtherscanProvider.ts
  2. 8
      typescript/sdk/src/providers/SmartProvider/HyperlaneJsonRpcProvider.ts
  3. 25
      typescript/sdk/src/providers/SmartProvider/SmartProvider.ts
  4. 1
      typescript/sdk/src/providers/SmartProvider/types.ts

@ -30,6 +30,7 @@ export class HyperlaneEtherscanProvider
constructor( constructor(
public readonly explorerConfig: BlockExplorer, public readonly explorerConfig: BlockExplorer,
network: providers.Networkish, network: providers.Networkish,
public readonly options?: { debug?: boolean },
) { ) {
super(network, explorerConfig.apiKey); super(network, explorerConfig.apiKey);
if (!explorerConfig.apiKey) { if (!explorerConfig.apiKey) {
@ -80,9 +81,10 @@ export class HyperlaneEtherscanProvider
const hostname = this.getHostname(); const hostname = this.getHostname();
let waitTime = this.getQueryWaitTime(); let waitTime = this.getQueryWaitTime();
while (waitTime > 0) { while (waitTime > 0) {
this.logger( if (this.options?.debug)
`HyperlaneEtherscanProvider waiting ${waitTime}ms to avoid rate limit`, this.logger(
); `HyperlaneEtherscanProvider waiting ${waitTime}ms to avoid rate limit`,
);
await sleep(waitTime); await sleep(waitTime);
waitTime = this.getQueryWaitTime(); waitTime = this.getQueryWaitTime();
} }
@ -92,9 +94,10 @@ export class HyperlaneEtherscanProvider
} }
async perform(method: string, params: any, reqId?: number): Promise<any> { async perform(method: string, params: any, reqId?: number): Promise<any> {
this.logger( if (this.options?.debug)
`HyperlaneEtherscanProvider performing method ${method} for reqId ${reqId}`, this.logger(
); `HyperlaneEtherscanProvider performing method ${method} for reqId ${reqId}`,
);
if (!this.supportedMethods.includes(method as ProviderMethod)) if (!this.supportedMethods.includes(method as ProviderMethod))
throw new Error(`Unsupported method ${method}`); throw new Error(`Unsupported method ${method}`);

@ -23,14 +23,16 @@ export class HyperlaneJsonRpcProvider
constructor( constructor(
public readonly rpcConfig: RpcConfigWithConnectionInfo, public readonly rpcConfig: RpcConfigWithConnectionInfo,
network: providers.Networkish, network: providers.Networkish,
public readonly options?: { debug?: boolean },
) { ) {
super(rpcConfig.connection ?? rpcConfig.http, network); super(rpcConfig.connection ?? rpcConfig.http, network);
} }
async perform(method: string, params: any, reqId?: number): Promise<any> { async perform(method: string, params: any, reqId?: number): Promise<any> {
this.logger( if (this.options?.debug)
`HyperlaneJsonRpcProvider performing method ${method} for reqId ${reqId}`, this.logger(
); `HyperlaneJsonRpcProvider performing method ${method} for reqId ${reqId}`,
);
if (method === ProviderMethod.GetLogs) { if (method === ProviderMethod.GetLogs) {
return this.performGetLogs(params); return this.performGetLogs(params);
} }

@ -195,7 +195,6 @@ export class HyperlaneSmartProvider
// Trigger the next provider in line // Trigger the next provider in line
if (pIndex < providers.length) { if (pIndex < providers.length) {
const provider = providers[pIndex]; const provider = providers[pIndex];
const providerUrl = provider.getBaseUrl();
const isLastProvider = pIndex === providers.length - 1; const isLastProvider = pIndex === providers.length - 1;
// Skip the explorer provider if it's currently in a cooldown period // Skip the explorer provider if it's currently in a cooldown period
@ -211,7 +210,7 @@ export class HyperlaneSmartProvider
const resultPromise = this.wrapProviderPerform( const resultPromise = this.wrapProviderPerform(
provider, provider,
providerUrl, pIndex,
method, method,
params, params,
reqId, reqId,
@ -225,7 +224,7 @@ export class HyperlaneSmartProvider
return result.value; return result.value;
} else if (result.status === ProviderStatus.Timeout) { } else if (result.status === ProviderStatus.Timeout) {
this.logger( this.logger(
`Slow response from provider using ${providerUrl}.${ `Slow response from provider #${pIndex}.${
!isLastProvider ? ' Triggering next provider.' : '' !isLastProvider ? ' Triggering next provider.' : ''
}`, }`,
); );
@ -233,7 +232,7 @@ export class HyperlaneSmartProvider
pIndex += 1; pIndex += 1;
} else if (result.status === ProviderStatus.Error) { } else if (result.status === ProviderStatus.Error) {
this.logger( this.logger(
`Error from provider using ${providerUrl}.${ `Error from provider #${pIndex}.${
!isLastProvider ? ' Triggering next provider.' : '' !isLastProvider ? ' Triggering next provider.' : ''
}`, }`,
); );
@ -283,22 +282,24 @@ export class HyperlaneSmartProvider
// Warp for additional logging and error handling // Warp for additional logging and error handling
protected async wrapProviderPerform( protected async wrapProviderPerform(
provider: HyperlaneProvider, provider: HyperlaneProvider,
providerUrl: string, pIndex: number,
method: string, method: string,
params: any, params: any,
reqId: number, reqId: number,
): Promise<ProviderPerformResult> { ): Promise<ProviderPerformResult> {
try { try {
this.logger( if (this.options?.debug)
`Provider using ${providerUrl} performing method ${method} for reqId ${reqId}`, this.logger(
); `Provider #${pIndex} performing method ${method} for reqId ${reqId}`,
);
const result = await provider.perform(method, params, reqId); const result = await provider.perform(method, params, reqId);
return { status: ProviderStatus.Success, value: result }; return { status: ProviderStatus.Success, value: result };
} catch (error) { } catch (error) {
this.logger( if (this.options?.debug)
`Error performing ${method} on provider ${providerUrl} for reqId ${reqId}`, this.logger(
error, `Error performing ${method} on provider #${pIndex} for reqId ${reqId}`,
); error,
);
return { status: ProviderStatus.Error, error }; return { status: ProviderStatus.Error, error };
} }
} }

@ -50,4 +50,5 @@ export interface ProviderRetryOptions {
export interface SmartProviderOptions extends ProviderRetryOptions { export interface SmartProviderOptions extends ProviderRetryOptions {
// The time to wait before attempting the next provider // The time to wait before attempting the next provider
fallbackStaggerMs?: number; fallbackStaggerMs?: number;
debug?: boolean;
} }

Loading…
Cancel
Save