Skip to content

Commit 08139ef

Browse files
thomasballingerConvex, Inc.
authored andcommitted
Fix staged index-related CLI/deployment skew bug (#40331)
Old deployments don't have these fields. We don't expect old un-upgraded backends to work against new CLIs forever, but the current docker setup doesn't support these yet so this is too fast. Plan to revisit enabling these in a couple months. resolves #200 GitOrigin-RevId: c9411576307724a1fb64f741da873266920654aa
1 parent d686106 commit 08139ef

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed

npm-packages/convex/src/cli/lib/components.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ function printDiff(
511511
msg = msg.slice(0, -1); // strip last new line
512512
logFinishedStep(msg);
513513
}
514-
if (rootDiff.enabled_indexes.length > 0) {
514+
if (rootDiff.enabled_indexes && rootDiff.enabled_indexes.length > 0) {
515515
let msg = opts.dryRun
516516
? `These indexes would be enabled:\n`
517517
: `These indexes are now enabled:\n`;
@@ -521,7 +521,7 @@ function printDiff(
521521
msg = msg.slice(0, -1); // strip last new line
522522
logFinishedStep(msg);
523523
}
524-
if (rootDiff.disabled_indexes.length > 0) {
524+
if (rootDiff.disabled_indexes && rootDiff.disabled_indexes.length > 0) {
525525
let msg = opts.dryRun
526526
? `These indexes would be staged:\n`
527527
: `These indexes are now staged:\n`;

npm-packages/convex/src/cli/lib/deploy2.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,9 @@ export async function waitForSchema(
157157
msg = `Backfilling indexes (${indexesComplete}/${indexesTotal} ready)...`;
158158
// Set a more specific message if the backfill is taking a long time
159159
if (Date.now() - start > 10_000) {
160-
const rootDiff = startPush.schemaChange.indexDiffs[""];
160+
const rootDiff = startPush.schemaChange.indexDiffs?.[""];
161161
const indexName = (
162-
rootDiff.added_indexes[0] || rootDiff.enabled_indexes[0]
162+
rootDiff?.added_indexes[0] || rootDiff?.enabled_indexes?.[0]
163163
)?.name;
164164
if (indexName) {
165165
const table = indexName.split(".")[0];

npm-packages/convex/src/cli/lib/deployApi/finishPush.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ export type DeveloperIndexConfig = z.infer<typeof developerIndexConfig>;
7373
export const indexDiff = looseObject({
7474
added_indexes: z.array(developerIndexConfig),
7575
removed_indexes: z.array(developerIndexConfig),
76-
enabled_indexes: z.array(developerIndexConfig),
77-
disabled_indexes: z.array(developerIndexConfig),
76+
enabled_indexes: z.array(developerIndexConfig).optional(),
77+
disabled_indexes: z.array(developerIndexConfig).optional(),
7878
});
7979
export type IndexDiff = z.infer<typeof indexDiff>;
8080

npm-packages/convex/src/cli/lib/deployApi/startPush.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export type StartPushRequest = z.infer<typeof startPushRequest>;
2929
export const schemaChange = looseObject({
3030
allocatedComponentIds: z.any(),
3131
schemaIds: z.any(),
32-
indexDiffs: z.record(componentDefinitionPath, indexDiff),
32+
indexDiffs: z.record(componentDefinitionPath, indexDiff).optional(),
3333
});
3434
export type SchemaChange = z.infer<typeof schemaChange>;
3535

npm-packages/convex/src/cli/lib/indexes.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,10 @@ type SchemaStateResponse = {
4545
type PrepareSchemaResponse = {
4646
added: IndexMetadata[];
4747
dropped: IndexMetadata[];
48-
enabled: IndexMetadata[];
49-
disabled: IndexMetadata[];
5048
schemaId: string;
49+
// added August 22 2025
50+
enabled?: IndexMetadata[];
51+
disabled?: IndexMetadata[];
5152
};
5253

5354
export async function pushSchema(
@@ -266,7 +267,7 @@ function logIndexChanges(
266267
`${dryRun ? "Would add" : "Added"} staged table indexes:\n${indexDiff}`,
267268
);
268269
}
269-
if (indexes.enabled.length > 0) {
270+
if (indexes.enabled && indexes.enabled.length > 0) {
270271
let indexDiff = "";
271272
for (const index of indexes.enabled) {
272273
indexDiff += ` [*] ${stringifyIndex(index)}\n`;
@@ -278,7 +279,7 @@ function logIndexChanges(
278279
: `These indexes are now enabled`;
279280
logFinishedStep(`${text}:\n${indexDiff}`);
280281
}
281-
if (indexes.disabled.length > 0) {
282+
if (indexes.disabled && indexes.disabled.length > 0) {
282283
let indexDiff = "";
283284
for (const index of indexes.disabled) {
284285
indexDiff += ` [*] ${stringifyIndex(index)}\n`;

0 commit comments

Comments
 (0)