In vmware-postgres-15-10.0.el9.x86_64, patronictl edit-config fails to save configuration file edits. The following error is displayed when using patroni edit-config in interactive mode and when editing the dynamic configuration.
# patronictl edit-configTraceback (most recent call last):
File "/opt/vmware/patroni-python3/bin/patronictl", line 33, in <module>
sys.exit(load_entry_point('patroni==3.3.3', 'console_scripts', 'patronictl')())
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/patroni/ctl.py", line 2135, in edit_config
show_diff(before_editing, after_editing)
File "/opt/vmwa/python/lib64/python3.9/site-packages/patroni/ctl.py", line 1930, in show_diff
markup_to_pager(PatchStream(buf), opts)
File "/opt/vmware/patroni-python3/python/lib64/python3.9/site-packages/ydiff.py", line 639, in markup_to_pager
theme=opts.theme)
AttributeError: type object 'opts' has no attribute 'theme' vmware-postgres15-15.10-1.el9.x86_64
vmware-postgres-patroni-3.3.3-3.el9.x86_64
The Patroni RPM was built using ydiff version 1.42, which has known compatibility issues with Patroni 3.3.3, as reported in the Patroni open-source repository.
Workaround: Manually downgrade the ydiff library from version 1.42 to 1.3 in the Patroni-installed Python virtual environment.
Downgrade Steps (as root user):
1. Navigate to the Patroni Python venv directory:
cd /opt/vmware/patroni-python3.11/python/bin
2. Activate the Patroni Python virtual environment:
source activate
3. Check the installed ydiff version:
pip3 list | grep ydiff
4. Uninstall the current ydiff version:
pip3 uninstall ydiff
5. Verify ydiff removal:
pip3 list | grep ydiff
6. Install ydiff version 1.3:
pip3 install ydiff==1.3
7. Confirm the installed version:
pip3 list | grep ydiff