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')
|
||||
# No need for binary mode, the _query converts bytes to ascii.
|
||||
with open(state_file_path, 'w', encoding='utf-8') as fh:
|
||||
fh.write(result)
|
||||
fh.write(result + "\n")
|
||||
return True
|
||||
except Exception as e:
|
||||
# Catch any exception - may be socket issue, or write permission
|
||||
|
@ -158,7 +158,7 @@ class QueryTestCase(base.TestCase):
|
||||
|
||||
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):
|
||||
"""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