◈ 9ce92808be498e9e05590ff27cbfdfe4
RNS 1.4.2 released https://pypi.org/project/rns/
Forum / General / LXMF 1.1.0: Missing propagation-peer path causes synchronization attempts every 24 seconds without backoff

LXMF 1.1.0: Missing propagation-peer path causes synchronization attempts every 24 seconds without backoff

Started by nilu96 ·

I’m seeing repeated path requests from lxmd for an unreachable LXMF propagation peer. The requests occur exactly every 24 seconds.

The scenario is:

  • lxmd connects to rnsd through the local shared instance.
  • The peer still has one or more unhandled_messages.
  • No path exists to the peer.

LXMF’s job loop runs every four seconds and calls sync_peers() every sixth iteration, producing the observed 24-second interval. During each attempt, LXMPeer.sync():

  1. Finds that no path exists.
  2. Calls RNS.Transport.request_path().
  3. Waits 7.5 seconds.
  4. Finds that there is still no path and returns, saying it will retry later.

However, this missing-path branch does not appear to:

  • increment sync_backoff;
  • set next_sync_attempt;
  • mark the peer unreachable; or
  • otherwise make the peer temporarily ineligible for synchronization.

Consequently, the peer remains alive, idle and immediately eligible during the next 24-second scheduler pass.
LXMF already implements an incremental backoff of approximately 12 minutes per failure, but it seems to be activated only after a path exists and link establishment begins. A failed path lookup never reaches that logic.

RNS appears to be behaving correctly. It receives the request from the local lxmd shared-instance client, assigns a new request tag, and forwards the request through the other interfaces. In a transport-enabled instance, the RNS transport identity is shown as the immediate requester, although lxmd is the application-level initiator.

Would it be intended for an unreachable propagation peer with pending messages to generate a new path request every few seconds indefinitely, or is this a retry-policy gap?
My expectation would be that an unanswered path lookup counts as a synchronization failure and activates a bounded backoff—for example:

request path
wait for path timeout
if no path:
    mark peer unreachable
    increment backoff
    set next synchronization attempt
    return

A later announce, discovered path or successful link could reset the backoff.

Mark bc7291552be7a58f...

That's definitely an oversight. Fixed in c939e253614d63601240456032e972bd3ab347f2.

Thanks a lot, that was quick!

Post a Reply

Markdown

Supports Markdown: **bold**, *italic*, `code`, ```code blocks```, [links](url)

Log in to upload images

Proof of work verification for anonymous posting

Copied to clipboard