rescript-compiler icon indicating copy to clipboard operation
rescript-compiler copied to clipboard

Freezing when too many files are present with "rescript format -all" command

Open JonoPrest opened this issue 1 year ago • 3 comments

How does the issue come about?

We have a codegenerator tool that outputs rescript files unformatted. It then runs rescript format -all without running rescript build which happens right at the end.

We have been able to reproduce it reliably on one of our devs machines using a simple test repo: https://github.com/enviodev/rescript-format-too-many-files

On his machine (M2 macbook), it seems to happen reliably when there are roughly > 65 .res files or so.

What we've found is that some user's shell environments will completely freeze. Even if you exit the the process, you can no longer run any other npx commands. (Even from a new shell).

Rescript versions tested: 10.1.4, 11.0.1 and 11.1.0-rc.4

Environment: So far we've only seen this reproduce with 2 users on M1 and M2 apple silicon macbooks.

Steps to reproduce:

  1. clone the repo
  2. install node modules
  3. run rescript format -all WITHOUT building

There is a shell script in the repo for generating more files if need be for testing.

If you build the code before running rescript format -all everything works as expected.

JonoPrest avatar Mar 18 '24 10:03 JonoPrest

@JonoPrest It seems rescript format runs the format for all files in parallel, see https://github.com/rescript-lang/rescript-compiler/blob/c7dedbbfdf89f9cfa01205f2850f82fbb77cb651/scripts/rescript_format.js#L79

This should be easy to solve by doing it in batches instead.

However, the question is this shouldn't rather go into rewatch. /cc @jfrolich @rolandpeelen

cknitt avatar May 29 '24 19:05 cknitt

@JonoPrest It seems rescript format runs the format for all files in parallel, see

https://github.com/rescript-lang/rescript-compiler/blob/c7dedbbfdf89f9cfa01205f2850f82fbb77cb651/scripts/rescript_format.js#L79

This should be easy to solve by doing it in batches instead.

However, the question is this shouldn't rather go into rewatch. /cc @jfrolich @rolandpeelen Happy to patch this if the script will still be used but I assume rewatch will handle it?

JonoPrest avatar May 30 '24 07:05 JonoPrest

Well, I think we could even have the fix in v11.1.2, so adapting the script might still be worthwhile.

fhammerschmidt avatar Jun 13 '24 10:06 fhammerschmidt