Skip to content

[Bug?]: workspaces parallel don't work on node 16 #4018

Closed

Description

@mosinnik

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

await stdoutEnd;
await stderrEnd;
. And it will never happen cause 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.CMD

Additional context

No response

Activity

  1. mosinnik commented on Feb 2, 2022

    @mosinnik
    Author

    same to ubuntu 20.10

  2. changed the title [-][Bug?]: workspaces parallel don't work on win10[/-] [+][Bug?]: workspaces parallel don't work[/+] on Feb 2, 2022
  3. changed the title [-][Bug?]: workspaces parallel don't work[/-] [+][Bug?]: workspaces parallel don't work on node 16[/+] on Feb 2, 2022
  4. mosinnik commented on Feb 2, 2022

    @mosinnik
    Author

    node 12 is ok

  5. merceyz commented on Feb 2, 2022

    @merceyz
    Member

    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-tools
  6. mosinnik commented on Feb 3, 2022

    @mosinnik
    Author

    after reimport I got error:

    test@test:~/yarn_tst/balancer-v2-monorepo$ yarn set version berry
    ➤ YN0000: Downloading https://github.com/yarnpkg/berry/raw/master/packages/yarnpkg-cli/bin/yarn.js
    ➤ YN0001: Error: Invalid semver version
        at /home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:87536
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async a.mktempPromise (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:514978)
        at async Qe (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:87261)
        at async /home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:87122
        at async Function.start (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:389517)
        at async we.execute (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:86945)
        at async we.validateAndExecute (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:2:660570)
        at async Y.run (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:17:3854)
        at async Y.runExit (/home/test/yarn_tst/balancer-v2-monorepo/.yarn/releases/yarn-berry.cjs:17:4021)
    ➤ YN0000: Failed with errors in 1s 395ms
    test@test:~/yarn_tst/balancer-v2-monorepo$ yarn plugin import workspace-tools
    ➤ YN0000: Downloading https://github.com/yarnpkg/berry/raw/master/packages/plugin-workspace-tools/bin/%40yarnpkg/plugin-workspace-tools.js
    ➤ YN0000: Saving the new plugin in .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
    ➤ YN0000: Done in 0s 970ms
    test@test:~/yarn_tst/balancer-v2-monorepo$ yarn
    Usage Error: This plugin cannot access the package referenced via typanion which is neither a builtin, nor an exposed entry (when initializing @yarnpkg/plugin-workspace-tools, defined in /home/test/yarn_tst/balancer-v2-monorepo/.yarnrc.yml)
    
    Yarn Package Manager - 2.4.1
    
      $ yarn <command>
    
    You can also print more details about any of these commands by calling them
    after adding the `-h,--help` flag right after the command name.
    test@test:~/yarn_tst/balancer-v2-monorepo$
    
  7. merceyz commented on Feb 3, 2022

    @merceyz
    Member

    Right, we've fixed that issue in later versions but since you're on an old one you'll have to comment out the plugins value in .yarnrc.yml and import the plugins anew after running yarn set version berry.

  8. mosinnik commented on Feb 8, 2022

    @mosinnik
    Author

    yea, update work well for node 16

  9. Parasgr7 commented on Oct 9, 2022

    @Parasgr7

    Thanks @merceyz, it worked for me too!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingwaiting for feedbackWill autoclose in a while unless more data are provided

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions