<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - systemd emits UnitNew in response to Properties.Get, potentially leading to loops."
   href="https://bugs.freedesktop.org/show_bug.cgi?id=69575">69575</a>
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>systemd-bugs@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>systemd emits UnitNew in response to Properties.Get, potentially leading to loops.
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>systemd-bugs@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>marius.vollmer@redhat.com
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>general
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>systemd
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Systemd 207, with patches.

I have a program that reacts to UnitNew signals from systemd by issuing a
Properties.GetAll call to the new unit.

Now, if someone anywhere issues a Properties.GetAll call (or probably any other
call) for a non-loaded unit, systemd will emit two UnitNew/UnitRemoved signals
back to back.

By the time my program has received the UnitNew signal of the pair and issued
the Properties.GetAll call, the unit has already disapeared again from systemds
memory, and the Properties.GetAll call results in another pair of
UnitNew/UnitRemove signals.

This will then cause my program to call Properties.GetAll again, leading to a
tight infinite loop.

This didn't happen with systemd 201.

I think it is reasonable to react to a UnitNew signal with a Properties.GetAll
call.  No?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>