Repository navigation
[Bug?]: workspaces parallel don't work on node 16 #4018
Description
Self-service
- I'd be willing to implement a fix
Describe the bug
Found when building another project and have created issue there: balancer/balancer-v2-monorepo#1094
So dup here:
Try run tests from current master (commit a8dff26dc9485bb338e32b6fe0b532a72309427c from https://github.com/balancer-labs/balancer-v2-monorepo/) but got error:
$ yarn test
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: sortTokens
➤ YN0000: [@balancer-labs/balancer-js]: when provided only tokens
➤ YN0000: [@balancer-labs/balancer-js]: when provided only ERC20s
➤ YN0000: [@balancer-labs/balancer-js]: √ sorts the tokens in ascending order
➤ YN0000: [@balancer-labs/balancer-js]: when provided a mix of ERC20s and ETH
➤ YN0000: [@balancer-labs/balancer-js]: √ sorts ETH as if it were WETH
➤ YN0000: [@balancer-labs/balancer-js]: when provided additional arrays
➤ YN0000: [@balancer-labs/balancer-js]: √ sorts the tokens in ascending order
➤ YN0000: [@balancer-labs/balancer-js]: √ maintains relative ordering with tokens array
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: 4 passing (25ms)
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/v2-deployments]: Running normal tests...
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]: StablePoolFactory
➤ YN0000: [@balancer-labs/v2-deployments]: with no previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]: when forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ deploys a stable pool factory (1161ms)
➤ YN0000: [@balancer-labs/v2-deployments]: when not forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ deploys a stable pool factory (125ms)
➤ YN0000: [@balancer-labs/v2-deployments]: with a previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]: when forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ re-deploys the stable pool factory (274ms)
➤ YN0000: [@balancer-labs/v2-deployments]: when not forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ does not re-deploys the stable pool factory (58ms)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]: MetaStablePoolFactory
➤ YN0000: [@balancer-labs/v2-deployments]: with no previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]: when forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ deploys a meta stable pool factory (652ms)
➤ YN0000: [@balancer-labs/v2-deployments]: when not forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ deploys a meta stable pool factory (361ms)
➤ YN0000: [@balancer-labs/v2-deployments]: with a previous deploy
➤ YN0000: [@balancer-labs/v2-deployments]: when forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ re-deploys the meta stable pool factory (225ms)
➤ YN0000: [@balancer-labs/v2-deployments]: when not forced
➤ YN0000: [@balancer-labs/v2-deployments]: √ does not re-deploys the meta stable pool factory (150ms)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-deployments]: 8 passing (3s)
➤ YN0000: [@balancer-labs/v2-deployments]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Nothing to compile
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Aave Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: claimRewards
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 1) "before each" hook: set up asset manager at step "Running shared before each or reverting" for "sends expected amount of stkAave to the rewards contract"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: RebalancingRelayer
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: vault
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 2) "before each" hook: deploy relayer at step "Running shared before each or reverting" for "uses the given vault"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Rewards Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: deployment
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 3) "before each" hook: set up asset manager at step "Running shared before each or reverting" for "different managers can be set for different tokens"
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 0 passing (581ms)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 3 failing
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 1) Aave Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: "before each" hook: set up asset manager at step "Running shared before each or reverting" for "sends expected amount of stkAave to the rewards contract":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at async Promise.all (index 0)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at TokensDeployer.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:22:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at setup (test\AaveATokenAssetManager.test.ts:24:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (test\AaveATokenAssetManager.test.ts:112:27)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 2) RebalancingRelayer
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: "before each" hook: deploy relayer at step "Running shared before each or reverting" for "uses the given vault":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at TokensDeployer.deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (test\RebalancingRelayer.test.ts:30:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: 3) Rewards Asset manager
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: "before each" hook: set up asset manager at step "Running shared before each or reverting" for "different managers can be set for different tokens":
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: HardhatError: HH700: Artifact for contract "TestToken" not found.
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._handleWrongArtifactForContractName (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:478:11)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPathFromFiles (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:592:19)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts._getArtifactPath (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:275:17)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Artifacts.readArtifact (E:\git\balancer\balancer-v2-monorepo\node_modules\hardhat\src\internal\artifacts.ts:58:26)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Object.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\contract.ts:31:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at deployToken (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:33:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at async Promise.all (index 0)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at TokensDeployer.deploy (E:\git\balancer\balancer-v2-monorepo\pvt\helpers\src\models\tokens\TokensDeployer.ts:22:20)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at setup (test\RewardsAssetManager.test.ts:23:18)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (test\RewardsAssetManager.test.ts:79:33)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: at Context.<anonymous> (E:\git\balancer\balancer-v2-monorepo\pvt\common\sharedBeforeEach.ts:32:7)
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]:
Any suggestions how to fix this?
Win10, mingw64, node 16.13, npm 8.1.4, yarn 2.4.1. Same error when run tests under WSL.
Building output in win:
$ yarn build
➤ YN0000: [@balancer-labs/v2-deployments]: ../../pvt/common/setupTests.ts(7,32): error TS2307: Cannot find module '@balancer-labs/balancer-js' or its corresponding type declarations.
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: src/index.ts → dist/index.umd.js, dist/index.js, dist/index.esm.js...
➤ YN0000: [@balancer-labs/balancer-js]: (!) Missing global variable names
➤ YN0000: [@balancer-labs/balancer-js]: Use output.globals to specify browser global variable names corresponding to external modules
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/abi (guessing 'abi')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/constants (guessing 'constants')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/bignumber (guessing 'bignumber')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/bytes (guessing 'bytes')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/abstract-signer (guessing 'abstractSigner')
➤ YN0000: [@balancer-labs/balancer-js]: @ethersproject/address (guessing 'address')
➤ YN0000: [@balancer-labs/balancer-js]: created dist/index.umd.js, dist/index.js, dist/index.esm.js in 1.9s
➤ YN0000: [@balancer-labs/balancer-js]:
➤ YN0000: [@balancer-labs/balancer-js]: src/index.ts → dist/index.d.ts...
➤ YN0000: [@balancer-labs/balancer-js]: created dist/index.d.ts in 1.1s
➤ YN0000: [@balancer-labs/v2-asset-manager-utils]: Nothing to compile
after some debugging found that running locked at
berry/packages/plugin-workspace-tools/sources/commands/foreach.ts
Lines 248 to 249 in b8d1676
| await stdoutEnd; | |
| await stderrEnd; |
finish event never emitted on cli.run. (at least on win10 and wsl). But stdout and stderr streams ended, so wrapping by ifs it works now.
if(!stdout._writableState.ended) {
await stdoutEnd;
}
if(!stderr._writableState.ended) {
await stderrEnd;
}
But cleaning and restoring plugin-workspace-tools.cjs will lost my changes and need another workaround
To reproduce
clone https://github.com/balancer-labs/balancer-v2-monorepo
run yarn
run yarn build - it will build only half of core count modules and stop
also instead of yarn build may be run same command that only show path for each module
yarn workspaces foreach -vpi -j 3 exec pwd
, where j should be smaller than module count
Environment
System:
OS: Windows 10 10.0.19044
CPU: (6) x64 Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz
Binaries:
Node: 16.13.0 - ~\AppData\Local\Temp\xfs-183b2709\node.EXE
Yarn: 2.4.3 - ~\AppData\Local\Temp\xfs-183b2709\yarn.EXE
npm: 8.1.4 - ~\AppData\Roaming\npm\npm.CMDAdditional context
No response
Activity
mosinnik commentedon Feb 2, 2022
same to ubuntu 20.10
[-][Bug?]: workspaces parallel don't work on win10[/-][+][Bug?]: workspaces parallel don't work[/+][-][Bug?]: workspaces parallel don't work[/-][+][Bug?]: workspaces parallel don't work on node 16[/+]mosinnik commentedon Feb 2, 2022
node 12 is ok
merceyz commentedon Feb 2, 2022
Seems like a duplicate of #2074 which was fixed in #2255, please updated to the latest version of Yarn.
yarn set version berry yarn plugin import workspace-toolsmosinnik commentedon Feb 3, 2022
after reimport I got error:
merceyz commentedon Feb 3, 2022
Right, we've fixed that issue in later versions but since you're on an old one you'll have to comment out the
pluginsvalue in.yarnrc.ymland import the plugins anew after runningyarn set version berry.mosinnik commentedon Feb 8, 2022
yea, update work well for node 16
Parasgr7 commentedon Oct 9, 2022
Thanks @merceyz, it worked for me too!