Skip to content

Fix proto gen#294

Open
Tzvonimir wants to merge 1 commit intomainfrom
tzvonimir/update-proto
Open

Fix proto gen#294
Tzvonimir wants to merge 1 commit intomainfrom
tzvonimir/update-proto

Conversation

@Tzvonimir
Copy link
Contributor

@Tzvonimir Tzvonimir commented Feb 24, 2026

[Title]

📚 Description of Changes

Provide an overview of your changes and why they’re needed. Link to any related issues (e.g., "Fixes #123"). If your PR fixes a bug, resolves a feature request, or updates documentation, please explain how.

  • What Changed:
    (Describe the modifications, additions, or removals.)

  • Why This Change:
    (Explain the problem this PR addresses or the improvement it provides.)

  • Affected Components:
    (Which component does this change affect? - put x for all components)

  • Compose

  • K8s

  • Other (please specify)

❓ Motivation and Context

Why is this change required? What problem does it solve?

  • Context:
    (Provide background information or link to related discussions/issues.)

  • Relevant Tasks/Issues:
    (e.g., Fixes: #GitHub Issue)

🔍 Types of Changes

Indicate which type of changes your code introduces (check all that apply):

  • BUGFIX: Non-breaking fix for an issue.
  • NEW FEATURE: Non-breaking addition of functionality.
  • BREAKING CHANGE: Fix or feature that causes existing functionality to not work as expected.
  • ENHANCEMENT: Improvement to existing functionality.
  • CHORE: Changes that do not affect production (e.g., documentation, build tooling, CI).

🔬 QA / Verification Steps

Describe the steps a reviewer should take to verify your changes:

  1. (Step one: e.g., "Run make test to verify all tests pass.")
  2. (Step two: e.g., "Deploy to a Kind cluster with make create-kind && make deploy.")
  3. (Additional steps as needed.)

✅ Global Checklist

Please check all boxes that apply:

  • I have read and followed the CONTRIBUTING guidelines.
  • My code follows the code style of this project.
  • I have updated the documentation as needed.
  • I have added tests that cover my changes.
  • All new and existing tests have passed locally.
  • I have run this code in a local environment to verify functionality.
  • I have considered the security implications of this change.

Summary by Gitar

  • Removed deprecated services:
    • Deleted OperatorService and OperatorHealthService from generated API (breaking change affecting dependent clients)
  • Added network metrics time-series API:
    • New GetNetworkMetricsTimeSeries RPC in ClusterService for time-bucketed network metrics visualization
    • Added supporting message types: GetNetworkMetricsTimeSeriesRequest/Response, NetworkTimeSeriesBucket, TimeSeriesZone, NetworkPercentileValues
  • Regenerated protobuf bindings:
    • Updated Connect-RPC handlers and gRPC bindings to reflect proto schema changes in gen/api/v1/
    • Updated proto descriptor binary

This will update automatically on new commits.

@gitar-bot
Copy link

gitar-bot bot commented Feb 24, 2026

Analyzing CI failures

🔍 CI failure analysis for febc543: The protobuf regeneration removed health-related types (HealthStatus, ReportHealthRequest, ComponentHealth) that are still used by internal/health/heartbeat.go, causing compilation failures across all CI jobs.

Issue

All CI jobs are failing with compilation errors in internal/health/heartbeat.go due to undefined protobuf types.

Root Cause

This PR regenerates protobuf definitions and removes the deprecated OperatorService and OperatorHealthService. However, the health-related message types and enums defined in the deleted proto file are still being referenced by application code:

Deleted proto file:

  • gen/api/v1/operator_health.pb.go
  • gen/api/v1/apiv1connect/operator_health.connect.go
  • gen/api/v1/operator_health_grpc.pb.go

Affected types still in use:

  • gen.HealthStatus enum (with values HEALTH_STATUS_HEALTHY, HEALTH_STATUS_DEGRADED, HEALTH_STATUS_UNHEALTHY, HEALTH_STATUS_UNSPECIFIED)
  • gen.ReportHealthRequest message
  • gen.ComponentHealth message

Code still using these types:

  • internal/health/heartbeat.go:11 - function returns gen.HealthStatus
  • internal/health/heartbeat.go:14-20 - references all gen.HealthStatus_* enum values
  • internal/health/heartbeat.go:27 - parameter type gen.HealthStatus
  • internal/health/heartbeat.go:36,43 - returns *gen.ReportHealthRequest
  • internal/health/heartbeat.go:45 - uses gen.ComponentHealth

Details

The compilation errors manifest in three CI jobs:

1. Run make test (job 64610788923)

internal/health/heartbeat.go:11:46: undefined: gen.HealthStatus
internal/health/heartbeat.go:14:14: undefined: gen.HealthStatus_HEALTH_STATUS_HEALTHY
internal/health/heartbeat.go:16:14: undefined: gen.HealthStatus_HEALTH_STATUS_DEGRADED
internal/health/heartbeat.go:18:14: undefined: gen.HealthStatus_HEALTH_STATUS_UNHEALTHY
internal/health/heartbeat.go:20:14: undefined: gen.HealthStatus_HEALTH_STATUS_UNSPECIFIED
internal/health/heartbeat.go:27:27: undefined: gen.HealthStatus
internal/health/heartbeat.go:36:100: undefined: gen.ReportHealthRequest
internal/health/heartbeat.go:43:126: undefined: gen.ReportHealthRequest
internal/health/heartbeat.go:44:17: undefined: gen.HealthStatus_HEALTH_STATUS_UNSPECIFIED
internal/health/heartbeat.go:45:28: undefined: gen.ComponentHealth

2. Build Docker Image (jobs 64610788904, 64610788988) - Failed due to same compilation errors during build

3. golangci-lint (job 64610788914) - Failed due to same compilation errors during linting

Code Review 🚫 Blocked 0 resolved / 1 findings

Removing operator service generated files will break the build — at least 6 source files still reference deleted types (OperatorHealthServiceClient, ReportHealthRequest, OperatorType enum). The new GetNetworkMetricsTimeSeries endpoint is wired up correctly in generated code.

🚨 Bug: Deleting operator proto files breaks compilation of existing code

📄 /dev/null

The PR removes the generated files for OperatorService and OperatorHealthService (operator.pb.go, operator_health.pb.go, operator.connect.go, operator_health.connect.go, and their gRPC counterparts), but multiple non-generated source files still reference the deleted types. This will cause a compilation failure.

Affected types that no longer exist:

  • genconnect.OperatorHealthServiceClient / genconnect.NewOperatorHealthServiceClient
  • gen.ReportHealthRequest
  • gen.OperatorType_OPERATOR_TYPE_READ
  • gen.OperatorType enum
  • gen.HealthStatus enum
  • gen.ComponentHealth

Affected source files:

  • internal/transport/dakr_client.go:125: Declares operatorHealthClient genconnect.OperatorHealthServiceClient, creates client via genconnect.NewOperatorHealthServiceClient(), and implements ReportHealth() using gen.ReportHealthRequest
  • internal/transport/interface.go: DakrClient interface declares ReportHealth(ctx context.Context, req *gen.ReportHealthRequest) error
  • internal/transport/sender.go: SimpleDakrClient.ReportHealth() references gen.ReportHealthRequest
  • internal/health/heartbeat.go: BuildHeartbeatRequest() constructs gen.ReportHealthRequest and references gen.OperatorType_OPERATOR_TYPE_READ
  • internal/health/heartbeat_test.go: Tests reference operator health types
  • internal/controller/custom.go: Calls DakrClient.ReportHealth()

Either:

  1. Keep the operator proto generated files (don't delete them in this PR), or
  2. Update all the above source files to remove operator health dependencies in the same PR
Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing less information.

Comment with these commands to change:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Important

Your trial ends in 2 days — upgrade now to keep CI analysis, auto-apply, custom rules, and more.

Was this helpful? React with 👍 / 👎 | Gitar

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant