Skip to content

Commit 5edb5d9

Browse files
Log Http/Ws request on error (#6091)
* Log Http request alongside HTTP error * Log WS request alongside WS error and improve http * lint
1 parent 25037ae commit 5edb5d9

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

packages/rpc-provider/src/http/index.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright 2017-2025 @polkadot/rpc-provider authors & contributors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
import type RpcError from '../coder/error.js';
45
import type { JsonRpcResponse, ProviderInterface, ProviderInterfaceCallback, ProviderInterfaceEmitCb, ProviderInterfaceEmitted, ProviderStats } from '../types.js';
56

67
import { logger, noop, stringify } from '@polkadot/util';
@@ -185,7 +186,18 @@ export class HttpProvider implements ProviderInterface {
185186
this.#stats.active.requests--;
186187
this.#stats.total.errors++;
187188

188-
throw e;
189+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
190+
const { method, params } = JSON.parse(body);
191+
192+
const rpcError: RpcError = e as RpcError;
193+
194+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
195+
const failedRequest = `\nFailed HTTP Request: ${JSON.stringify({ method, params })}`;
196+
197+
// Provide HTTP Request alongside the error
198+
rpcError.message = `${rpcError.message}${failedRequest}`;
199+
200+
throw rpcError;
189201
}
190202
}
191203

packages/rpc-provider/src/ws/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
import type { Class } from '@polkadot/util/types';
5+
import type RpcError from '../coder/error.js';
56
import type { EndpointStats, JsonRpcResponse, ProviderInterface, ProviderInterfaceCallback, ProviderInterfaceEmitCb, ProviderInterfaceEmitted, ProviderStats } from '../types.js';
67

78
import { EventEmitter } from 'eventemitter3';
@@ -372,7 +373,12 @@ export class WsProvider implements ProviderInterface {
372373
this.#endpointStats.errors++;
373374
this.#stats.total.errors++;
374375

375-
reject(error);
376+
const rpcError: RpcError = error as RpcError;
377+
const failedRequest = `\nFailed WS Request: ${JSON.stringify({ method, params })}`;
378+
379+
// Provide WS Request alongside the error
380+
rpcError.message = `${rpcError.message}${failedRequest}`;
381+
reject(rpcError);
376382
}
377383
});
378384
}

0 commit comments

Comments
 (0)