Skip to content

Comments

Develop#315

Merged
ansh-meesho merged 8 commits intomainfrom
develop
Feb 14, 2026
Merged

Develop#315
ansh-meesho merged 8 commits intomainfrom
develop

Conversation

@ansh-meesho
Copy link
Contributor

@ansh-meesho ansh-meesho commented Feb 14, 2026

🔁 Pull Request Template – BharatMLStack

Please fill out the following sections to help us review your changes efficiently.

Context:

Give a brief overview of the motivation behind this change. Include any relevant discussion links (Slack, documents, tickets, etc.) that help reviewers understand the background and the issue being addressed.

Describe your changes:

Mention the changes made in the codebase.

Testing:

Please describe how you tested the code. If manual tests were performed - please explain how. If automatic tests were added or existing ones cover the change - please explain how did you run them.

Monitoring:

Explain how this change will be tracked after deployment. Indicate whether current dashboards, alerts, and logs are enough, or if additional instrumentation is required.

Rollback plan

Explain rollback plan in case of issues.

Checklist before requesting a review

  • I have reviewed my own changes?
  • Relevant or critical functionality is covered by tests?
  • Monitoring needs have been evaluated?
  • Any necessary documentation updates have been considered?

📂 Modules Affected

  • horizon (Real-time systems / networking)
  • online-feature-store (Feature serving infra)
  • trufflebox-ui (Admin panel / UI)
  • infra (Docker, CI/CD, GCP/AWS setup)
  • docs (Documentation updates)
  • Other: ___________

✅ Type of Change

  • Feature addition
  • Bug fix
  • Infra / build system change
  • Performance improvement
  • Refactor
  • Documentation
  • Other: ___________

📊 Benchmark / Metrics (if applicable)

Summary by CodeRabbit

  • Chores

    • SDK bumped to v1.2.0; dependency updates and internal module consolidation.
  • Infrastructure

    • Docker references switched to public ghcr.io images.
  • Documentation

    • Docs and quick-start examples updated to use the new SDK naming; removed obsolete client README and related CI/release workflows.
    • Blog post slug updated (post-four).

@coderabbitai
Copy link

coderabbitai bot commented Feb 14, 2026

Walkthrough

Migrates code and imports from the helix-client module to go-sdk; deletes the helix-client module and its CI/release workflows; bumps go-sdk to v1.2.0 with new dependencies; updates docker image references and a blog post slug. No behavior or public API signatures changed.

Changes

