apache / apache/pulsar-client-python

Disposing of a Python Consumer object without calling close() leaks file descriptors and does not close the consumer.

Offen
#42 3 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @zbentley Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
75
Forks
53
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

**Describe the bug**
If a Python pulsar-client Consumer object is destroyed (garbage collected) without its `close()` method being called, the consumer remains connected, and its file descriptors remain open.

**To Reproduce**
Steps to reproduce the behavior:
1. Run the below snippet.
2. Observe that it segfaults (due to https://github.com/apache/pulsar/issues/14582).

```python
import logging
import resource
import pulsar

def main():
resource.setrlimit(resource.RLIMIT_NOFILE, (15, 15))
for i in range(100):
client = pulsar.Client(service_url='pulsar://localhost', logger=logging.getLogger())
print(f"creating mysub-{i}")
con = client.subscribe(topic='mytopic', subscription_name=f'mysub-{i}')

if __name__ == '__main__':
main()

```

**Expected behavior**
Garbage collecting consumers should result in their no longer being present on the system.

**Desktop (please complete the following information):**
- OS: MacOS Monterey (x86)
- Pulsar client 2.9.1

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.