firebase / firebase/firebase-admin-python

`firebase_admin.db.reference` leaks connections in a `CLOSE_WAIT` state

Đang mở
#709 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
api: database type: bug
Ngôn ngữ chính
Python
Star
1.2k
Fork
359
Merge trung bình
5 ngày 6 phút
Pull request đã merge (30 ngày)
2

Mô tả

### Step 2: Describe your environment

* Operating System version: OS X Ventura 13.4
* Firebase SDK version: 6.2.0
* Firebase Product: database
* Python version: 3.11.2
* Pip version: 23.1.2

### Step 3: Describe the problem
I have a Python websocket application that creates a reference to RTDB via `firebase_admin.db.reference`, and writes to it via the `set` method. I create one reference per connection to my database. It appears that this reference does not necessarily get cleaned up, as I've noticed in my server that connections with a `CLOSE_WAIT` state are aggregating specifically with this RTDB update. More concerning is that the application appears to be receiving bytes of data at a consistent rate from this connection despite it being in a `CLOSE_WAIT` state.

What is the proper way to tear down a reference once I know I'm done with it? It seems like this is a bug from the `firebase_admin` python package as there don't be any instructions or indication that we need to tear down the reference.

#### Steps to reproduce:
1. Create a Python websocket server with the `websockets` library
2. Within the connection handler, instantiate a reference via `firebase_admin.db.reference` and write a value
3. Approximately 1 minute after the connection terminates, use `netstat` to observe that the connection still exists in a `CLOSE_WAIT` state and that the application is receiving data from it.

Here's my `netstat` output
```
root@474683837e04:/app# netstat -ntuap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:38913 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/python
tcp 25 0 172.24.0.3:34160 34.120.160.131:443 CLOSE_WAIT 1/python
tcp 1 0 172.24.0.3:58576 142.250.191.74:443 CLOSE_WAIT 1/python
tcp6 0 0 :::8080 :::* LISTEN 1/python
udp 0 0 127.0.0.11:54888 0.0.0.0:* -
```

Using connections with all of the `reference` related code commented out and then `netstat`'ing after shows that this issue does not appeare.

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.