Skip to content

Handle NetBSD EFTYPE for replaced soft-RW protocol directories - #859

Merged
gaborbernat merged 3 commits into
tox-dev:mainfrom
edsonsims:fix/netbsd-soft-rw-eftype
Oct 18, 2026
Merged

gaborbernat merged 3 commits into
tox-dev:mainfrom
edsonsims:fix/netbsd-soft-rw-eftype

Conversation

@edsonsims

Copy link
Copy Markdown
Contributor

Treat NetBSD's EFTYPE from a refused no-follow protocol-directory open like the existing ELOOP/ENOTDIR cases, so soft reader/writer heartbeat reports lost ownership rather than a transient refresh error. The no-follow open and unrelated I/O error handling stay in place.

The two regression cases replace real protocol directories with symlinks, call the host's actual os.open, and translate its refusal to the documented NetBSD errno. They verify lost ownership and an untouched target. This addresses the protocol-tree classification subset of #858; native NetBSD is not tested here, and the rest of that report remains out of scope. See NetBSD open(2).

Validation on macOS arm64 / CPython 3.13.1:

  • Regression before: 2 failed, 3 passed; after: 5 passed.
  • Full tox 3.13: 2,787 passed, 163 skipped; 100% total and changed-line coverage.
  • Changed-file pre-commit, full Ty and Towncrier draft passed.

AI assistance was used for implementation, tests and documentation; verification and independent review were automated. This does not claim owner human study or human review.

edsonsims and others added 3 commits October 18, 2026 10:21
NetBSD cannot atomically exchange marker names, so stale recovery
leaves the marker in place. Gate takeover tests on that capability
and assert that the marker stays put.

NetBSD's /dev/fd lists only descriptors 0-63. Count up to the
process limit to avoid missing database probes in a busy suite.
@gaborbernat
gaborbernat enabled auto-merge (squash) October 18, 2026 16:47
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.

2 participants