ddreyer opened a new pull request, #19899: URL: https://github.com/apache/pinot/pull/19899
`ControllerResponseFilter` logs the full request URI at INFO for every request handled by the controller, so a credential passed as a query parameter is written to the controller log as-is. On a live controller, a `POST /tables?accessToken=...` (rejected with a 400) produced: ``` INFO [ControllerResponseFilter] [grizzly-http-server-3] Handled request from 127.0.0.1 POST https://localhost:19000/tables?accessToken=FAKE-BASE215-QP, content-type application/json status code 400 Bad Request ``` This masks the values of query parameters whose name matches `Obfuscator.DEFAULT`, so that line now reads `...tables?accessToken=*****`. Other parameters keep their original order and values, because things like `?type=OFFLINE` are what make the line useful when debugging. The name is decoded before it's checked, so `access%54oken` doesn't slip past, and a repeated sensitive parameter collapses to a single mask so the number of values isn't shown either. It's independent of, but related to, #19555 (audit log payload redaction) and #19884 (wider `Obfuscator` defaults). Once #19884 merges, this line picks up its extra patterns automatically. `ControllerResponseFilterTest` (new, 6 tests) passes locally and checkstyle is clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
