decision(comm): IntegrationCallRequest routing is dead on both ends — wire or delete #32
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: Low (no runtime impact — the path cannot be reached) · Area: Central–Site Communication · Status: decision needed
What
"Pattern 4: Integration Routing" —
CommunicationService.RouteIntegrationCallAsync→SiteEnvelope(IntegrationCallRequest)→SiteCommunicationActor→ an integration handler — is plumbed end to end but connected at neither end:RouteIntegrationCallAsynchas zero callers insrc/ortests/(the onlyCommunicationServicecommand method with none).RegisterLocalHandler(LocalHandlerType.Integration, …)appears only inSiteCommunicationActorTests;AkkaHostedServiceregisters the other three handler types and never this one.Not to be confused with the Inbound API's routed-site-script path, which is live, tested, and uses different messages.
Context
Found during ClusterClient→gRPC recon (plan T0.2), which enumerated every site↔central command: of 29 command types this is the 1 excluded — 28 migrate to the gRPC contract. It was left untouched to avoid enshrining an unreachable RPC on an additive-only wire format, and to avoid mixing an unrelated behavioural change into a transport-identical migration.
Decision
Either design a proto contract +
oneofslot + round-trip mapper and wire both ends, or delete the pattern (producer, message, handler branch).Full write-up:
docs/known-issues/2026-07-22-integration-call-routing-is-dead-code.md.Resolved by DELETE — commit
a5256e9b(on main, pushed to origin).Decision: delete. The dead 'Pattern 4' path was an early scaffold the architecture routed around — the brokered External→Central→Site→Central round-trip is served by the Inbound API's routed-site-script path (the RouteTo* verbs on CommunicationService, driven from InboundAPI/CommunicationServiceInstanceRouter), which is live, tested, and shares IntegrationTimeout.
Removed: IntegrationCall{Request,Response} messages, RouteIntegrationCallAsync, the SiteCommunicationActor receive block + _integrationHandler field + LocalHandlerType.Integration, and the 4 tests covering them. KEPT IntegrationTimeout (it's the live timeout for RouteTo*). Updated the exclusion-narrative comments (proto/mapper/dispatcher), design §4, the components-doc timeout table, and marked docs/known-issues/2026-07-22-integration-call-routing-is-dead-code.md RESOLVED.
Full solution build clean (0/0); Communication 634 + Host 421 tests green. Net -172/+20 across 14 files. It was never in the gRPC proto (deliberately excluded there), so no wire-format change.