Add a newline when writing the server state file
Before restarting haproxy, the amphora-agent dumps the state of the servers in a file, so when haproxy reloads, it can recover the operating state of its backends' members. But with haproxy 2.4 (in Centos 9 Stream), it fails with a "corrupted global server state file" error when reading this file. It seems that most recent haproxy releases have a more strict validation of the format of the file and ensure that it is terminated with a newline. This commit adds a newline to the file (all the responses to haproxy queries are stripped in the amphora-agent). It fixes the issue on Centos 9 Stream (and turns off a warning on Ubuntu). Story: 2010442 Task: 46873 Change-Id: I00e327e1d94e46aa13a38120df9865ec34eaa593
This commit is contained in:
parent
529f8e2f52
commit
e0d217665b
@ -160,7 +160,7 @@ class HAProxyQuery(object):
|
|||||||
result = self._query('show servers state')
|
result = self._query('show servers state')
|
||||||
# No need for binary mode, the _query converts bytes to ascii.
|
# No need for binary mode, the _query converts bytes to ascii.
|
||||||
with open(state_file_path, 'w', encoding='utf-8') as fh:
|
with open(state_file_path, 'w', encoding='utf-8') as fh:
|
||||||
fh.write(result)
|
fh.write(result + "\n")
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Catch any exception - may be socket issue, or write permission
|
# Catch any exception - may be socket issue, or write permission
|
||||||
|
@ -158,7 +158,7 @@ class QueryTestCase(base.TestCase):
|
|||||||
|
|
||||||
self.q.save_state(filename)
|
self.q.save_state(filename)
|
||||||
|
|
||||||
mock_fh.write.assert_called_once_with('DATA')
|
mock_fh.write.assert_called_once_with('DATA\n')
|
||||||
|
|
||||||
def test_save_state_error(self):
|
def test_save_state_error(self):
|
||||||
"""save_state() should swallow exceptions"""
|
"""save_state() should swallow exceptions"""
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Fixed a "corrupted global server state file" error in Centos 9 Stream when
|
||||||
|
reloading the state of the servers after restarting haproxy.
|
||||||
|
It also fixed the recovering of the operational state of the servers in
|
||||||
|
haproxy after its restart.
|
Loading…
Reference in New Issue
Block a user