apache / apache/rocketmq

[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
Dominant language
Java
Stars
22.6k
Forks
12k
Avg merge
3d 1h
Merged PRs (30d)
27

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

Contributor guide

Open the contributing guide

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.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.