Skip to content

connector-jcode: a production restart may strand DMs on a dead lifecycle or stale launch #1080

Description

@davidfarah2003

Summary

Issue #910 included a reported restart shape that remains valid evidence but did not reproduce in the controlled path used for PR #1079.

A Jcode seat acquired a second session journal after a runtime restart. Senders kept resolving the seat from presence and every cotal_dm call reported success, but the replacement received none of those DMs. The replacement also booted from its stale launch brief instead of carrying the predecessor state.

This is separate from the reproduced active-turn stall fixed by PR #1079. That defect occurs without a restart: directed traffic stays in the connector-owned automatic queue until the current turn ends. PR #1079 routes it through Jcode soft interrupts and commits at the clean containing-turn boundary.

What did not reproduce

A controlled same-lifecycle Jcode host replacement behaved correctly:

  1. the sender retained the predecessor presence record;
  2. the predecessor exited;
  3. the sender published a DM before successor presence;
  4. the replacement reused the same wire principal and lifecycle durable;
  5. the prior Harness session resumed;
  6. the replacement recipient session observed the DM.

That cell does not depend on the active-turn soft-interrupt fix. It shows the reported restart loss and the active-turn stall are different mechanisms.

Remaining discriminator

Reproduce a production runtime restart that either:

  • changes the DM lifecycle or wire principal while senders still resolve stale presence, or
  • launches the replacement with stale material that addresses or binds the wrong lifecycle resources.

Neither occurred in the controlled replacement. The original report may still be accurate. It is unreproduced here, not disproven.

Acceptance bar

  • Reproduce live before fixing.
  • Assert recipient-observed delivery, not sender publish success, broker ack, presence, or process liveness.
  • Prove whether the replacement bound the predecessor DM durable or a fresh lifecycle frontier.
  • Record the sender-resolved principal, replacement principal, lifecycle uid, durable name/frontier, and whether a second journal was created. Do not surface argv or cmdline.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:connectorPrimary affected area: connector.bugSomething isn't workingseverity:highConfirmed high-impact defect or security issue.triage:not-reproducedReported behavior did not reproduce under documented supported conditions.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions