walterddr commented on issue #8246:
URL: https://github.com/apache/pinot/issues/8246#issuecomment-1066165696
#8329 seems to work pretty well as a POC: here is my adjusted plan based on
the POC
Problem
===
Currently there are many ad-hoc usage/utils that makes http call to Pinot
components, to name a few
- `ControllerTestUtils` that uses `URLConnection` to Controller
- also uses `HTTPClient` from Apache HTTP module for 2 of the multi-part
request
- FileUploadDownloadClient that uses Apache Common `HTTPClient` with
SSLContext support
- other standalone modules such as Pinot spark/flink connector that uses its
own HTTPUtils
There are discrepancies regarding (1) what's the format of the send data /
return; (2) what type of return code throws exception or encapsulate the
exception in the response code; (3) what default header is being used.
What's more, there are inefficiency in HTTPClient usage: in general
HTTPClient should be used as a singleton and leverage the underlying resource
reused benefit.
Proposal
===
Propose to
1. add HTTPClient in pinot-common that provides generic get/post/put/delete
method to RestAPI and parsing response objects/status code.
- for advance usage such as file upload download, also provide the API
to return closable http response stream.
2. ControllerRequestClient that utilizes the HTTPClient singleton to make
specific requests such as getSchema, getTableConfig, etc.
- later on we can extend to Broker/Server APIs.
3. Replace any http request utils with the client construct (with a static
reference to the singelton HTTPClient)
--
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]