From 6771f002a4098a262e7e1a55794eafefb058ce61 Mon Sep 17 00:00:00 2001 From: galargh Date: Tue, 6 Aug 2024 13:01:25 +0200 Subject: [PATCH 1/2] chore: do not send hardhat_setLedgerOutputEnabled over http --- .changeset/shaggy-bags-work.md | 5 +++++ .../src/internal/core/providers/http.ts | 9 +++++++++ .../test/internal/core/providers/http.ts | 17 ++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 .changeset/shaggy-bags-work.md diff --git a/.changeset/shaggy-bags-work.md b/.changeset/shaggy-bags-work.md new file mode 100644 index 0000000000..dde70b7039 --- /dev/null +++ b/.changeset/shaggy-bags-work.md @@ -0,0 +1,5 @@ +--- +"hardhat": patch +--- + +Do not send `http_setLedgerOutputEnabled` messages if they reacht the HTTP Provider to prevent unwanted warnings in the local hardhat node logs diff --git a/packages/hardhat-core/src/internal/core/providers/http.ts b/packages/hardhat-core/src/internal/core/providers/http.ts index 09add550c5..ee77af137b 100644 --- a/packages/hardhat-core/src/internal/core/providers/http.ts +++ b/packages/hardhat-core/src/internal/core/providers/http.ts @@ -86,6 +86,15 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider { } public async request(args: RequestArguments): Promise { + if (args.method === "hardhat_setLedgerOutputEnabled") { + const error = new ProviderError( + "hardhat_setLedgerOutputEnabled - Method not supported", + -32004 + ); + // eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error + throw error; + } + const jsonRpcRequest = this._getJsonRpcRequest( args.method, args.params as any[] diff --git a/packages/hardhat-core/test/internal/core/providers/http.ts b/packages/hardhat-core/test/internal/core/providers/http.ts index 11d2f156d4..2c92844672 100644 --- a/packages/hardhat-core/test/internal/core/providers/http.ts +++ b/packages/hardhat-core/test/internal/core/providers/http.ts @@ -1,10 +1,11 @@ -import { assert } from "chai"; +import { assert, expect } from "chai"; import { MockAgent, MockPool } from "undici"; import { HttpProvider } from "../../../../src/internal/core/providers/http"; import { ERRORS } from "../../../../src/internal/core/errors-list"; import { SuccessfulJsonRpcResponse } from "../../../../src/internal/util/jsonrpc"; import { expectHardhatError } from "../../../helpers/errors"; +import { ProviderError } from "../../../../src/internal/core/providers/errors"; const TOO_MANY_REQUEST_STATUS = 429; @@ -93,5 +94,19 @@ describe("HttpProvider", function () { assert.equal(result, successResponse.result); assert(tooManyRequestsReturned); }); + + it("should throw an error if it receives hardhat_setLedgerOutputEnabled as a method", async function () { + const mockPool = makeMockPool(url); + mockPool + .intercept({ method: "POST", path: "/" }) + .reply(200, successResponse); + const provider = new HttpProvider(url, networkName, {}, 20000, mockPool); + await expect( + provider.request({ method: "hardhat_setLedgerOutputEnabled" }) + ).to.be.eventually.rejectedWith( + ProviderError, + "hardhat_setLedgerOutputEnabled - Method not supported" + ); + }); }); }); From d144d839ea1945c11ec605d628a1ed6fb7afa6f4 Mon Sep 17 00:00:00 2001 From: Piotr Galar Date: Wed, 7 Aug 2024 16:40:58 +0200 Subject: [PATCH 2/2] chore: apply suggestions from code review --- .changeset/shaggy-bags-work.md | 2 +- packages/hardhat-core/src/internal/core/providers/http.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.changeset/shaggy-bags-work.md b/.changeset/shaggy-bags-work.md index dde70b7039..c5e8b1db7c 100644 --- a/.changeset/shaggy-bags-work.md +++ b/.changeset/shaggy-bags-work.md @@ -2,4 +2,4 @@ "hardhat": patch --- -Do not send `http_setLedgerOutputEnabled` messages if they reacht the HTTP Provider to prevent unwanted warnings in the local hardhat node logs +Do not send `http_setLedgerOutputEnabled` messages beyond the HTTP Provider to prevent unwanted warnings in the logs of the local hardhat node diff --git a/packages/hardhat-core/src/internal/core/providers/http.ts b/packages/hardhat-core/src/internal/core/providers/http.ts index ee77af137b..10cc8e0901 100644 --- a/packages/hardhat-core/src/internal/core/providers/http.ts +++ b/packages/hardhat-core/src/internal/core/providers/http.ts @@ -86,6 +86,8 @@ export class HttpProvider extends EventEmitter implements EIP1193Provider { } public async request(args: RequestArguments): Promise { + // This is a temporary fix to an issue with noisy warnings in the logs + // of a local node (#5406). This will be fixed in the next major release. if (args.method === "hardhat_setLedgerOutputEnabled") { const error = new ProviderError( "hardhat_setLedgerOutputEnabled - Method not supported",