Skip to content

pwalk, pwalkdir: fix walk vs remove race#204

Merged
rhatdan merged 2 commits intoopencontainers:mainfrom
kolyshkin:fix-race
Sep 8, 2023
Merged

pwalk, pwalkdir: fix walk vs remove race#204
rhatdan merged 2 commits intoopencontainers:mainfrom
kolyshkin:fix-race

Conversation

@kolyshkin
Copy link
Copy Markdown
Collaborator

In some cases, when file walk is racing with removal, the ENOENT is
received by filepath.Walk[Dir], rather than by the callback.

Do ignore such errors, except for the root directory (Walk argument).

Modify the doc accordingly, and add a couple of test cases.

The "Race" test case, when testing the code before the fix, fails 100%
of times for pwalk and 90% for pwalkdir. Alas, I was unable to make it
fail 100% of the times without significantly increasing the test
complexity.

Fixes: #199

@rhatdan
Copy link
Copy Markdown
Collaborator

rhatdan commented Aug 26, 2023

LGTM
This is one where the tests probably took 10 times as much time to write as the fix.
@thaJeztah PTAL

rhatdan
rhatdan previously approved these changes Aug 26, 2023
thaJeztah
thaJeztah previously approved these changes Aug 26, 2023
Copy link
Copy Markdown
Member

@thaJeztah thaJeztah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall LGTM (nice!), but found 2 redundant defers, and left a suggestion.

don't think they're necessarily show-stoppers, but I'll let @kolyshkin have a look before merging 👍

Use t.Helper and t.Cleanup in prepareTestSet to simplify tests setup and
cleanup (no need to call defer os.Remove or check error).

Signed-off-by: Kir Kolyshkin <[email protected]>
In some cases, when file walk is racing with removal, the ENOENT is
received by filepath.Walk[Dir], rather than by the callback.

Do ignore such errors, except for the root directory (Walk argument).

Modify the doc accordingly, and add a couple of test cases.

The "Race" test case, when testing the code before the fix, fails 100%
of times for pwalk and 90% for pwalkdir. Alas, I was unable to make it
fail 100% of the times without significantly increasing the test
complexity.

Fixes: 199

Signed-off-by: Kir Kolyshkin <[email protected]>
Copy link
Copy Markdown
Member

@thaJeztah thaJeztah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@rhatdan PTAL

@rhatdan rhatdan merged commit 1b71cb4 into opencontainers:main Sep 8, 2023
project-mirrors-bot-tu bot pushed a commit to project-mirrors/forgejo-runner-as-gitea-act-runner-fork that referenced this pull request Aug 3, 2025
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [github.com/opencontainers/selinux](https://github.com/opencontainers/selinux) | `v1.11.0` -> `v1.12.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fopencontainers%2fselinux/v1.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fopencontainers%2fselinux/v1.11.0/v1.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>opencontainers/selinux (github.com/opencontainers/selinux)</summary>

### [`v1.12.0`](https://github.com/opencontainers/selinux/releases/tag/v1.12.0)

[Compare Source](opencontainers/selinux@v1.11.1...v1.12.0)

This release removes deprecated functions from the `label` package,
and improves documentation and error reporting of `SetCreateKey`.

#### What's Changed

- VERSION: remove by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#217
- CI: add AlmaLinux 8, CentOS Stream 9, and Fedora by [@&#8203;AkihiroSuda](https://github.com/AkihiroSuda) in opencontainers/selinux#221
- ci: install git-core by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#224
- CI: add openSUSE Tumbleweed by [@&#8203;AkihiroSuda](https://github.com/AkihiroSuda) in opencontainers/selinux#223
- Bump Go version, deps, fix some linter issues... by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#218
- label: remove deprecated stuff by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#228
- Improve SetKeyCreate error reporting, fix test flakes by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#227

**Full Changelog**: opencontainers/selinux@v1.11.1...v1.12.0

### [`v1.11.1`](https://github.com/opencontainers/selinux/releases/tag/v1.11.1)

[Compare Source](opencontainers/selinux@v1.11.0...v1.11.1)

#### What's Changed

- Bump to v1.11.0 by [@&#8203;rhatdan](https://github.com/rhatdan) in opencontainers/selinux#197
- fix some error by [@&#8203;ningmingxiao](https://github.com/ningmingxiao) in opencontainers/selinux#200
- ci: update Go 1.21 support by [@&#8203;michalbiesek](https://github.com/michalbiesek) in opencontainers/selinux#202
- Extend `build-cross` target with `riscv64` arch by [@&#8203;michalbiesek](https://github.com/michalbiesek) in opencontainers/selinux#201
- Remove nolint annotations for unix errno comparisons by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#203
- ci: bump some actions by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#205
- Misc nitpicks by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#206
- pwalk, pwalkdir: fix walk vs remove race by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#204
- Update GitHub Actions CI Go matrix for Go v1.22 by [@&#8203;austinvazquez](https://github.com/austinvazquez) in opencontainers/selinux#209
- Update GitHub Actions packages to resolve deprecation warnings. by [@&#8203;austinvazquez](https://github.com/austinvazquez) in opencontainers/selinux#208
- Add dependabot config by [@&#8203;kolyshkin](https://github.com/kolyshkin) in opencontainers/selinux#210
- build(deps): bump tim-actions/get-pr-commits from 1.3.0 to 1.3.1 by [@&#8203;dependabot](https://github.com/dependabot) in opencontainers/selinux#211
- build(deps): bump golangci/golangci-lint-action from 4 to 6 by [@&#8203;dependabot](https://github.com/dependabot) in opencontainers/selinux#213
- Show SELinux label on failure by [@&#8203;rhatdan](https://github.com/rhatdan) in opencontainers/selinux#216

#### New Contributors

- [@&#8203;ningmingxiao](https://github.com/ningmingxiao) made their first contribution in opencontainers/selinux#200
- [@&#8203;michalbiesek](https://github.com/michalbiesek) made their first contribution in opencontainers/selinux#202
- [@&#8203;dependabot](https://github.com/dependabot) made their first contribution in opencontainers/selinux#211

**Full Changelog**: opencontainers/selinux@v1.11.0...v1.11.1

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40My41IiwidXBkYXRlZEluVmVyIjoiNDEuNDMuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/801
Reviewed-by: earl-warren <[email protected]>
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Request: add error handling in pkg/pwalk

3 participants