HomeClusterLabs Projects

Low: controller: be more tolerant of malformed executor events

Description

Low: controller: be more tolerant of malformed executor events

b3f9a5bb was overzealous in discarding faked executor results without any
resource information. Since that commit, synthesize_lrmd_failure() would check
for resource information, and send a CIB update if the synthesized operation
were recordable, but would otherwise (such as for notifications) discard the
result.

This means the fix was complete, because non-recordable actions for a
resource behind a just-died remote connection would get lost. It also
exposed two pre-existing bugs regarding notifications mis-scheduled on
the wrong node. Any of these would block the transition from completing.

Now, process_lrm_event() can handle missing lrm_state or resource information,
so it can be called by synthesize_lrmd_failure() without any checking. This
leads to all the normal handling for non-recordable operations, which doesn't
require resource information. We log an assertion if the resource information
is not found, so that we can still get some visibility into bugs. This won't
be of use in the case of mis-scheduled notifications, but it could help in
other situations.

Details

Provenance
kgaillotAuthored on Nov 27 2018, 6:02 PM
Parents
rPc1e2b6be30de: Refactor: controller: make process_lrm_event() void
Branches
Unknown
Tags
Unknown

Event Timeline