Skip to content

Commit beba38e

Browse files
Handling rate limit exceeded error
1 parent eff6458 commit beba38e

File tree

1 file changed

+14
-6
lines changed
  • packages/contentstack-branches/src/utils

1 file changed

+14
-6
lines changed

packages/contentstack-branches/src/utils/index.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44
import fs from 'fs';
55
import path from 'path';
6-
import forEach from 'lodash/forEach'
6+
import forEach from 'lodash/forEach';
77
import { configHandler, cliux, messageHandler, sanitizePath } from '@contentstack/cli-utilities';
88
import { MergeParams } from '../interfaces';
99

@@ -73,7 +73,7 @@ export async function getMergeQueueStatus(stackAPIClient, payload): Promise<any>
7373
.mergeQueue(mergeJobUID)
7474
.fetch()
7575
.then((data) => data)
76-
.catch((err) => handleErrorMsg(err));
76+
.catch((err) => handleErrorMsg(err, () => getMergeQueueStatus(stackAPIClient, payload)));
7777
}
7878

7979
export async function executeMergeRequest(stackAPIClient, payload): Promise<any> {
@@ -95,10 +95,18 @@ export async function executeMergeRequest(stackAPIClient, payload): Promise<any>
9595
.branch()
9696
.merge(itemMergeStrategies, queryParams)
9797
.then((data) => data)
98-
.catch((err) => handleErrorMsg(err));
98+
.catch((err) => handleErrorMsg(err, () => executeMergeRequest(stackAPIClient, payload)));
9999
}
100100

101-
export function handleErrorMsg(err) {
101+
export async function handleErrorMsg(err, retryCallback?: () => Promise<any>) {
102+
// Handle rate limit exceeded (status code 429)
103+
if (err?.status === 429 || err?.response?.status === 429) {
104+
await new Promise((resolve) => setTimeout(resolve, 1000)); // 1 sec delay
105+
if (retryCallback) {
106+
return retryCallback(); // Retry the request
107+
}
108+
}
109+
102110
if (err?.errorMessage) {
103111
cliux.print(`Error: ${err.errorMessage}`, { color: 'red' });
104112
} else if (err?.message) {
@@ -116,15 +124,15 @@ export function validateCompareData(branchCompareData) {
116124
forEach(branchCompareData.content_types, (value, key) => {
117125
if (value?.length > 0) {
118126
validCompareData = true;
119-
}
127+
}
120128
});
121129
}
122130

123131
if (branchCompareData.global_fields) {
124132
forEach(branchCompareData.global_fields, (value, key) => {
125133
if (value?.length > 0) {
126134
validCompareData = true;
127-
}
135+
}
128136
});
129137
}
130138

0 commit comments

Comments
 (0)