Skip to content

Commit d65c7e6

Browse files
authored
fix: improve disabling and restoration of ES indexing settings (#4187)
1 parent 3433560 commit d65c7e6

File tree

7 files changed

+13
-12
lines changed

7 files changed

+13
-12
lines changed

packages/migrations/src/migrations/5.38.0/002/ddb-es/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ interface LastEvaluatedKey {
3535
}
3636

3737
interface IndexSettings {
38-
number_of_replicas: number;
3938
refresh_interval: `${number}s`;
4039
}
4140

packages/migrations/src/migrations/5.39.0/001/ddb-es/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ interface LastEvaluatedKey {
3939
}
4040

4141
interface IndexSettings {
42-
number_of_replicas: number;
4342
refresh_interval: `${number}s`;
4443
}
4544

packages/migrations/src/migrations/5.39.2/001/ddb-es/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ interface LastEvaluatedKey {
4343
}
4444

4545
interface IndexSettings {
46-
number_of_replicas: number;
4746
refresh_interval: `${number}s`;
4847
}
4948

packages/migrations/src/migrations/5.39.6/001/ddb-es/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ interface LastEvaluatedKey {
4646
}
4747

4848
interface IndexSettings {
49-
number_of_replicas: number;
5049
refresh_interval: `${number}s`;
5150
}
5251

packages/migrations/src/utils/elasticsearch/disableEsIndexing.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export const disableElasticsearchIndexing = async (
1818
elasticsearchClient: params.elasticsearchClient,
1919
index,
2020
settings: {
21-
number_of_replicas: 0,
2221
refresh_interval: -1
2322
}
2423
});

packages/migrations/src/utils/elasticsearch/fetchOriginalEsSettings.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ interface FetchOriginalElasticsearchSettingsParams {
99
}
1010

1111
interface IndexSettings {
12-
number_of_replicas: number;
1312
refresh_interval: `${number}s`;
1413
}
1514

@@ -21,10 +20,9 @@ export const fetchOriginalElasticsearchSettings = async (
2120
const settings = await esGetIndexSettings({
2221
elasticsearchClient: params.elasticsearchClient,
2322
index,
24-
fields: ["number_of_replicas", "refresh_interval"]
23+
fields: ["refresh_interval"]
2524
});
2625
return {
27-
number_of_replicas: settings.number_of_replicas || 1,
2826
refresh_interval: settings.refresh_interval || "1s"
2927
};
3028
} catch (ex) {

packages/migrations/src/utils/elasticsearch/restoreOriginalEsSettings.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { Logger } from "@webiny/data-migration";
33
import { Client } from "@elastic/elasticsearch";
44

55
interface IndexSettings {
6-
number_of_replicas: number;
7-
refresh_interval: `${number}s`;
6+
refresh_interval: `${number}s` | "-1";
87
}
98

109
interface RestoreOriginalElasticsearchSettingsParams {
@@ -30,13 +29,22 @@ export const restoreOriginalElasticsearchSettings = async (
3029
if (!settings || typeof settings !== "object") {
3130
continue;
3231
}
32+
33+
// We must ensure that the refresh interval is not set to a negative value. Why?
34+
// We've had a case where a migration run has been manually stopped, and the index settings
35+
// were never restored. Once a second run was started and this restore function
36+
// was called, the refresh interval was set to `-1s`, which effectively disabled indexing.
37+
let refreshInterval = settings.refresh_interval || `1s`;
38+
if (refreshInterval === "-1") {
39+
refreshInterval = "1s";
40+
}
41+
3342
try {
3443
await esPutIndexSettings({
3544
elasticsearchClient: params.elasticsearchClient,
3645
index,
3746
settings: {
38-
number_of_replicas: settings.number_of_replicas || 1,
39-
refresh_interval: settings.refresh_interval || `1s`
47+
refresh_interval: refreshInterval
4048
}
4149
});
4250
} catch (ex) {

0 commit comments

Comments
 (0)