Added
Link Here
|
0 |
- |
1 |
Workaround for https://github.com/saltstack/salt/issues/64074 |
|
|
2 |
|
3 |
As of salt v3005, it's possible for a minion process to get irrecoverably |
4 |
wedged due to some restructuring in IPC. Namely, payloads that are to be |
5 |
reported back to the master are written over a UNIX socket by the very same |
6 |
thread that is expected to drain the socket's receive buffer. |
7 |
|
8 |
Smaller payloads are fine, but anything that exceeds FreeBSD's default receive |
9 |
buffer size (8KB) results in the process hanging in socket write for some buffer |
10 |
space that will never come. The most obvious way to identify a hung minion is |
11 |
a lingering zombie child, but it will more generally stop responding to |
12 |
salt-master. |
13 |
|
14 |
--- salt/ext/tornado/iostream.py.orig 2022-11-02 13:25:04 UTC |
15 |
+++ salt/ext/tornado/iostream.py |
16 |
@@ -1116,6 +1116,7 @@ class IOStream(BaseIOStream): |
17 |
future = self._connect_future = TracebackFuture() |
18 |
try: |
19 |
self.socket.connect(address) |
20 |
+ self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 524288) |
21 |
except socket.error as e: |
22 |
# In non-blocking mode we expect connect() to raise an |
23 |
# exception with EINPROGRESS or EWOULDBLOCK. |