xiangfu0 opened a new pull request, #19142:
URL: https://github.com/apache/pinot/pull/19142
Removes APIs whose deprecations shipped in the 1.2.0 cycle (2024). Part of a
series of per-release deprecation sweeps.
All removed members were verified to have zero non-deprecated production
callers. Full-reactor `test-compile`, `checkstyle:check`, and `license:check`
pass. No test changes were needed — nothing referenced any removed API.
## Removed
- **`GET /tables/{tableName}/livebrokers`** (singular). The plural `GET
/tables/livebrokers` remains. Note the two return different shapes, so external
callers of the singular form need more than a path change — see below.
- **`RequestUtils.getFunctionExpression(String)`** and
**`getOptionsFromJson(JsonNode, String)`**. Both had zero callers; the
non-deprecated `getFunctionExpression(Function)` overload is untouched and
still used by `ClpRewriter`.
- **`BrokerResponse.getProcessingExceptions()`** — a `@JsonIgnore` default
method with no callers, so the broker JSON response shape is unchanged. (The
same-named methods on `RequestContext` are an unrelated interface and are
untouched.)
## Deliberately excluded
Two items from the original sweep were dropped after investigation:
**`POST /segments/{tableName}/delete`** — removing this requires migrating
`SegmentAdminClient` to `DELETE /segments/{tableName}` first, and that
migration turned out to be unsafe in two independent ways: the DELETE endpoint
treats a *missing* `segments` parameter as "delete every segment in the table"
(so an empty list silently escalates from a 400 into whole-table deletion), and
its `@QueryParam("segments") List<String>` binding only populates from repeated
`segments=a&segments=b` parameters, so a comma-joined value arrives as one
bogus segment name and silently no-ops. Both bugs appear to exist in the
current client's DELETE path independently of this PR and deserve their own fix.
**`SegmentLocks`** static factories —
`ConcurrentMapPartitionUpsertMetadataManagerForConsistentDeletes` still calls
the deprecated static `getSegmentLock`. Migrating it to the instance method
would change lock scoping from a global static cache to per-`TableDataManager`
locks, which is a concurrency-semantics change that does not belong in a
deprecation sweep.
**`TableAndSchemaConfig`** was also left in place: it is still the
request-body DTO of `PinotUpsertRestletResource`, and its JSON shape
(`{tableConfig, schema}`) differs from `TableConfigs` (`{tableName, schema,
offline, realtime}`), so swapping it would break the public REST contract.
## backward-incompat
Please apply the **`backward-incompat`** label.
The removed **`GET /tables/{tableName}/livebrokers`** endpoint 404s for
external clients after upgrade, and the replacement is not a drop-in: `GET
/tables/livebrokers` returns `Map<String, List<InstanceInfo>>` rather than the
singular endpoint's `List<String>`. The removed `RequestUtils` public statics
are source-breaking for out-of-tree code compiled against `pinot-common`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]