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

[ObsUX][Synthtrace] Fallback to latest GA package version if latest prerelease fetch fails #195889

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,40 @@ export class ApmSynthtraceKibanaClient {

async fetchLatestApmPackageVersion() {
this.logger.debug(`Fetching latest APM package version`);
const url = `${this.getFleetApmPackagePath()}?prerelease=true`;
const response = await fetch(url, {
method: 'GET',
headers: kibanaHeaders(),
agent: getFetchAgent(url),
});

const responseJson = await response.json();
const fetchPackageVersion = async ({ prerelease }: { prerelease: boolean }) => {
const url = `${this.getFleetApmPackagePath()}?prerelease=${prerelease}`;
this.logger.debug(`Fetching from URL: ${url}`);

if (response.status !== 200) {
throw new Error(
`Failed to fetch latest APM package version, received HTTP ${response.status} and message: ${responseJson.message}`
);
}
const response = await fetch(url, {
method: 'GET',
headers: kibanaHeaders(),
agent: getFetchAgent(url),
});

const responseJson = await response.json();

const { latestVersion } = responseJson.item;
if (response.status !== 200) {
throw new Error(
`Failed to fetch APM package version, received HTTP ${response.status} and message: ${responseJson.message}`
);
}

return responseJson.item.latestVersion as string;
};

return latestVersion as string;
try {
return await fetchPackageVersion({ prerelease: true });
} catch (error) {
this.logger.debug(
'Fetching latestes prerelease version failed, retrying with latest GA version'
);
const retryResult = await fetchPackageVersion({ prerelease: false }).catch((retryError) => {
throw retryError;
});

return retryResult;
}
}

async installApmPackage(packageVersion?: string) {
Expand Down