From ea3d715510987b8cdc474f42eca98f3fe7cf4a6f Mon Sep 17 00:00:00 2001 From: Sebastijan K <58827427+sebastijankuzner@users.noreply.github.com> Date: Mon, 18 Jan 2021 03:53:00 +0100 Subject: [PATCH] chore(core-manager): await log generation on `log.download` (#4260) --- .../core-manager/server/server-boot-dispose.test.ts | 12 ++++++++++-- packages/core-manager/src/actions/log-download.ts | 2 +- packages/core-manager/src/server/server.ts | 9 ++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/__tests__/unit/core-manager/server/server-boot-dispose.test.ts b/__tests__/unit/core-manager/server/server-boot-dispose.test.ts index 56ad92d769..3976e013a1 100644 --- a/__tests__/unit/core-manager/server/server-boot-dispose.test.ts +++ b/__tests__/unit/core-manager/server/server-boot-dispose.test.ts @@ -10,9 +10,9 @@ import { defaults } from "@packages/core-manager/src/defaults"; let sandbox: Sandbox; let server: Server; -let pluginsConfiguration = defaults.plugins; +const pluginsConfiguration = defaults.plugins; -let logger = { +const logger = { info: jest.fn(), notice: jest.fn(), error: jest.fn(), @@ -20,6 +20,13 @@ let logger = { let mockStart = jest.fn(); let mockStop = jest.fn(); +const mockJsonRPCRoute = { + method: "post", + path: "/", + settings: { + timeout: {}, + }, +}; jest.mock("@hapi/hapi", () => { return { @@ -32,6 +39,7 @@ jest.mock("@hapi/hapi", () => { register: jest.fn(), start: jest.fn().mockImplementation(mockStart), stop: jest.fn().mockImplementation(mockStop), + table: jest.fn().mockReturnValue([mockJsonRPCRoute]), }; }), }; diff --git a/packages/core-manager/src/actions/log-download.ts b/packages/core-manager/src/actions/log-download.ts index 52082d87a1..8c16b81816 100644 --- a/packages/core-manager/src/actions/log-download.ts +++ b/packages/core-manager/src/actions/log-download.ts @@ -49,7 +49,7 @@ export class Action implements Actions.Action { throw new Error("Previous log generation is still in progress."); } - this.workerManager.generateLog( + await this.workerManager.generateLog( this.database.getDBFilePath(), this.database.getSchema(), this.prepareQueryConditions(params), diff --git a/packages/core-manager/src/server/server.ts b/packages/core-manager/src/server/server.ts index 35064f4d00..1e1bb39781 100644 --- a/packages/core-manager/src/server/server.ts +++ b/packages/core-manager/src/server/server.ts @@ -1,5 +1,5 @@ import { Container, Contracts, Types } from "@arkecosystem/core-kernel"; -import { Server as HapiServer, ServerInjectOptions, ServerInjectResponse } from "@hapi/hapi"; +import { Server as HapiServer, ServerInjectOptions, ServerInjectResponse, ServerRoute } from "@hapi/hapi"; import { readFileSync } from "fs"; import { Plugins } from "../contracts"; @@ -26,6 +26,9 @@ export class Server { this.server.app.app = this.app; await this.server.register(this.pluginFactory.preparePlugins()); + + // Disable 2 minute socket timout + this.getRoute("POST", "/").settings.timeout.socket = false; } public async register(plugins: any | any[]): Promise { @@ -68,4 +71,8 @@ export class Server { return options; } + + private getRoute(method: string, path: string): ServerRoute | undefined { + return this.server.table().find((route) => route.method === method.toLowerCase() && route.path === path); + } }