Inbound API compile state is per central node; stale InboundAPI doc; locked-override warning name matching #103

Closed
opened 2026-11-09 15:32:28 -05:00 by dohertj2 · 1 comment
Owner

Follow-ups from #75/#100:

  • Inbound API compile state (#75) is per central node: a recompile clears the known-bad record only on the node that answered; the peer keeps reporting/refusing until its own per-request revision check runs. Carry a recompile/invalidate message over the site-psk-invalidation-style central pub-sub from #96 (same mechanism as #100 item 3).
  • docs/components/InboundAPI.md still says a direct DB edit stays stale until restart — the per-request revision check already picks it up.
  • Import's locked-override warnings (CollectLockedOverrideWarnings) match member names exactly; decide based on how the flattener matches names whether they should ignore case.
Follow-ups from #75/#100: - Inbound API compile state (#75) is per central node: a recompile clears the known-bad record only on the node that answered; the peer keeps reporting/refusing until its own per-request revision check runs. Carry a recompile/invalidate message over the `site-psk-invalidation`-style central pub-sub from #96 (same mechanism as #100 item 3). - `docs/components/InboundAPI.md` still says a direct DB edit stays stale until restart — the per-request revision check already picks it up. - Import's locked-override warnings (`CollectLockedOverrideWarnings`) match member names exactly; decide based on how the flattener matches names whether they should ignore case.
dohertj2 added the type:followuppriority:p3 labels 2026-11-09 15:32:28 -05:00
Author
Owner

Fixed on main 0c2e852a: (a) create/update/delete/recompile/bundle-import of an inbound API method notifies the peer central node, which drops the compiled handler, known-bad record and cached row and recompiles on next request (before: the peer refused an unchanged script until restart); (b) InboundAPI.md corrected — a direct DB edit is picked up by the per-request revision check within the 5 s TTL; (c) decision: keep exact case-sensitive matching for locked-override warnings because the flattener matches override names exactly (a case-variant override is dropped as unresolved, so a 'targets a LOCKED member' warning would be false) — comparer named/documented, pinned by tests on flattener + import. Peer recompile / publish / handler / composition-root tests fail without the fix. Evidence (after rebase): slnx 0 warnings/0 errors; ManagementService 752, CLI 571, CentralUI 1533, InboundAPI 373, Security 199, ExternalSystemGateway 146, TemplateEngine 617, Transport.IntegrationTests 145, Host 623, Commons 915 passed; key projects re-run green on the pushed tip.

Fixed on main 0c2e852a: (a) create/update/delete/recompile/bundle-import of an inbound API method notifies the peer central node, which drops the compiled handler, known-bad record and cached row and recompiles on next request (before: the peer refused an unchanged script until restart); (b) InboundAPI.md corrected — a direct DB edit is picked up by the per-request revision check within the 5 s TTL; (c) decision: keep exact case-sensitive matching for locked-override warnings because the flattener matches override names exactly (a case-variant override is dropped as unresolved, so a 'targets a LOCKED member' warning would be false) — comparer named/documented, pinned by tests on flattener + import. Peer recompile / publish / handler / composition-root tests fail without the fix. Evidence (after rebase): slnx 0 warnings/0 errors; ManagementService 752, CLI 571, CentralUI 1533, InboundAPI 373, Security 199, ExternalSystemGateway 146, TemplateEngine 617, Transport.IntegrationTests 145, Host 623, Commons 915 passed; key projects re-run green on the pushed tip.
Sign in to join this conversation.