mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
ErrorHandling: Fixes issues with bad error messages (#63775)
This commit is contained in:
parent
a2bd98488d
commit
27070c252d
@ -118,6 +118,7 @@ export interface FetchError<T = any> {
|
|||||||
status: number;
|
status: number;
|
||||||
statusText?: string;
|
statusText?: string;
|
||||||
data: T;
|
data: T;
|
||||||
|
message?: string;
|
||||||
cancelled?: boolean;
|
cancelled?: boolean;
|
||||||
isHandled?: boolean;
|
isHandled?: boolean;
|
||||||
config: BackendSrvRequest;
|
config: BackendSrvRequest;
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"github.com/grafana/grafana/pkg/services/secrets"
|
"github.com/grafana/grafana/pkg/services/secrets"
|
||||||
"github.com/grafana/grafana/pkg/services/user"
|
"github.com/grafana/grafana/pkg/services/user"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
|
"github.com/grafana/grafana/pkg/util"
|
||||||
"github.com/grafana/grafana/pkg/web"
|
"github.com/grafana/grafana/pkg/web"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -190,7 +191,7 @@ func (hs *HTTPServer) tryAutoLogin(c *contextmodel.ReqContext) bool {
|
|||||||
|
|
||||||
func (hs *HTTPServer) LoginAPIPing(c *contextmodel.ReqContext) response.Response {
|
func (hs *HTTPServer) LoginAPIPing(c *contextmodel.ReqContext) response.Response {
|
||||||
if c.IsSignedIn || c.IsAnonymous {
|
if c.IsSignedIn || c.IsAnonymous {
|
||||||
return response.JSON(http.StatusOK, "Logged in")
|
return response.JSON(http.StatusOK, util.DynMap{"message": "Logged in"})
|
||||||
}
|
}
|
||||||
|
|
||||||
return response.Error(401, "Unauthorized", nil)
|
return response.Error(401, "Unauthorized", nil)
|
||||||
|
@ -317,6 +317,11 @@ export class BackendSrv implements BackendService {
|
|||||||
let description = '';
|
let description = '';
|
||||||
let message = err.data.message;
|
let message = err.data.message;
|
||||||
|
|
||||||
|
// Sometimes we have a better error message on err.message
|
||||||
|
if (message === 'Unexpected error' && err.message) {
|
||||||
|
message = err.message;
|
||||||
|
}
|
||||||
|
|
||||||
if (message.length > 80) {
|
if (message.length > 80) {
|
||||||
description = message;
|
description = message;
|
||||||
message = 'Error';
|
message = 'Error';
|
||||||
|
@ -275,6 +275,26 @@ describe('backendSrv', () => {
|
|||||||
'bogus-trace-id',
|
'bogus-trace-id',
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('It should favor error.message for fetch errors when error.data.message is Unexpected error', async () => {
|
||||||
|
const { backendSrv, appEventsMock } = getTestContext({});
|
||||||
|
backendSrv.showErrorAlert(
|
||||||
|
{
|
||||||
|
url: 'api/do/something',
|
||||||
|
} as BackendSrvRequest,
|
||||||
|
{
|
||||||
|
data: {
|
||||||
|
message: 'Unexpected error',
|
||||||
|
},
|
||||||
|
message: 'Failed to fetch',
|
||||||
|
status: 500,
|
||||||
|
config: {
|
||||||
|
url: '',
|
||||||
|
},
|
||||||
|
} as FetchError
|
||||||
|
);
|
||||||
|
expect(appEventsMock.emit).toHaveBeenCalledWith(AppEvents.alertError, ['Failed to fetch', '']);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
import { isFetchError } from '@grafana/runtime';
|
import { isFetchError } from '@grafana/runtime';
|
||||||
|
|
||||||
export function getMessageFromError(err: unknown): string {
|
export function getMessageFromError(err: unknown): string {
|
||||||
|
if (typeof err === 'string') {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
if (typeof err === 'string') {
|
if (err instanceof Error) {
|
||||||
return err;
|
|
||||||
} else if (err instanceof Error) {
|
|
||||||
return err.message;
|
return err.message;
|
||||||
} else if (isFetchError(err)) {
|
} else if (isFetchError(err)) {
|
||||||
if (err.data && err.data.message) {
|
if (err.data && err.data.message) {
|
||||||
@ -14,5 +16,6 @@ export function getMessageFromError(err: unknown): string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return JSON.stringify(err);
|
return JSON.stringify(err);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user