@@ -268,7 +268,9 @@ export function createIngestionClient({
268
268
requestOptions ?: RequestOptions ,
269
269
) : Promise < Array < WatchResponse > > {
270
270
let records : Array < PushTaskRecords > = [ ] ;
271
+ let offset = 0 ;
271
272
const responses : Array < WatchResponse > = [ ] ;
273
+ const waitBatchSize = Math . floor ( batchSize / 10 ) || batchSize ;
272
274
273
275
const objectEntries = objects . entries ( ) ;
274
276
for ( const [ i , obj ] of objectEntries ) {
@@ -279,44 +281,48 @@ export function createIngestionClient({
279
281
) ;
280
282
records = [ ] ;
281
283
}
282
- }
283
-
284
- let retryCount = 0 ;
285
-
286
- if ( waitForTasks ) {
287
- for ( const resp of responses ) {
288
- if ( ! resp . eventID ) {
289
- throw new Error ( 'received unexpected response from the push endpoint, eventID must not be undefined' ) ;
290
- }
291
284
292
- await createIterablePromise ( {
293
- func : async ( ) => {
294
- if ( resp . eventID === undefined || ! resp . eventID ) {
295
- throw new Error ( 'received unexpected response from the push endpoint, eventID must not be undefined' ) ;
296
- }
297
-
298
- return this . getEvent ( { runID : resp . runID , eventID : resp . eventID } ) . catch ( ( error : ApiError ) => {
299
- if ( error . status === 404 ) {
300
- return undefined ;
285
+ if (
286
+ waitForTasks &&
287
+ responses . length > 0 &&
288
+ ( responses . length % waitBatchSize === 0 || i === objects . length - 1 )
289
+ ) {
290
+ for ( const resp of responses . slice ( offset , offset + waitBatchSize ) ) {
291
+ if ( ! resp . eventID ) {
292
+ throw new Error ( 'received unexpected response from the push endpoint, eventID must not be undefined' ) ;
293
+ }
294
+
295
+ let retryCount = 0 ;
296
+
297
+ await createIterablePromise ( {
298
+ func : async ( ) => {
299
+ if ( resp . eventID === undefined || ! resp . eventID ) {
300
+ throw new Error ( 'received unexpected response from the push endpoint, eventID must not be undefined' ) ;
301
301
}
302
302
303
- throw error ;
304
- } ) ;
305
- } ,
306
- validate : ( response ) => response !== undefined ,
307
- aggregator : ( ) => ( retryCount += 1 ) ,
308
- error : {
309
- validate : ( ) => retryCount >= 50 ,
310
- message : ( ) => `The maximum number of retries exceeded. (${ retryCount } /${ 50 } )` ,
311
- } ,
312
- timeout : ( ) : number => Math . min ( retryCount * 500 , 5000 ) ,
313
- } ) ;
303
+ return this . getEvent ( { runID : resp . runID , eventID : resp . eventID } ) . catch ( ( error : ApiError ) => {
304
+ if ( error . status === 404 ) {
305
+ return undefined ;
306
+ }
307
+
308
+ throw error ;
309
+ } ) ;
310
+ } ,
311
+ validate : ( response ) => response !== undefined ,
312
+ aggregator : ( ) => ( retryCount += 1 ) ,
313
+ error : {
314
+ validate : ( ) => retryCount >= 50 ,
315
+ message : ( ) => `The maximum number of retries exceeded. (${ retryCount } /${ 50 } )` ,
316
+ } ,
317
+ timeout : ( ) : number => Math . min ( retryCount * 500 , 5000 ) ,
318
+ } ) ;
319
+ }
320
+ offset += waitBatchSize ;
314
321
}
315
322
}
316
323
317
324
return responses ;
318
325
} ,
319
-
320
326
/**
321
327
* Creates a new authentication resource.
322
328
*
0 commit comments