Skip to content

fix(delete-user-data): kit/extension parity – kit silently skips deletions under load (concurrency 80 OOM) #3250

Open

Description

@CorieW

delete-user-data kit/extension parity. Priority: critical. User data is left undeleted, and no error is reported.

Difference

The kit's functions use the 2nd gen defaults, so one instance takes up to 80 events at once. The extension's 1st gen functions take one event per instance. When auto-discovery fans out, many handleSearch events land on the same kit instance and it goes over 256 MiB. Every event in flight on that instance is then lost: retries are off, and Cloud Run still logs the requests as 200.

Extension 0.1.30 Kit (kits @ fcdd555)
Concurrency 1 80
CPU ~0.167 (1st gen, 256 MB) 1
Max instances 3000 100 (default)

Reproduced

Extension and kit deployed side by side with the same config: auto-discovery depth 1, 20 root collections × 2,500 docs, and one user-owned doc in each collection. Then one user was deleted.

  • Extension: 20/20 user docs deleted.
  • Kit: 1/20 deleted. Logs show Memory limit of 256 MiB exceeded and 18 × The request failed because ... connection to the instance had an error.
  • Kit redeployed with concurrency: 1, cpu: "gcf_gen1": 20/20 deleted, no errors.

Code

Resolution

Declare concurrency: 1 and cpu: "gcf_gen1" on all three functions, as #3209 (firestore-bigquery-export) and #3233 (firestore-send-email) do. #3206 already sets concurrency: 1 (and internal-only ingress) for this kit, but it is open with conflicts. Either land the delete-user-data part on its own with cpu added, or add cpu to #3206.

Intentional difference

Ingress is always ALLOW_INTERNAL_ONLY, the extension's default. The extension's install-time ingress setting, which ext:migrate carries over with setGlobalOptions, doesn't apply to the kit. Recorded under Intentional Differences in #3249.

Activity

  1. CorieW commented on Oct 20, 2026

    @CorieW
    MemberAuthor

    The ext:migrate path has the same gap. I migrated an extension instance with firebase ext:migrate (CLI 15.31, migration template, kit from kits @ fcdd555). The kit deployed with concurrency 80, 1 vCPU, ALLOW_ALL ingress and the default 100-instance cap. The migration template copies the extension's region, memory, timeout and min instances, but not concurrency or CPU, and the export has no ingress setting. So the kit itself needs to declare these.

  2. self-assigned this
    on Oct 20, 2026
  3. added a commit that references this issue on Oct 27, 2026
    21799db
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions