Skip to content

Commit 7b19788

Browse files
committed
fix(selectors): harden JSM and Monday pagination draining
- JSM service-desk/request-type drains advance `start` by the actual row count returned (not the fixed page size) and stop on an empty page, so a short non-final page can't skip items. - Monday boards drain now checks `response.ok` per page, surfacing a mid-drain HTTP failure instead of treating it as an empty final page and returning a partial 200.
1 parent a4d1589 commit 7b19788

3 files changed

Lines changed: 17 additions & 4 deletions

File tree

apps/sim/app/api/tools/jsm/selector-requesttypes/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ async function fetchAllJsmRequestTypes(
6060
const pageValues = data.values ?? []
6161
values.push(...pageValues)
6262

63-
if (data.isLastPage === true || !data._links?.next) {
63+
if (data.isLastPage === true || !data._links?.next || pageValues.length === 0) {
6464
return { values, lastResponse }
6565
}
6666

67-
start += JSM_REQUEST_TYPES_PAGE_SIZE
67+
start += pageValues.length
6868

6969
if (page === MAX_JSM_REQUEST_TYPES_PAGES - 1) {
7070
logger.warn('JSM request type list hit pagination cap; list may be incomplete', {

apps/sim/app/api/tools/jsm/selector-servicedesks/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ async function fetchAllJsmServiceDesks(
6060
const pageValues = data.values ?? []
6161
values.push(...pageValues)
6262

63-
if (data.isLastPage === true || !data._links?.next) {
63+
if (data.isLastPage === true || !data._links?.next || pageValues.length === 0) {
6464
return { values, lastResponse }
6565
}
6666

67-
start += JSM_SERVICE_DESKS_PAGE_SIZE
67+
start += pageValues.length
6868

6969
if (page === MAX_JSM_SERVICE_DESKS_PAGES - 1) {
7070
logger.warn('JSM service desk list hit pagination cap; list may be incomplete', {

apps/sim/app/api/tools/monday/boards/route.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,19 @@ export const POST = withRouteHandler(async (request: NextRequest) => {
8484
}),
8585
})
8686

87+
if (!response.ok) {
88+
const details = await response.text().catch(() => '')
89+
logger.error('Monday.com API HTTP error', {
90+
status: response.status,
91+
statusText: response.statusText,
92+
details,
93+
})
94+
return NextResponse.json(
95+
{ error: `Monday.com API error: ${response.status} ${response.statusText}` },
96+
{ status: 500 }
97+
)
98+
}
99+
87100
const data = (await response.json()) as MondayBoardsResponse
88101

89102
if (data.errors?.length) {

0 commit comments

Comments
 (0)