Visitar URL original
Offline Service is never given appProtocol: grpc (registry fixed by #6367) · Issue #6866 · feast-dev/feast · GitHub
Skip to content

Offline Service is never given appProtocol: grpc (registry fixed by #6367) #6866

Description

@dbbvitor

Note

Narrowing scope from the original report: registry's appProtocol: grpc was already fixed by #6367 , merged 2026-05-22 and in 0.66.0. This report is about offline only, which getServiceAppProtocol() still doesn't cover.

Expected Behavior

The Service the Operator creates for the offline (Arrow Flight / gRPC) server should set the native Kubernetes appProtocol: grpc on its port, so Istio (or any protocol-aware mesh) negotiates HTTP/2 instead of guessing from the port name — the same fix #6367 already applied to the registry Service.

Current Behavior

getServiceAppProtocol() only special-cases the registry service:

func (feast *FeastServices) getServiceAppProtocol(feastType FeastServiceType, isRestService bool) *string {
	if feastType == RegistryFeastType && !isRestService && feast.isRegistryGrpcEnabled() {
		return ptr.To("grpc")
	}
	return nil   // offline falls through here despite also speaking gRPC
}

The offline Service still gets name: http, no appProtocol — Istio negotiates HTTP/1.1 for gRPC (Arrow Flight) traffic to it.

Steps to reproduce

  • Deploy a FeatureStore with an offline server, in a cluster with Istio sidecar injection enabled for the Feast namespace.
  • Inspect the generated offline Service: its port is named "http" (no appProtocol set).
  • Send gRPC traffic to that Service through the mesh and observe protocol negotiation issues consistent with HTTP/1.1 (e.g. via istioctl proxy-config).

Specifications

  • Version: 0.66.0 / current infra/feast-operator on master
  • Platform: Kubernetes with Istio sidecar mesh
  • Subsystem: infra/feast-operator Service rendering

Possible Solution

if (feastType == RegistryFeastType && !isRestService && feast.isRegistryGrpcEnabled()) ||
    feastType == OfflineFeastType {
	return ptr.To("grpc")
}

Same helper, same pattern #6367 already established — just extend the condition to OfflineFeastType.

Activity

  1. changed the title [-]Registry and offline Services are never given appProtocol: grpc[/-] [+]Offline Service is never given appProtocol: grpc (registry fixed by #6367)[/+] on Sep 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions