Is it a known problem that `./pants cloc` seems to...
# general
j
Is it a known problem that
./pants cloc
seems to be broken in
pantsbuild/example-python
?
Copy code
12:58:13 (master) example-python$ ./pants cloc --print-exception-stacktrace helloworld/greet
timestamp: 2020-05-01T12:58:20.635255
Exception caught: (pants.option.errors.ParseError)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/bin/pants", line 8, in <module>
    sys.exit(main())
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 94, in main
    PantsLoader.run()
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 90, in run
    cls.load_and_execute(entrypoint)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 83, in load_and_execute
    entrypoint_main()
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_exe.py", line 33, in main
    runner.run(start_time)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_runner.py", line 100, in run
    runner = LocalPantsRunner.create(env=self.env, options_bootstrapper=options_bootstrapper)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/local_pants_runner.py", line 188, in create
    options.for_scope(scope)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/util/memo.py", line 123, in memoize
    result = func(*args, **kwargs)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/option/options.py", line 535, in for_scope
    self._parser_hierarchy.get_parser_by_scope(scope).parse_args(parse_args_request)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/option/parser.py", line 320, in parse_args
    levenshtein_max_distance=levenshtein_max_distance,
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/option/parser.py", line 394, in _raise_error_for_invalid_flag_names
    suggestions_message=suggestions_message,

Exception message: Unrecognized command line flags on scope 'cloc': --print-exception-stacktrace. Suggestions:
--print-exception-stacktrace: [--print-exception-stacktrace]
h
Try
./pants --print-exception-stacktrace cloc helloworld/greet
. This is https://github.com/pantsbuild/pants/issues/9627, which is a bad UX we need to improve
j
Copy code
13:02:15 (master) example-python$ ./pants --print-exception-stacktrace cloc helloworld/greet

timestamp: 2020-05-01T13:02:35.006189
Exception caught: (pants.engine.scheduler.ExecutionError)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/bin/pants", line 8, in <module>
    sys.exit(main())
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 94, in main
    PantsLoader.run()
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 90, in run
    cls.load_and_execute(entrypoint)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_loader.py", line 83, in load_and_execute
    entrypoint_main()
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_exe.py", line 33, in main
    runner.run(start_time)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/pants_runner.py", line 102, in run
    runner.run()
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/local_pants_runner.py", line 345, in run
    engine_result = self._maybe_run_v2(v2)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/bin/local_pants_runner.py", line 298, in _maybe_run_v2
    specs=self.specs,
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/init/engine_initializer.py", line 252, in run_goal_rules
    exit_code = self.scheduler_session.run_goal_rule(goal_product, params)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/engine/scheduler.py", line 522, in run_goal_rule
    self._trace_on_error([exc], request)
  File "/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/lib/python3.6/site-packages/pants/engine/scheduler.py", line 488, in _trace_on_error
    "{} encountered:\n{}".format(exception_noun, cumulative_trace), unique_exceptions,

