Bug 271367

Summary: sysutils/py-salt: workaround a hanging minion bug
Product: Ports & Packages Reporter: Kyle Evans <kevans>
Component: Individual Port(s)Assignee: Kirill Ponomarev <krion>
Status: Closed FIXED    
Severity: Affects Only Me CC: asomers, brd, jsollvander, kevans
Priority: --- Flags: bugzilla: maintainer-feedback? (krion)
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
git(1) diff against the ports tree none

Description Kyle Evans freebsd_committer freebsd_triage 2023-05-11 18:11:21 UTC
Created attachment 242124 [details]
git(1) diff against the ports tree

From the commit:

```
    sysutils/py-salt: workaround a hanging minion issue
    
    From the patch description:
    
    --
    Workaround for https://github.com/saltstack/salt/issues/64074
    
    As of salt v3005, it's possible for a minion process to get
    irrecoverably wedged due to some restructuring in IPC.  Namely, payloads
    that are to be reported back to the master are written over a UNIX
    socket by the very same thread that is expected to drain the socket's
    receive buffer.
    
    Smaller payloads are fine, but anything that exceeds FreeBSD's default
    receive buffer size (8KB) results in the process hanging in socket write
    for some buffer space that will never come.  The most obvious way to
    identify a hung minion is a lingering zombie child, but it will more
    generally stop responding to salt-master.
    --
    
    The workaround is to simply bump the receive buffer size so that the
    vast majority of payloads won't trigger it.  This code likely requires
    some restructuring upstream to avoid writing to a pipe that the same
    thread is responsible for draining.
    
    Submitted by:   Johan Söllvander <jsollvander_axcient.com>
```

The patch was written by Axcient, I've only added a general description atop the patch. Attached patch is in a format accepted by `git am`.
Comment 1 Alan Somers freebsd_committer freebsd_triage 2023-05-11 18:55:46 UTC
LGTM, but you should probably s/_/@/ in the commit message.
Comment 2 Kyle Evans freebsd_committer freebsd_triage 2023-05-11 19:13:55 UTC
(In reply to Alan Somers from comment #1)

I've been yelled at both for obfuscating e-mail addresses in commit messages and not obfuscating e-mail addresses in commit messages... thinking about it, though, we wouldn't obfuscate it I set him to --author (which I didn't, in this case, so that he wouldn't be blamed for inaccuracies in the wording I added around it), so perhaps de-obfuscation is just the way to go.
Comment 3 commit-hook freebsd_committer freebsd_triage 2023-05-16 11:56:37 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0d7e53d13126b21df43ab7dfd726844feaff58ac

commit 0d7e53d13126b21df43ab7dfd726844feaff58ac
Author:     Kirill Ponomarev <krion@FreeBSD.org>
AuthorDate: 2023-05-16 11:53:29 +0000
Commit:     Kirill Ponomarev <krion@FreeBSD.org>
CommitDate: 2023-05-16 11:53:29 +0000

    sysutils/py-salt: Increase receive buffer size to prevent a hanging minion

    PR:             271367
    Reported by:    Johan Söllvander <jsollvander_axcient_dot_com>, kevans

 sysutils/py-salt/Makefile                                      |  2 +-
 .../py-salt/files/patch-salt_ext_tornado_iostream.py (new)     | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)
Comment 4 commit-hook freebsd_committer freebsd_triage 2023-05-16 11:56:38 UTC
A commit in branch 2023Q2 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=22e3c4c9124f0d2759d2e7b8358efdf128fa887e

commit 22e3c4c9124f0d2759d2e7b8358efdf128fa887e
Author:     Kirill Ponomarev <krion@FreeBSD.org>
AuthorDate: 2023-05-16 11:53:29 +0000
Commit:     Kirill Ponomarev <krion@FreeBSD.org>
CommitDate: 2023-05-16 11:56:01 +0000

    sysutils/py-salt: Increase receive buffer size to prevent a hanging minion

    PR:             271367
    Reported by:    Johan Söllvander <jsollvander_axcient_dot_com>, kevans

    (cherry picked from commit 0d7e53d13126b21df43ab7dfd726844feaff58ac)

 sysutils/py-salt/Makefile                                      |  2 +-
 .../py-salt/files/patch-salt_ext_tornado_iostream.py (new)     | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)