From 6c788ad91714781fd57b2b5d34c5c7e6a9146b25 Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 5 Nov 2019 16:53:15 +0800 Subject: [PATCH 1/3] update the split task package to prevent it hang --- packages/contract-cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contract-cli/package.json b/packages/contract-cli/package.json index 666aafda..05897024 100755 --- a/packages/contract-cli/package.json +++ b/packages/contract-cli/package.json @@ -55,7 +55,7 @@ "jsonql-utils": "^0.8.3", "kefir": "^3.8.6", "lodash": "^4.17.15", - "nb-split-tasks": "^0.5.1", + "nb-split-tasks": "^0.5.3", "yargs": "^14.2.0" }, "devDependencies": { -- Gitee From baa968ebc93b79da65ddd80f99ad8a1b4b081406 Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 5 Nov 2019 17:26:38 +0800 Subject: [PATCH 2/3] new function test passed --- packages/koa/package.json | 4 +-- packages/koa/src/contracts/get-contract.js | 41 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/koa/package.json b/packages/koa/package.json index 1398c1e3..e0b0750d 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -73,8 +73,8 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-constants": "^1.8.9", - "jsonql-contract": "^1.7.22", - "jsonql-errors": "^1.1.3", + "jsonql-contract": "^1.8.0", + "jsonql-errors": "^1.1.5", "jsonql-jwt": "^1.3.3", "jsonql-node-client": "^1.1.11", "jsonql-params-validator": "^1.4.11", diff --git a/packages/koa/src/contracts/get-contract.js b/packages/koa/src/contracts/get-contract.js index af4b50b6..ea0df9f1 100644 --- a/packages/koa/src/contracts/get-contract.js +++ b/packages/koa/src/contracts/get-contract.js @@ -2,6 +2,9 @@ // we are going to fork the process to lighten the load when it start import { fork } from 'child_process' import { join } from 'path' +import os from 'os' + +import { contractGenerator, readContract } from 'jsonql-contract/extra' import { getDebug } from '../utils' const debug = getDebug('contract-generator') @@ -14,6 +17,44 @@ let contractCache = {}; * @return {object} Promise to resolve the contract json */ export function getContract(config, pub = false) { + return getContractAction(config, pub) + if (os.cpus().length >= 8) { // at least a quad core + return forkGetContract(config, pub) + } + return getContractAction(config, pub) +} + +/** + * port back from run.js + * @param {object} config configuration + * @param {boolean} pub public or not + * @return {promise} resolve the contract + */ +function getContractAction(config, pub) { + return new Promise((resolver, rejecter) => { + if (config) { + let contract = readContract(config.contractDir, pub) + if (contract !== false) { + return resolver(contract) + } + contractGenerator(config, pub) + .then(contract => { + resolver(contract) + }) + .catch(error => { + rejecter(error) + }) + } + }) +} + +/** + * If we have enough cpu then call this one to get contract + * @param {object} config configuration + * @param {boolean} pub public or not + * @return {promise} resolve the contract + */ +function forkGetContract(config, pub) { const ps = fork(join(__dirname, 'run.js')) // @TODO this should not be hardcoded const key = pub ? 'public' : 'private'; -- Gitee From 6d8d38daa73094a24c2f6a881b38f3aacf53685d Mon Sep 17 00:00:00 2001 From: joelchu Date: Tue, 5 Nov 2019 17:28:03 +0800 Subject: [PATCH 3/3] jsonql-koa to 1.4.0 --- packages/koa/package.json | 2 +- packages/koa/src/contracts/get-contract.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/koa/package.json b/packages/koa/package.json index e0b0750d..3dce9f31 100644 --- a/packages/koa/package.json +++ b/packages/koa/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-koa", - "version": "1.3.11", + "version": "1.4.0", "description": "jsonql Koa middleware", "main": "main.js", "module": "index.js", diff --git a/packages/koa/src/contracts/get-contract.js b/packages/koa/src/contracts/get-contract.js index ea0df9f1..0a476f3e 100644 --- a/packages/koa/src/contracts/get-contract.js +++ b/packages/koa/src/contracts/get-contract.js @@ -17,7 +17,6 @@ let contractCache = {}; * @return {object} Promise to resolve the contract json */ export function getContract(config, pub = false) { - return getContractAction(config, pub) if (os.cpus().length >= 8) { // at least a quad core return forkGetContract(config, pub) } -- Gitee