Skip to content

Commit

Permalink
[APM] Avoid APM failing to start when ml is disabled (elastic#42815)
Browse files Browse the repository at this point in the history
* [APM] Fix crash when ml is disabled

* Remove unused props from interface

# Conflicts:
#	x-pack/legacy/plugins/apm/public/components/app/ServiceDetails/ServiceIntegrations/index.tsx
#	x-pack/legacy/plugins/apm/public/hooks/useFetcher.tsx
#	x-pack/legacy/plugins/apm/server/lib/helpers/convert_ui_filters/get_kuery_ui_filter_es.ts
  • Loading branch information
sorenlouv committed Aug 7, 2019
1 parent 4399d41 commit 04c53ab
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 26 deletions.
Expand Up @@ -14,6 +14,7 @@ import { i18n } from '@kbn/i18n';
import { memoize } from 'lodash';
import React, { Fragment } from 'react';
import chrome from 'ui/chrome';
import { idx } from '@kbn/elastic-idx';
import { IUrlParams } from '../../../../context/UrlParamsContext/types';
import { LicenseContext } from '../../../../context/LicenseContext';
import { MachineLearningFlyout } from './MachineLearningFlyout';
Expand All @@ -32,7 +33,7 @@ type FlyoutName = null | 'ML' | 'Watcher';
export class ServiceIntegrations extends React.Component<Props, State> {
public state: State = { isPopoverOpen: false, activeFlyout: null };

public getPanelItems = memoize((mlAvailable: boolean) => {
public getPanelItems = memoize((mlAvailable: boolean | undefined) => {
let panelItems: EuiContextMenuPanelItemDescriptor[] = [];
if (mlAvailable) {
panelItems = panelItems.concat(this.getMLPanelItems());
Expand Down Expand Up @@ -144,7 +145,9 @@ export class ServiceIntegrations extends React.Component<Props, State> {
panels={[
{
id: 0,
items: this.getPanelItems(license.features.ml.is_available)
items: this.getPanelItems(
idx(license, _ => _.features.ml.is_available)
)
}
]}
/>
Expand Down
Expand Up @@ -18,6 +18,7 @@ import { Location } from 'history';
import React, { Component } from 'react';
import { isEmpty } from 'lodash';
import styled from 'styled-components';
import { idx } from '@kbn/elastic-idx';
import { NOT_AVAILABLE_LABEL } from '../../../../../common/i18n';
import { Coordinate } from '../../../../../typings/timeseries';
import { ITransactionChartData } from '../../../../selectors/chartSelectors';
Expand Down Expand Up @@ -68,7 +69,7 @@ export class TransactionCharts extends Component<TransactionChartProps> {
: NOT_AVAILABLE_LABEL;
};

public renderMLHeader(hasValidMlLicense: boolean) {
public renderMLHeader(hasValidMlLicense: boolean | undefined) {
const { hasMLJob } = this.props;
if (!hasValidMlLicense || !hasMLJob) {
return null;
Expand Down Expand Up @@ -140,7 +141,9 @@ export class TransactionCharts extends Component<TransactionChartProps> {
</EuiFlexItem>
<LicenseContext.Consumer>
{license =>
this.renderMLHeader(license.features.ml.is_available)
this.renderMLHeader(
idx(license, _ => _.features.ml.is_available)
)
}
</LicenseContext.Consumer>
</EuiFlexGroup>
Expand Down
Expand Up @@ -5,15 +5,14 @@
*/
import React from 'react';
import { FETCH_STATUS, useFetcher } from '../../hooks/useFetcher';
import { loadLicense } from '../../services/rest/xpack';
import { loadLicense, LicenseApiResponse } from '../../services/rest/xpack';
import { InvalidLicenseNotification } from './InvalidLicenseNotification';

const initialLicense = {
features: {
watcher: { is_available: false },
ml: { is_available: false }
},
license: { is_active: false }
const initialLicense: LicenseApiResponse = {
features: {},
license: {
is_active: false
}
};
export const LicenseContext = React.createContext(initialLicense);

Expand Down
28 changes: 13 additions & 15 deletions x-pack/legacy/plugins/apm/public/services/rest/xpack.ts
Expand Up @@ -9,30 +9,28 @@ import { callApi } from './callApi';

export interface LicenseApiResponse {
license: {
expiry_date_in_millis: number;
is_active: boolean;
type: string;
};
features: {
beats_management: StringMap;
graph: StringMap;
grokdebugger: StringMap;
index_management: StringMap;
logstash: StringMap;
ml: {
beats_management?: StringMap;
graph?: StringMap;
grokdebugger?: StringMap;
index_management?: StringMap;
logstash?: StringMap;
ml?: {
is_available: boolean;
license_type: number;
has_expired: boolean;
enable_links: boolean;
show_links: boolean;
};
reporting: StringMap;
rollup: StringMap;
searchprofiler: StringMap;
security: StringMap;
spaces: StringMap;
tilemap: StringMap;
watcher: {
reporting?: StringMap;
rollup?: StringMap;
searchprofiler?: StringMap;
security?: StringMap;
spaces?: StringMap;
tilemap?: StringMap;
watcher?: {
is_available: boolean;
enable_links: boolean;
show_links: boolean;
Expand Down

0 comments on commit 04c53ab

Please sign in to comment.