patronictl failed to start when PATRONI_CONFIGURATION variable is set
victoriousya opened this issue · comments
What happened?
patronictl failed to start when PATRONI_CONFIGURATION variable is set. This cause by a bug in patroni.config.Config.init
Line 136 in a8cfd46
expected to pass to yaml.safe_load file stream but passed just name of file
probable may be fixed by changing call to _load_config_path
How can we reproduce it (as minimally and precisely as possible)?
[vshibaev@mydbsrv ~]$ patronictl -c /etc/patroni/patroni.yml version
patronictl version 3.2.2
[vshibaev@mydbsrv ~]$ echo $PATRONI_CONFIGURATION
[vshibaev@mydbsrv ~]$ export PATRONI_CONFIGURATION=/etc/patroni/patroni.yml
[vshibaev@mydbsrv ~]$ patronictl -c /etc/patroni/patroni.yml version
patronictl version 3.2.2
[vshibaev@mydbsrv ~]$ patronictl version
Traceback (most recent call last):
File "/usr/bin/patronictl", line 33, in
sys.exit(load_entry_point('patroni==3.2.2', 'console_scripts', 'patronictl')())
File "/usr/lib/python3.9/site-packages/click/core.py", line 1128, in call
return self.main(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1656, in invoke
super().invoke(ctx)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/lib/python3.9/site-packages/patroni/ctl.py", line 304, in ctl
ctx.obj = load_config(config_file, dcs_url)
File "/usr/lib/python3.9/site-packages/patroni/ctl.py", line 248, in load_config
config = Config(path, validator=None).copy()
File "/usr/lib/python3.9/site-packages/patroni/config.py", line 290, in init
self.__effective_configuration = self._build_effective_configuration({}, self._local_configuration)
File "/usr/lib/python3.9/site-packages/patroni/config.py", line 848, in _build_effective_configuration
for name, value in local_configuration.items():
AttributeError: 'str' object has no attribute 'items'
[vshibaev@mydbsrv ~]$
What did you expect to happen?
PATRONI_CONFIGURATION variable works as expected
Patroni/PostgreSQL/DCS version
- Patroni version: 3.2.2
- PostgreSQL version: 16
- DCS (and its version): etcd
Patroni configuration file
not related to an error
patronictl show-config
not related to an error
Patroni log files
[vshibaev@mydbsrv ~]$ patronictl -c /etc/patroni/patroni.yml version
patronictl version 3.2.2
[vshibaev@mydbsrv ~]$ echo $PATRONI_CONFIGURATION
[vshibaev@mydbsrv ~]$ export PATRONI_CONFIGURATION=/etc/patroni/patroni.yml
[vshibaev@mydbsrv ~]$ patronictl -c /etc/patroni/patroni.yml version
patronictl version 3.2.2
[vshibaev@mydbsrv ~]$ patronictl version
Traceback (most recent call last):
File "/usr/bin/patronictl", line 33, in <module>
sys.exit(load_entry_point('patroni==3.2.2', 'console_scripts', 'patronictl')())
File "/usr/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1656, in invoke
super().invoke(ctx)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3.9/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/lib/python3.9/site-packages/patroni/ctl.py", line 304, in ctl
ctx.obj = load_config(config_file, dcs_url)
File "/usr/lib/python3.9/site-packages/patroni/ctl.py", line 248, in load_config
config = Config(path, validator=None).copy()
File "/usr/lib/python3.9/site-packages/patroni/config.py", line 290, in __init__
self.__effective_configuration = self._build_effective_configuration({}, self._local_configuration)
File "/usr/lib/python3.9/site-packages/patroni/config.py", line 848, in _build_effective_configuration
for name, value in local_configuration.items():
AttributeError: 'str' object has no attribute 'items'
[vshibaev@mydbsrv ~]$
PostgreSQL log files
not related to an error
Have you tried to use GitHub issue search?
- Yes
Anything else we need to know?
No response
This is not a bug, PATRONI_CONFIGURATION env variable is supposed to have the actual configuration (in YAML format).
Well, thanks for explanation. It was my incorrecct expectations from env config functionality