Refactor: libcrmcommon: Remove a TODO and unnecessary block of code.
Refactor: libcrmcommon: Rearrange send/receive code in crm_ipc_send.
Refactor: libcrmcommon: Reduce code duplication in crm_ipc_send.
Refactor: libcrmcommon: Rearrange internal_ipc_get_reply.
Refactor: libcrmcommon: Reduce IPC client receive code duplication.
@waltdisgrace Adding a mainloop timer here is definitely the way to go. If you haven't looked at the mainloop stuff before (especially glib's implementation and what we've built on top of it), this could be a little bit confusing. The basic idea is that we fake being multithreaded by looping over a queue of events that can come from various sources like file or network IO, UNIX signals, periodic or one-off timers, and so forth. Using the main loop allows us to avoid blocking other work from happening.
@waltdisgrace Start by adding a unit test to verify that the pacemaker library still just segfaults on that input. I think would be as good a place as any for this, but @nrwahl2 might have a better suggestion. I can then help you make sense of the segfault and we can figure out where to throw an error.
Additionally, it would be nice to have a unit test or two for this function. Most of what it does is call another function, several of which are already unit tested, but checking that the inputs/outputs are as expected would be good.
Refactor: libcrmservice: New services__copy_result() function
Refactor: libcrmservice: Store systemd job path in svc_action_private_t
Fix: various: Correctly detect completion of systemd start/stop actions
Refactor: libcrmservice: Subscribe to systemd D-Bus signals
Refactor: daemons: Unindent the goagain block in action_complete.
Refactor: libcrmservice: systemd_init should return a bool.
Low: libcrmservices: Don't leak msg if systemd_proxy is NULL.
Refactor: libcrmservices: Unref the dbus connection...
Refactor: libcrmservice: Improve error checks in systemd_service_name()
Refactor: libcrmservice: Fail systemd rsc start if create override fails
Refactor: libcrmservice: Check for empty arg in invoke_unit_by_name()
Refactor: libcrmservice: Avoid gboolean/gchar in systemd_unit_exists()
Refactor: libcrmservice: Defunctionize create_world_readable()
Refactor: libcrmservice: Simplify systemd override path getters
Refactor: libcrmcommon: Drop check for unused flag from str_any_of()
Low: libcrmservice: Fix overrides for systemd resources
Refactor: tools: NULL-check args in cli_resource_print()
Refactor: tools: NULL-check scheduler arg of cli_resource_move()
Refactor: tools: NULL-check scheduler arg of cli_cleanup_all()
Refactor: tools: NULL-check scheduler arg in cli_resource_fail()
Doc: libcrmservice: Suppress Coverity false positives
Doc: tools: Suppress Coverity false positives in crm_resource.c
Refactor: Unindent various code blocks in transport.c.
Refactor: Remove global booth_conf variable in transport.c.
Refactor: Add braces around conditional blocks in transport.c.
Refactor: Remove some (void) casts from transport.c.
Refactor: Check the return value of setsockopt.
Refactor: Use whitespace more consistently in transport.c.
Refactor: cts: Give an explicit encoding to uses of io.open.
Refactor: cts: Fix the last few pyflake problems in cts-regression.
Refactor: cts: Add the usual pylint import and name pragmas.
Refactor: cts: Don't inherit from object.
Refactor: python: Use += in cts-scheduler for increment.
Refactor: cts: Condense test descriptions onto single lines.
Refactor: cts: Use f-strings in cts-scheduler.
Refactor: python: Don't explicitly compare against an empty list.
Refactor: cts: Disable pylint warnings we're not going to address.
Refactor: cts: Unindent some code where possible.
Refactor: cts: Fix whitespace around lists and operators.
Refactor: python: Improve whitespace throughout cts-scheduler.
Refactor: cts: Get rid of the DESC variable.
Refactor: cts: Disable the too-many-locals warning in cts-scheduler.
Refactor: cts: Add a function to check if a file is missing or empty.
Refactor: cts: Improve docstrings in cts-scheduler.
Refactor: python: Disable the similar code warning from pylintrc.
Build: cts: Add cts-cli to the python_files list.
Refactor: cts: Fix a pyflake whitespace problem in cts-cli.
Refactor: cts: Replace {shadow} strings in cts-cli where possible.
Refactor: cts: Use {cts_cli_data} as an f-string where possible.
Refactor: cts: Remove unnecessary whitespace from the end of commands.
Build: Run cts-cli verbosely.
Test: CTS: Pass verbose argument to the diff function.
API: libcrmcommon: Map pcmk_rc_cib_corrupt to CRM_EX_CONFIG.
Med: cts: Add missing crm_simulate regression tests back to cts-cli.
Log: pacemaker-based: improve messages when reading CIB from disk
Log: pacemaker-based: improve exit messages
Log: controller: simplify join finalization messages
Log: pacemaker-based: improve a few messages
Log: controller: drop dot file logs
Log: controller: improve start-up/exit messages
Log: controller: improve resource action execution logs
Build: devel: Add additional cppcheck arguments.
Refactor: libs: Remove existing cppcheck suppressions.
Refactor: daemons: Simplify some code in start_child.
Refactor: libs: Add a couple new cppcheck suppressions.
Build: Fix coverage targets.
clumens changed the status of
T903: Split large IPC messages from
Open to
WIP.
This is going to be very, very difficult to do which is why we've removed it from the RHEL board and lowered the priority. Basically, implements almost all of the API commands for a . All of those would need to be converted over to an async style, and then all of their callers would be. This includes major portions of the control daemon, which isn't very well set up to call the async versions of these functions. It would require rewriting much of liblrmd and the control daemon, and there's simply not enough time to get around to a project of that size.
cppcheck appears to be fine with for me, but I would still be all for investigating removing it in favor of someone else's code.
Build: devel: Replace indent with clang-format.
Refactor: libcrmservice: systemd_init should return a bool.
Refactor: daemons: Fix whitespace problems in execd_commands.c.
Refactor: daemons: Unindent a block of code in action_complete.
Refactor: daemons: Get rid of an unnecessary #endif/#ifdef.
Refactor: daemons: Unindent the goagain block in action_complete.
Low: libcrmservices: Don't leak msg if systemd_proxy is NULL.
Refactor: daemons: Improve whitespace in action_complete.
Refactor: libcrmservices: Unref the dbus connection...
Low: python: Add python value for new CRM_EX_NO_DC exit code.
Refactor: python: Rename variables in Audit __call__ methods.