Open
Description
Specifications
- Client Version: 1.40.0
- InfluxDB Version: 2.7.1
- Platform: Ubuntu
- Python Version: 3.10.9
Code sample to reproduce problem
import threading
import time
from influxdb_client import (
InfluxDBClient
)
from influxdb_client.client.write_api import (
WriteOptions,
WriteType,
)
def check_thread_alive():
"""Check if all thread are correctly closed."""
msg: str = f"{len(threading.enumerate())} threads running"
for thread in threading.enumerate():
msg += f"\n > {thread.name}"
print(msg)
data_points = [
{
"measurement": "temperature",
"tags": {"location": "room1"},
"time": "2024-02-02T12:00:00Z",
"fields": {"value": 25.5}
},
{
"measurement": "humidity",
"tags": {"location": "room1"},
"time": "2024-02-02T12:00:00Z",
"fields": {"value": 60}
},
]
print(">>>>>> START")
check_thread_alive()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> create InfluxDBClient")
client = InfluxDBClient(
url="localhost:8086",
org="test",
token="LLxHucOTfD1zSHVSadNRJRzZh_nNZGNf1KrHCieOj847ucB2RcLCBJZogP2zNtMxvAZMlAWsSOHgSJChaO7b3A==")
check_thread_alive()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> create write_api")
batch_write_api = client.write_api(
write_options=WriteOptions(
write_type=WriteType.batching))
check_thread_alive()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> close write_api")
batch_write_api.close()
batch_write_api.flush()
check_thread_alive()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> close InfluxDBClient")
client.close()
check_thread_alive()
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wait 5 s")
time.sleep(5)
check_thread_alive()
print(">>>>>> STOP")
Expected behavior
When we close the batching API, associated threads are closed
Actual behavior
When we close the batching API, the associated thread ThreadPoolExecutor is alway alive
Additional info
My output
>>>>>> START
1 threads running
> MainThread
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> create InfluxDBClient
1 threads running
> MainThread
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> create write_api
2 threads running
> MainThread
> ThreadPoolExecutor-1_0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> close write_api
2 threads running
> MainThread
> ThreadPoolExecutor-1_0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> close InfluxDBClient
2 threads running
> MainThread
> ThreadPoolExecutor-1_0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> wait 5 s
2 threads running
> MainThread
> ThreadPoolExecutor-1_0
>>>>>> STOP