Cohort / File(s) Summary
Module Path Migration
go-sdk/pkg/api/context.go, go-sdk/pkg/api/request_context.go, go-sdk/pkg/api/request_context_test.go, go-sdk/pkg/clients/numerix/..., go-sdk/pkg/clients/predator/..., go-sdk/pkg/clients/skye/..., go-sdk/pkg/datatypeconverter/..., go-sdk/pkg/grpc/..., go-sdk/pkg/grpcclient/grpc.go, go-sdk/pkg/httpframework/httpframework.go, go-sdk/pkg/middleware/..., go-sdk/pkg/utils/byte_utils.go
Updated import paths from github.com/Meesho/BharatMLStack/helix-client/... to github.com/Meesho/BharatMLStack/go-sdk/... across packages and tests. No functional or signature changes.
go-sdk manifest & version
go-sdk/go.mod, go-sdk/VERSION
Bumped go-sdk version to v1.2.0; added direct deps (github.com/DataDog/datadog-go/v5, github.com/gin-gonic/gin, github.com/soheilhy/cmux, github.com/spf13/viper), upgraded testify and protobuf, and updated many indirect transitive dependencies. Review go.mod for compatibility.
Helix-client removal
helix-client/go.mod, helix-client/VERSION, helix-client/README.md
Removed helix-client module files: deleted go.mod, cleared VERSION, and removed README contents. Module-level configuration and docs for helix-client are deleted.
CI / Release workflows
.github/workflows/ci.yml, .github/workflows/helix-client.yml, .github/workflows/release-helix-client.yml, manual-release.sh
Removed helix-client-specific workflows and related detect-change outputs/filters; deleted helix-client CI and release pipelines; removed helix-client from manual release module mappings. CI no longer treats helix-client as a component.
Quick-start / Docker
quick-start/docker-compose.yml, quick-start/stop.sh, quick-start/setup-predator-k8s.sh, quick-start/PREDATOR_SETUP.md, quick-start/*
Switched numerix image reference to ghcr.io/meesho/numerix and updated image removal patterns; updated example grpcurl import-paths from helix-client to go-sdk.
Docs updates
docs-src/blog/bharatmlstack-history/post-four/index.md, docs/inferflow/v1.0.0/architecture/index.html, docs-src/docs/inferflow/v1.0.0/architecture.md
Updated blog post front-matter slug (post-threepost-four) and replaced documentation references from helix-client to go-sdk in architecture docs.
Tests & minor config
go-sdk/pkg/clients/*/..._test.go, go-sdk/pkg/grpc/*_test.go, go-sdk/pkg/middleware/httplogger_test.go
Adjusted test imports and a commented APP_NAME value to reference go-sdk paths; no test logic changes.
Other small updates
docs-src/*, quick-start/*, assorted files
Miscellaneous text/import tweaks to reflect module rename and registry change; line-level edits only.

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
.github/workflows/ci.yml (1)

93-97: LGTM! Helix-client removal is consistent.

The condition correctly checks all 8 remaining components and aligns with the outputs, filters, and other logic in this file.

Optional: The line is quite long. Consider using a multi-line format for improved readability:

♻️ Optional: Multi-line format for readability
-          if [ "${{ steps.changes.outputs.horizon }}" == "true" ] || [ "${{ steps.changes.outputs.trufflebox-ui }}" == "true" ] || [ "${{ steps.changes.outputs.numerix }}" == "true" ] || [ "${{ steps.changes.outputs.online-feature-store }}" == "true" ] || [ "${{ steps.changes.outputs.go-sdk }}" == "true" ] || [ "${{ steps.changes.outputs.py-sdk }}" == "true" ] || [ "${{ steps.changes.outputs.inferflow }}" == "true" ] || [ "${{ steps.changes.outputs.skye }}" == "true" ]; then
+          if [ "${{ steps.changes.outputs.horizon }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.trufflebox-ui }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.numerix }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.online-feature-store }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.go-sdk }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.py-sdk }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.inferflow }}" == "true" ] || \
+             [ "${{ steps.changes.outputs.skye }}" == "true" ]; then

Comment @coderabbitai help to get the list of available commands and usage tips.

a0d00kc
a0d00kc previously approved these changes Feb 14, 2026
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
go-sdk/pkg/clients/numerix/v1.go (1)

171-180: ⚠️ Potential issue | 🟠 Major

Potential nil pointer dereference.

fillResponseFromBatch calls batchProtoResp.GetError() without first checking if batchProtoResp is nil. If result.response is nil (which can happen when an error occurs in batch processing per line 147), calling this method will panic.

🐛 Proposed fix
 func (c *ClientV1) fillResponseFromBatch(finalResponse *NumerixResponse, batchProtoResp *grpc.NumerixResponseProto, batch BatchInfo) {
+	if batchProtoResp == nil {
+		return
+	}
 	if errProto := batchProtoResp.GetError(); errProto != nil {
 		log.Warn().Msgf("Received error in proto response error: %s", errProto.GetMessage())
 		return
 	}
🧹 Nitpick comments (4)
go-sdk/go.mod (1)

6-16: All dependency versions exist and resolve correctly; however, several have newer releases available.

All listed versions are valid and resolvable. Multiple modules have available updates:

  • go.etcd.io/etcd/client/v3: v3.6.8 available (current: v3.5.17)
  • google.golang.org/grpc: v1.79.1 available (current: v1.68.2)
  • golang.org/x/net: v0.50.0 available (current: v0.42.0)
  • google.golang.org/protobuf: v1.36.11 available (current: v1.36.9)

Note that github.com/x448/float16 (v0.8.4, released 2020-01-17) and github.com/soheilhy/cmux (v0.1.5, released 2021-02-05) are notably outdated. Consider evaluating whether these should be updated or if their pinned versions are intentional.

go-sdk/pkg/clients/numerix/v1.go (2)

34-61: Potential race condition in singleton initialization.

The check if client == nil on line 35 is outside the sync.Once block, which could lead to a race condition. If two goroutines call InitV1Client concurrently and both see client == nil, only one will execute the once.Do block, but this pattern is redundant and potentially confusing.

The sync.Once already guarantees single execution, so the outer nil check is unnecessary.

♻️ Suggested simplification
 func InitV1Client(configBytes []byte) NumerixClient {
-	if client == nil {
-		once.Do(func() {
-			byteorder.Init()
+	once.Do(func() {
+		byteorder.Init()
 
-			clientConfig, err := getClientConfigs(configBytes)
-			if err != nil {
-				log.Panic().Err(err).Msgf("Invalid numerix client configs: %#v", clientConfig)
-			}
-			headers = metadata.New(map[string]string{
-				numerix_CALLER_ID: clientConfig.CallerId,
-			})
+		clientConfig, err := getClientConfigs(configBytes)
+		if err != nil {
+			log.Panic().Err(err).Msgf("Invalid numerix client configs: %#v", clientConfig)
+		}
+		headers = metadata.New(map[string]string{
+			numerix_CALLER_ID: clientConfig.CallerId,
+		})
 
-			grpcClient, grpcErr := getGrpcClient(clientConfig)
-			if grpcErr != nil {
-				log.Panic().Err(grpcErr).Msgf("Error creating numerix service grpc client, client: %#v", grpcClient)
-			}
+		grpcClient, grpcErr := getGrpcClient(clientConfig)
+		if grpcErr != nil {
+			log.Panic().Err(grpcErr).Msgf("Error creating numerix service grpc client, client: %#v", grpcClient)
+		}
 
-			numerixClient := grpc.NewNumerixClient(grpcClient)
-			client = &ClientV1{
-				ClientConfigs: clientConfig,
-				GrpcClient:    grpcClient,
-				numerixClient: numerixClient,
-				Adapter:       Adapter{},
-			}
-		})
-	}
+		numerixClient := grpc.NewNumerixClient(grpcClient)
+		client = &ClientV1{
+			ClientConfigs: clientConfig,
+			GrpcClient:    grpcClient,
+			numerixClient: numerixClient,
+			Adapter:       Adapter{},
+		}
+	})
 	return client
 }

160-166: Silent continuation on batch errors may cause incomplete results.

When a batch fails (line 161-163), the code only logs a warning and continues. The final response will have nil entries at positions corresponding to failed batches since fillResponseFromBatch returns early for nil responses. This may be intentional for partial success, but callers should be aware that finalResponse.ComputationScoreData.Data may contain nil entries.

Consider either:

  1. Documenting this behavior
  2. Returning an error if any batch fails
  3. Adding a mechanism to indicate partial failure to callers
go-sdk/pkg/clients/numerix/adaptor.go (1)

38-45: Error in ScoreDataToFP32Bytes silently returns without indication.

When typeconverter.ConvertBytesToBytes fails, the method logs the error and returns early, leaving request.EntityScoreData.Data in a partially converted state. The caller MapRequestToProto has no way to know the conversion failed.

This is pre-existing behavior, but worth noting: consider returning an error or using a different pattern to signal failures.

@ansh-meesho ansh-meesho merged commit bff4b8b into main Feb 14, 2026
24 of 25 checks passed
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.

2 participants