Skip to content

too many open files #624

Closed
Closed
@ricardobeat

Description

@ricardobeat

When running revive over a medium size codebase (~1500 files) it occasionally hits the system file descriptor limit.

Originally we suspected Chrome eating up FDs, but this still happens even with no other software running on the system, and with high system wide limits set.

After some profiling it seems that revive will spawn a new goroutine for every file upon calling revive.Lint, all at the same time.

To Reproduce

/go/.bin/revive -formatter=stylish -config=.revive.toml ./cmd/... ./pkg/...
open pkg/service/flags/flags.go: too many open files
.revive.toml
ignoreGeneratedHeader = false
severity = "error"
confidence = 0.8
errorCode = 1

# https://github.com/mgechev/revive#available-rules
[rule.atomic]
[rule.blank-imports]
[rule.bool-literal-in-expr]
[rule.confusing-results]
[rule.constant-logical-expr]
[rule.context-keys-type]
[rule.dot-imports]
[rule.empty-block]
[rule.error-naming]
[rule.error-return]
[rule.errorf]
[rule.get-return]
[rule.if-return]
[rule.increment-decrement]
[rule.indent-error-flow]
[rule.modifies-parameter]
[rule.modifies-value-receiver]
[rule.range-val-address]
[rule.range-val-in-closure]
[rule.range]
[rule.receiver-naming]
[rule.redefines-builtin-id]
[rule.string-of-int]
[rule.struct-tag]
[rule.superfluous-else]
[rule.time-naming]
[rule.unexported-return]
[rule.unreachable-code]
[rule.var-declaration]
[rule.waitgroup-by-value]

Expected behavior

Should lint the full repo without incident.

Desktop:

  • OS: MacOS
  • go 1.17.5

I have a proposed solution - PR will follow.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions