remove pending associations by owner

Changes:
Match with the service while removing the pending association for an
object. Only the pending association introduced by the service which
removes the object/interface will be erased.

If Service A has an association on Object X with Object Y (which comes
from Service C), and Service B also has an association definition for
Object X, there is a scenario where the X-Y association will not be
created, even though both objects are present in the D-Bus tree.

Steps to Reproduce:
1. Service A starts and creates Object X. It creates a pending
association Y-X.
2. Service B starts, registers properties for Object X, and creates
other associations.
3. Service B drops Object X and its associated definitions. As a
result, all pending associations for Object X are wiped out (including
X-Y which is from A).
4. Service B creates Object X again along with other associations
related to Service B (but not the ones from Service A).
5. Service C finally starts and creates Object Y, but no pending
association is processed to complete the X-Y link.

Tested:
Unit tested. Also testing on a machine with the above steps and all
the associations were still created.

Patch Tracking Bug: b/491287006
Upstream info / review: https://gerrit.openbmc.org/c/openbmc/phosphor-objmgr/+/88131
Upstream-Status: Accepted
Justification: Bugfix
  - b/488925115

Google-Bug-Id: 488925115
Change-Id: I86788e115c4431e2103fb8fc0692f8188f48ac1b
Signed-off-by: Munawar Hussain <munawarhussain@google.com>
Signed-off-by: Jane Kramer <jkrm@google.com>
Google-Bug-Id: 572860608
3 files changed
tree: 31b748f822d5148e9af30079b101a6b1f0c0829b
  1. fail-monitor/
  2. libmapper/
  3. src/
  4. subprojects/
  5. .clang-format
  6. .gitignore
  7. LICENSE
  8. meson.build
  9. meson.options
  10. OWNERS
  11. README.md
README.md

The Mapper

This repository contains the mapper, which assists in finding things on D-Bus. There is documentation about it here.

Prerequisites

Non-OpenBMC build dependencies are:

  • meson/ninja
  • boost
  • libsystemd
  • systemd
  • tinyxml2

Build

meson build && ninja -C build

Run Unit Tests

meson build && ninja -C build test

Clean the repository

rm -rf build