Fix TailFile CRC file descriptor leak#23904
Draft
ArmentaRoberto wants to merge 2 commits into
Draft
Conversation
|
Contributor
Validation ReportAll 21 validations passed. Show details
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Fixes a file descriptor leak in
TailFile._open_fileby closing the temporary file handle used to compute the CRC for rotation/truncation detection before opening the persistent tail handle.Adds a regression test that tracks the CRC probe handle and verifies it is closed while the active tail handle remains open.
Motivation
TailFile._open_fileopened one file handle to read the CRC prefix, then opened a second handle for tailing. The CRC handle was never closed, so every reopen path could leak a descriptor. On long-running Agents tailing files through rotations, truncations, or periodic reopens, this can eventually exhaustulimit -nand cause unrelated I/O to fail withtoo many open files.Validation:
ddev -x test -fs datadog_checks_baseddev -x --no-interactive test datadog_checks_base -- -k tailfileddev -x --no-interactive test datadog_checks_basereached1475 passed, 40 skipped, then errored in Docker-backed Kerberos/SOCKS5 tests because local Docker is unavailable (dockerpoints at a missing Colima socket anddocker composeis not available in this environment).Review checklist (to be filled by reviewers)
qa/requiredif this PR needs QA validation, orqa/skip-qaif it does not. Exactly one of the two is required.backport/<branch-name>label to the PR and it will automatically open a backport PR once this one is merged