This is an automated email from the ASF dual-hosted git repository.
vogievetsky pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 98db960794 fix task query error decode (#14174)
98db960794 is described below
commit 98db960794688951d18ef1fbab7fe65ef10de1f7
Author: Vadim Ogievetsky <[email protected]>
AuthorDate: Thu Apr 27 15:26:07 2023 -0700
fix task query error decode (#14174)
---
web-console/src/utils/druid-query.spec.ts | 44 +++++++++++++++++++++++++------
web-console/src/utils/druid-query.ts | 5 +++-
2 files changed, 40 insertions(+), 9 deletions(-)
diff --git a/web-console/src/utils/druid-query.spec.ts
b/web-console/src/utils/druid-query.spec.ts
index ffdfeebedf..e19a5c3df1 100644
--- a/web-console/src/utils/druid-query.spec.ts
+++ b/web-console/src/utils/druid-query.spec.ts
@@ -18,7 +18,7 @@
import { sane } from 'druid-query-toolkit';
-import { DruidError, getDruidErrorMessage, parseHtmlError } from
'./druid-query';
+import { DruidError, getDruidErrorMessage } from './druid-query';
describe('DruidQuery', () => {
describe('DruidError.parsePosition', () => {
@@ -198,13 +198,41 @@ describe('DruidQuery', () => {
});
});
- describe('misc', () => {
- it('parseHtmlError', () => {
- expect(parseHtmlError('<div></div>')).toMatchInlineSnapshot(`undefined`);
- });
-
- it('parseHtmlError', () => {
- expect(getDruidErrorMessage({})).toMatchInlineSnapshot(`undefined`);
+ describe('getDruidErrorMessage', () => {
+ it('works with regular error response', () => {
+ expect(
+ getDruidErrorMessage({
+ response: {
+ data: {
+ error: 'SQL parse failed',
+ errorMessage: 'Encountered "<EOF>" at line 1, column 26.\nWas
expecting one of:...',
+ errorClass: 'org.apache.calcite.sql.parser.SqlParseException',
+ host: null,
+ },
+ },
+ }),
+ ).toEqual(`SQL parse failed / Encountered "<EOF>" at line 1, column 26.
+Was expecting one of:... / org.apache.calcite.sql.parser.SqlParseException`);
+ });
+
+ it('works with task error response', () => {
+ expect(
+ getDruidErrorMessage({
+ response: {
+ data: {
+ taskId: '60a761ee-1ef5-437f-ae4c-adcc78c8a94c',
+ state: 'FAILED',
+ error: {
+ error: 'SQL parse failed',
+ errorMessage: 'Encountered "<EOF>" at line 1, column 26.\nWas
expecting one of:...',
+ errorClass: 'org.apache.calcite.sql.parser.SqlParseException',
+ host: null,
+ },
+ },
+ },
+ }),
+ ).toEqual(`SQL parse failed / Encountered "<EOF>" at line 1, column 26.
+Was expecting one of:... / org.apache.calcite.sql.parser.SqlParseException`);
});
});
});
diff --git a/web-console/src/utils/druid-query.ts
b/web-console/src/utils/druid-query.ts
index e558931a3c..030a830c67 100644
--- a/web-console/src/utils/druid-query.ts
+++ b/web-console/src/utils/druid-query.ts
@@ -54,7 +54,10 @@ export function parseHtmlError(htmlStr: string): string |
undefined {
function getDruidErrorObject(e: any): DruidErrorResponse | string {
if (e.response) {
// This is a direct axios response error
- return e.response.data || {};
+ let data = e.response.data || {};
+ // MSQ errors nest their error objects inside the error key. Yo dawg, I
heard you like errors...
+ if (typeof data.error?.error === 'string') data = data.error;
+ return data;
} else {
return e; // Assume the error was passed in directly
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]