Exception message: 1 Exception encountered:
Computing Select((<pants.engine.console.Console object at 0x1b91be83208>, AddressSpecs(dependencies=(SingleAddress(directory='helloworld/greet', name='greet'),), matcher=AddressSpecsMatcher(tags=(), exclude_patterns=())), OptionsBootstrapper(env_tuples=(), bootstrap_args=('--print-exception-stacktrace',), args=('/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/bin/pants', '--print-exception-stacktrace', 'cloc', 'helloworld/greet'), config=_ChainedConfig(chained_configs=(_SingleFileConfig(config_path='/Users/raul/dev/pantsbuild/example-python/pants.toml', content_digest='3384dc4210eec22a64daed36b974dc360713309a', values=_TomlValues(values={'GLOBAL': {'pants_version': '1.27.0.dev3', 'v1': False, 'v2': True, 'v2_ui': True, 'backend_packages': [], 'backend_packages2': ['pants.backend.python', 'pants.backend.python.lint.docformatter', 'pants.backend.python.lint.black', 'pants.backend.python.lint.flake8', 'pants.backend.python.lint.isort', 'pants.backend.awslambda.python'], 'plugins2': []}, 'source': {'source_roots': "{\n  '': ('python',),\n}"}, 'python-setup': {'interpreter_constraints': ['CPython>=3.7']}, 'DEFAULT': {'buildroot': '/Users/raul/dev/pantsbuild/example-python', 'homedir': '/Users/raul', 'user': 'raul', 'pants_bootstrapdir': '/Users/raul/.cache/pants', 'pants_configdir': '/Users/raul/.config/pants', 'pants_workdir': '/Users/raul/dev/pantsbuild/example-python/.pants.d', 'pants_supportdir': '/Users/raul/dev/pantsbuild/example-python/build-support', 'pants_distdir': '/Users/raul/dev/pantsbuild/example-python/dist'}})),)))), CountLinesOfCode)
  Computing Task(pants.rules.core.cloc:67:run_cloc(), (<pants.engine.console.Console object at 0x1b91be83208>, AddressSpecs(dependencies=(SingleAddress(directory='helloworld/greet', name='greet'),), matcher=AddressSpecsMatcher(tags=(), exclude_patterns=())), OptionsBootstrapper(env_tuples=(), bootstrap_args=('--print-exception-stacktrace',), args=('/Users/raul/.cache/pants/setup/bootstrap-Darwin-x86_64/1.27.0.dev3_py36/bin/pants', '--print-exception-stacktrace', 'cloc', 'helloworld/greet'), config=_ChainedConfig(chained_configs=(_SingleFileConfig(config_path='/Users/raul/dev/pantsbuild/example-python/pants.toml', content_digest='3384dc4210eec22a64daed36b974dc360713309a', values=_TomlValues(values={'GLOBAL': {'pants_version': '1.27.0.dev3', 'v1': False, 'v2': True, 'v2_ui': True, 'backend_packages': [], 'backend_packages2': ['pants.backend.python', 'pants.backend.python.lint.docformatter', 'pants.backend.python.lint.black', 'pants.backend.python.lint.flake8', 'pants.backend.python.lint.isort', 'pants.backend.awslambda.python'], 'plugins2': []}, 'source': {'source_roots': "{\n  '': ('python',),\n}"}, 'python-setup': {'interpreter_constraints': ['CPython>=3.7']}, 'DEFAULT': {'buildroot': '/Users/raul/dev/pantsbuild/example-python', 'homedir': '/Users/raul', 'user': 'raul', 'pants_bootstrapdir': '/Users/raul/.cache/pants', 'pants_configdir': '/Users/raul/.config/pants', 'pants_workdir': '/Users/raul/dev/pantsbuild/example-python/.pants.d', 'pants_supportdir': '/Users/raul/dev/pantsbuild/example-python/build-support', 'pants_distdir': '/Users/raul/dev/pantsbuild/example-python/dist'}})),)))), CountLinesOfCode, false)
    Computing Task(pants.engine.isolated_process:194:fallible_to_exec_result_or_raise(), ExecuteProcessRequest(argv=('/usr/bin/perl', './cloc', '--skip-uniqueness', '--ignored=ignored.txt', '--report-file=report.txt', '--list-file=input_files.txt'), input_files=Digest(fingerprint='7df5ec851a3f007aa9dd348ce4235d79a4569bb4bf849f9ac2996949bd8d40b5', serialized_bytes_length=255), description='cloc', working_directory=None, env=(), output_files=('report.txt', 'ignored.txt'), output_directories=(), timeout_seconds=900, unsafe_local_only_files_because_we_favor_speed_over_correctness_for_this_rule=Digest(fingerprint='e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', serialized_bytes_length=0), jdk_home=None, is_nailgunnable=False), ExecuteProcessResult, true)
      Computing Task(pants.engine.isolated_process:213:remove_platform_information(), ExecuteProcessRequest(argv=('/usr/bin/perl', './cloc', '--skip-uniqueness', '--ignored=ignored.txt', '--report-file=report.txt', '--list-file=input_files.txt'), input_files=Digest(fingerprint='7df5ec851a3f007aa9dd348ce4235d79a4569bb4bf849f9ac2996949bd8d40b5', serialized_bytes_length=255), description='cloc', working_directory=None, env=(), output_files=('report.txt', 'ignored.txt'), output_directories=(), timeout_seconds=900, unsafe_local_only_files_because_we_favor_speed_over_correctness_for_this_rule=Digest(fingerprint='e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', serialized_bytes_length=0), jdk_home=None, is_nailgunnable=False), FallibleExecuteProcessResult, true)
        Computing MultiPlatformExecuteProcess(MultiPlatformExecuteProcessRequest({(None, None): ExecuteProcessRequest { argv: ["/usr/bin/perl", "./cloc", "--skip-uniqueness", "--ignored=ignored.txt", "--report-file=report.txt", "--list-file=input_files.txt"], env: {}, working_directory: None, input_files: Digest(Fingerprint<7df5ec851a3f007aa9dd348ce4235d79a4569bb4bf849f9ac2996949bd8d40b5>, 255), output_files: {"ignored.txt", "report.txt"}, output_directories: {}, timeout: 900s, description: "cloc", unsafe_local_only_files_because_we_favor_speed_over_correctness_for_this_rule: Digest(Fingerprint<e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855>, 0), jdk_home: None, target_platform: None, is_nailgunnable: false }})
          Throw(Failed to execute process: Error launching process: Os { code: 24, kind: Other, message: "Too many open files" })
            Traceback (no traceback):
              <pants native internals>
            Exception: Failed to execute process: Error launching process: Os { code: 24, kind: Other, message: "Too many open files" }
New error
h
Hm. Try setting
ulimit -n 5000
. This happens because writing and reading to the cache results in more file handles than most systems’ default. I’ll add this to the troubleshooting page at https://pants.readme.io/docs/troubleshooting. If 5000 doesn’t do it, try something higher like 7500
j
Copy code
13:05:45 (master) example-python$ ulimit
unlimited
I'm on OS X.
👍 1
Yeah. I think it might be my machine because I got the same "Too many open files" when I ran
./pants roots helloworld/greet
(which I assume should just raise an error of some sort). Running
./pants roots
works.
Just tried it on another repo with 1.18.x and the
./pants roots target
just ignored target.
h
Hm, rather than
ulimit unlimited
, what about
ulimit -n 20000
. I think
ulimit unlimited
didn’t work for me on macOS for some reason, so I use
ulimit -n 20000
on my machine.
j
Ahh
That worked
❤️ 1
h
Awesome. I’m updating the docs with this now. Sorry about the issue and thanks for letting us know!
j
(talk about bad UI. When I ran
ulimit
I got back
unlimited
thinking maybe OS X was doing some magic with the ulimit. But no....
No problem.
I wonder if the error message could be made more user friendly.
💯 1
h
Great suggestion!
talk about bad UI. When I ran ulimit I got back unlimited
Yeah..I’ll include a warning about that in the docs
j
Thank you
h
https://github.com/pantsbuild/pants/issues/9678 to track a better error message