[Bug] Proxy gRPC client settings should tolerate malformed metric collector address

Open Beginner friendly
#10,683 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
grpc, java
Domain
api, backend

Research direction

Start at GrpcClientSettingsManager.mergeMetric in the proxy module and trace how metricCollectorAddress becomes the Metric settings response. Add unit tests for valid, empty, host-only, and non-numeric-port addresses; done means malformed optional endpoints no longer throw, disable client metrics, and valid host:port values remain unchanged.

Written by the indexing model from the issue text.

Description

Bug description

When the proxy is configured with metricCollectorMode=on, GrpcClientSettingsManager.mergeMetric parses metricCollectorAddress with split(":") and directly reads split[1] / Integer.parseInt(split[1]).

If metricCollectorAddress is empty, missing the port, or has a non-numeric port, the gRPC client settings path can throw runtime exceptions while constructing the Metric settings response:

  • empty or host-only value: ArrayIndexOutOfBoundsException
  • non-numeric port: NumberFormatException

This makes a malformed optional metrics collector config affect normal gRPC client telemetry/settings negotiation.

Expected behavior

The proxy should not fail gRPC client settings generation because the optional client metric collector endpoint is malformed. It should reject/ignore the malformed endpoint and return settings with client metrics disabled, while keeping valid host:port values unchanged.

Affected area

proxy module, gRPC v2 client settings / telemetry path.

Suggested fix

Validate metricCollectorAddress before constructing Endpoints:

  • require non-blank host:port
  • require a numeric port
  • on invalid values, log a warning and set Metric.on=false
  • add unit tests for valid, empty, missing-port, and non-numeric-port addresses
Dominant language
Java
Stars
22.6k
Forks
12k
Avg merge
3d 12h
Merged PRs (30d)
25

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/rocketmq

All issues in apache/rocketmq

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.