MCPcopy Create free account
hub / github.com/vercel/vercel / tick

Method tick

packages/cli/src/util/dev/queue-broker.ts:489–550  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

487 }
488
489 private tick(): void {
490 const now = Date.now();
491
492 for (const [key, record] of this.idempotencyRecords) {
493 if (record.expiresAt <= now) {
494 this.idempotencyRecords.delete(key);
495 }
496 }
497
498 for (const [messageId, record] of this.duplicateMessages) {
499 if (record.expiresAt <= now) {
500 this.duplicateMessages.delete(messageId);
501 }
502 }
503
504 for (const group of this.consumerGroups) {
505 const groupDeliveries = this.deliveryState.get(group.id);
506 if (!groupDeliveries) continue;
507
508 for (const [messageId, state] of groupDeliveries) {
509 const message = this.messages.get(messageId);
510
511 // Clean up if message expired
512 if (message) {
513 const expiresAt =
514 new Date(message.createdAt).getTime() + message.retentionMs;
515 if (expiresAt < now) {
516 groupDeliveries.delete(messageId);
517 this.maybeCleanupMessage(messageId);
518 continue;
519 }
520 }
521
522 if (!message) {
523 groupDeliveries.delete(messageId);
524 continue;
525 }
526
527 if (state.status === 'in-flight' && state.leaseExpiresAt < now) {
528 if (state.deliveryCount >= group.maxDeliveries) {
529 output.debug(
530 `queues: message ${messageId} exceeded maxDeliveries (${group.maxDeliveries}) for group "${group.name}", dropping`
531 );
532 groupDeliveries.delete(messageId);
533 this.maybeCleanupMessage(messageId);
534 } else {
535 state.status = 'pending';
536 state.visibleAt = now + group.retryAfterMs;
537 state.leaseExpiresAt = 0;
538 }
539 continue;
540 }
541
542 // Dispatch pending messages that are now visible
543 if (state.status === 'pending' && state.visibleAt <= now) {
544 this.dispatchToConsumer(message, group).catch(err => {
545 output.debug(`queues: unexpected dispatch error: ${err}`);
546 });

Callers 1

constructorMethod · 0.95

Calls 5

maybeCleanupMessageMethod · 0.95
dispatchToConsumerMethod · 0.95
debugMethod · 0.80
getMethod · 0.65
deleteMethod · 0.45

Tested by

no test coverage detected