Skip to content

Commit

Permalink
Remove manual retrying
Browse files Browse the repository at this point in the history
  • Loading branch information
jillguyonnet committed Feb 19, 2024
1 parent 738c3bf commit b4e87e9
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 75 deletions.
48 changes: 7 additions & 41 deletions x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ import { isEqual } from 'lodash';

import { SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID } from '../../constants';

import {
defaultFleetErrorHandler,
FleetNotFoundError,
FleetServerHostUnauthorizedError,
} from '../../errors';
import { defaultFleetErrorHandler, FleetServerHostUnauthorizedError } from '../../errors';
import { agentPolicyService, appContextService } from '../../services';
import {
createFleetServerHost,
Expand All @@ -41,43 +37,13 @@ async function checkFleetServerHostsWriteAPIsAllowed(
}

// Fleet Server hosts must have the default host URL in serverless.

const logger = appContextService.getLogger();

async function attempt(nAttempts: number) {
try {
return await getFleetServerHost(soClient, SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID);
} catch (e) {
if (SavedObjectsErrorHelpers.isNotFoundError(e)) {
if (nAttempts > 0) {
logger.warn(
`Retrying retrieving default Fleet Server host id ${SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID} (${
4 - nAttempts
}/3)`
);
await new Promise((r) => setTimeout(r, 1000));
await attempt(nAttempts - 1);
} else {
throw new FleetNotFoundError(
`Fleet Server host id ${SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID} not found in saved objects: ${e.message}`
);
}
} else {
throw new Error(
`Error retrieving default Fleet Server host id ${SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID}: ${e.message}`
);
}
}
}

const serverlessDefaultFleetServerHost = await attempt(3);
if (!serverlessDefaultFleetServerHost) {
throw new Error(
`Default fleet server host id ${SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID} not found`
);
} else if (!isEqual(hostUrls, serverlessDefaultFleetServerHost?.host_urls)) {
const serverlessDefaultFleetServerHost = await getFleetServerHost(
soClient,
SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID
);
if (!isEqual(hostUrls, serverlessDefaultFleetServerHost.host_urls)) {
throw new FleetServerHostUnauthorizedError(
`Fleet server host must have default URL in serverless: ${serverlessDefaultFleetServerHost?.host_urls}`
`Fleet server host must have default URL in serverless: ${serverlessDefaultFleetServerHost.host_urls}`
);
}
}
Expand Down
37 changes: 3 additions & 34 deletions x-pack/plugins/fleet/server/routes/output/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/

import type { RequestHandler, SavedObjectsClientContract } from '@kbn/core/server';
import { SavedObjectsErrorHelpers } from '@kbn/core/server';
import type { TypeOf } from '@kbn/config-schema';

import Boom from '@hapi/boom';
Expand Down Expand Up @@ -190,40 +189,10 @@ async function validateOutputServerless(
}
}

const logger = appContextService.getLogger();

async function attempt(nAttempts: number) {
try {
return await outputService.get(soClient, SERVERLESS_DEFAULT_OUTPUT_ID);
} catch (e) {
if (SavedObjectsErrorHelpers.isNotFoundError(e)) {
if (nAttempts > 0) {
logger.warn(
`Retrying retrieving default Fleet ES output id ${SERVERLESS_DEFAULT_OUTPUT_ID} (${
4 - nAttempts
}/3)`
);
await new Promise((r) => setTimeout(r, 1000));
await attempt(nAttempts - 1);
} else {
throw Boom.badRequest(
`Output id ${SERVERLESS_DEFAULT_OUTPUT_ID} not found in saved objects: ${e.message}`
);
}
} else {
throw new Error(
`Error retrieving default ES output id ${SERVERLESS_DEFAULT_OUTPUT_ID}: ${e.message}`
);
}
}
}

const defaultOutput = await attempt(3);
if (!defaultOutput) {
throw Boom.badRequest('Default ES output not found');
} else if (!isEqual(output.hosts, defaultOutput?.hosts)) {
const defaultOutput = await outputService.get(soClient, SERVERLESS_DEFAULT_OUTPUT_ID);
if (!isEqual(output.hosts, defaultOutput.hosts)) {
throw Boom.badRequest(
`Elasticsearch output host must have default URL in serverless: ${defaultOutput?.hosts}`
`Elasticsearch output host must have default URL in serverless: ${defaultOutput.hosts}`
);
}
}
Expand Down

0 comments on commit b4e87e9

Please sign in to comment.