Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error handling and reporting in query side #14950

Open
6 tasks
gortiz opened this issue Jan 30, 2025 · 4 comments
Open
6 tasks

Improve error handling and reporting in query side #14950

gortiz opened this issue Jan 30, 2025 · 4 comments

Comments

@gortiz
Copy link
Contributor

gortiz commented Jan 30, 2025

Error handling and reporting can be improved in Pinot. Sometimes, error messages are not easy for users to understand, and the fact that each query engine notifies errors differently makes it even more confusing. Here is a nonexclusive list of improvements we need to apply:

  • On errors, Pinot controller query endpoints inconsistently return broker-like JSON error payloads (if the broker detects the error) or plain text (if the controller itself detected the error)
  • The Pinot controller detected errors are not logged.
  • MSE errors include the stack trace and don't include the actual error code. Instead, error code 200 is always returned.
  • MSE errors are logged several times in the same server.
  • MSE checks and SSE checks are different. Some are copied and pasted in both places, but some constraints are enforced differently.
    • MSE doesn't check if tables are disabled
@gortiz
Copy link
Contributor Author

gortiz commented Jan 30, 2025

Opened #14951 to fix the first two problems

@real-mj-song
Copy link
Contributor

MSE errors are large and don't include the actual error code. Instead, error code 200 is always returned.

💯 agreed. We definitely need a throwable/exception class containing Pinot error code info. I described the reasoning in this comment.

@vrajat
Copy link
Collaborator

vrajat commented Feb 5, 2025

MSE errors include the stack trace and don't include the actual error code. Instead, error code 200 is always returned.

This is true for SSE as well. For example:

"exceptions": [
    {
      "message": "QueryExecutionError:\nQuery execution error on: Server_100.81.71.117_7050 org.apache.pinot.spi.exception.EarlyTerminationException: Interrupted while processing next block",
      "errorCode": 200
    },

The error code should have been 503 or QUERY_CANCELLATION_ERROR_CODE

@gortiz
Copy link
Contributor Author

gortiz commented Feb 5, 2025

Please take a look at #14994

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants