Skip to content

[FR] Custom default RetryConfig #1615

Description

@regnaio

Is your feature request related to a problem? Please describe.
Please allow users of firebase-admin-node to define their own default RetryConfig

Currently, users are forced to use the default RetryConfig:

export function defaultRetryConfig(): RetryConfig {
  return {
    maxRetries: 4,
    statusCodes: [503],
    ioErrorCodes: ['ECONNRESET', 'ETIMEDOUT'],
    backOffFactor: 0.5,
    maxDelayInMillis: 60 * 1000,
  };
}

Personal use case: I have a Node app where I want zero retries for Firebase HTTP requests. Retries create setTimeout timers that can cause I/O polling blocking of setImmediate according to the Event Loop. Thus, retries are causing hitches (ranging from hundreds of milliseconds to a few seconds) in my otherwise tight setImmediate loop, which I want to run as interrupted as possible


Describe the solution you'd like
Please somehow allow users to define their own RetryConfig, perhaps as a parameter when initalizing Firebase Admin:

import * as admin from 'firebase-admin';

const app = admin.initializeApp(
  options?: admin.AppOptions | undefined, // perhaps include custom RetryConfig as a field in options?
  // ...
)

Describe alternatives you've considered

  1. Wrapping firebase-admin-node in a Worker and using Comlink to successfully prevent I/O polling blocking, but I'd rather avoid using Worker
  2. Rewriting a barebones Node Firebase Admin with only the API endpoints I need, but I'd much rather use the official firebase-admin-node

Additional context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions