grafana/public/app/plugins/datasource/graphite/utils.ts
kay delaney bad048b7ba
Performance: Standardize lodash imports to use destructured members (#33040)
* Performance: Standardize lodash imports to use destructured members
Changes lodash imports of the form `import x from 'lodash/x'` to
`import { x } from 'lodash'` to reduce bundle size.

* Remove unnecessary _ import from Graph component

* Enforce lodash import style

* Fix remaining lodash imports
2021-04-21 09:38:00 +02:00

22 lines
845 B
TypeScript

import { last } from 'lodash';
/**
* Graphite-web before v1.6 returns HTTP 500 with full stack traces in an HTML page
* when a query fails. It results in massive error alerts with HTML tags in the UI.
* This function removes all HTML tags and keeps only the last line from the stack
* trace which should be the most meaningful.
*/
export function reduceError(error: any): any {
if (error && error.status === 500 && error.data?.message?.startsWith('<body')) {
// Remove all HTML tags and take the last line from the stack trace
const newMessage = last<string>(
error.data.message
.replace(/(<([^>]+)>)/gi, '')
.trim()
.split(/\n/)
)!.replace(/u?&#[^;]+;/g, '');
error.data.message = `Graphite encountered an unexpected error while handling your request. ${newMessage}`;
}
return error;
}