[esArchiver] actually re-delete the .kibana index if we lose recreate race (#72354)
Co-authored-by: spalger <spalger@users.noreply.github.com>
This commit is contained in:
parent
dc7db09533
commit
ef875cf9fe
1 changed files with 6 additions and 8 deletions
|
@ -20,7 +20,6 @@
|
|||
import { Transform, Readable } from 'stream';
|
||||
import { inspect } from 'util';
|
||||
|
||||
import { get, once } from 'lodash';
|
||||
import { Client } from 'elasticsearch';
|
||||
import { ToolingLog } from '@kbn/dev-utils';
|
||||
|
||||
|
@ -54,7 +53,7 @@ export function createCreateIndexStream({
|
|||
// If we're trying to import Kibana index docs, we need to ensure that
|
||||
// previous indices are removed so we're starting w/ a clean slate for
|
||||
// migrations. This only needs to be done once per archive load operation.
|
||||
const deleteKibanaIndicesOnce = once(deleteKibanaIndices);
|
||||
let kibanaIndexAlreadyDeleted = false;
|
||||
|
||||
async function handleDoc(stream: Readable, record: DocRecord) {
|
||||
if (skipDocsFromIndices.has(record.value.index)) {
|
||||
|
@ -70,8 +69,9 @@ export function createCreateIndexStream({
|
|||
|
||||
async function attemptToCreate(attemptNumber = 1) {
|
||||
try {
|
||||
if (isKibana) {
|
||||
await deleteKibanaIndicesOnce({ client, stats, log });
|
||||
if (isKibana && !kibanaIndexAlreadyDeleted) {
|
||||
await deleteKibanaIndices({ client, stats, log });
|
||||
kibanaIndexAlreadyDeleted = true;
|
||||
}
|
||||
|
||||
await client.indices.create({
|
||||
|
@ -90,6 +90,7 @@ export function createCreateIndexStream({
|
|||
err?.body?.error?.reason?.includes('index exists with the same name as the alias') &&
|
||||
attemptNumber < 3
|
||||
) {
|
||||
kibanaIndexAlreadyDeleted = false;
|
||||
const aliasStr = inspect(aliases);
|
||||
log.info(
|
||||
`failed to create aliases [${aliasStr}] because ES indicated an index/alias already exists, trying again`
|
||||
|
@ -98,10 +99,7 @@ export function createCreateIndexStream({
|
|||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
get(err, 'body.error.type') !== 'resource_already_exists_exception' ||
|
||||
attemptNumber >= 3
|
||||
) {
|
||||
if (err?.body?.error?.type !== 'resource_already_exists_exception' || attemptNumber >= 3) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue