firebase / firebase/firebase-admin-node

deleteApp apparently doesn't complete teardown of Firestore connections

Đang mở
#2,825 1 bình luận 0 reaction 1 người được giao Được @lahirumaramba nhận Xem trên GitHub
api: core api: firestore
Ngôn ngữ chính
TypeScript
Star
1.7k
Fork
419
Merge trung bình
3 ngày 10 giờ
Pull request đã merge (30 ngày)
16

Mô tả

### Describe your environment

* Operating System version: Fedora Linx 38
* Firebase SDK version: 13.0.2
* Firebase Product: admin SDK apparently / Firestore
* Node.js version: 22.12.0
* NPM version: 11.0.0
* Deno version 2.1.4

### Describe the problem

I'm running a simple Deno test of writing to a document in a Firestore collection. The test passes, but Deno detects leaks:

```
error: Leaks detected:
- "http2Client" was created during the test, but not cleaned up during the test. Close the resource before the end of the test.
- "http2ClientConnection" was created during the test, but not cleaned up during the test. Close the resource before the end of the test.
- 2 intervals were started in this test, but never completed. This is often caused by not calling `clearInterval`.
- 2 timers were started in this test, but never completed. This is often caused by not calling `clearTimeout`.
- An async call to op_http2_poll_client_connection was started in this test, but never completed.
```

#### Steps to reproduce:

```sh
deno test --allow-all leaks-bug.ts
```

#### leaks-bug.ts
```ts
import { initializeApp, cert, deleteApp } from 'firebase-admin/app';
import { getFirestore } from 'firebase-admin/firestore';
import { assertExists } from '@std/assert';

Deno.test('test',
async () => {
// Initialize Cloud Firestore per https://firebase.google.com/docs/firestore/quickstart#initialize -> Node.js -> Initialize on your own server
const app = initializeApp({ credential: cert('service-account-key.json') });
const db = getFirestore(app);

const doc = await db.collection('test').doc('test').set({ foo: 42 });
assertExists(doc); // passes
await deleteApp(app); // doesn't help
await new Promise(resolve => setTimeout(resolve, 10 * 1000)); // doesn't help
}
);
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.