Skip to content

Commit 0319fd0

Browse files
authored
fix: Remove PROMETHEUS_MULTIPROC_DIR cleanup logic (#123)
1 parent 5440aab commit 0319fd0

File tree

3 files changed

+3
-59
lines changed

3 files changed

+3
-59
lines changed

src/common/core/main.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33
import os
44
import sys
55
import typing
6-
from tempfile import gettempdir
6+
from tempfile import mkdtemp
77

88
from django.core.management import (
99
execute_from_command_line as django_execute_from_command_line,
1010
)
1111

1212
from common.core.cli import healthcheck
13-
from common.core.constants import DEFAULT_PROMETHEUS_MULTIPROC_DIR_NAME
14-
from common.core.utils import clear_directory, make_writable_directory
1513

1614
logger = logging.getLogger(__name__)
1715

@@ -37,13 +35,8 @@ def ensure_cli_env() -> typing.Generator[None, None, None]:
3735
# TODO @khvn26 Move logging setup to here
3836

3937
# Prometheus multiproc support
40-
prom_dir = os.environ.setdefault(
41-
"PROMETHEUS_MULTIPROC_DIR",
42-
os.path.join(gettempdir(), DEFAULT_PROMETHEUS_MULTIPROC_DIR_NAME),
43-
)
44-
if os.path.exists(prom_dir):
45-
clear_directory(prom_dir)
46-
make_writable_directory(prom_dir)
38+
if not os.environ.get("PROMETHEUS_MULTIPROC_DIR"):
39+
os.environ["PROMETHEUS_MULTIPROC_DIR"] = mkdtemp(prefix="flagsmith-prometheus-")
4740

4841
# Currently we don't install Flagsmith modules as a package, so we need to add
4942
# $CWD to the Python path to be able to import them

src/common/core/utils.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import json
22
import logging
3-
import os
43
import pathlib
54
import random
6-
import shutil
75
from functools import lru_cache
86
from itertools import cycle
97
from typing import (
@@ -200,30 +198,3 @@ def using_database_replica(
200198
return manager
201199

202200
return manager.db_manager(chosen_replica)
203-
204-
205-
def clear_directory(directory_path: str) -> None:
206-
"""
207-
Safely clear a directory including all subdirectories and files.
208-
"""
209-
for p in pathlib.Path(directory_path).rglob("*"):
210-
try:
211-
# Ensure that the cleanup doesn't silently fail on
212-
# files and subdirs created by other users.
213-
p.chmod(0o777)
214-
except (PermissionError, FileNotFoundError): # pragma: no cover
215-
pass
216-
217-
shutil.rmtree(directory_path, ignore_errors=True)
218-
219-
220-
def make_writable_directory(directory_path: str) -> None:
221-
os.makedirs(directory_path, exist_ok=True)
222-
223-
try:
224-
# While `mkdir` sets mode=0o777 by default, this can be affected by umask
225-
# resulting in lesser permissions for other users. This step ensures the
226-
# directory is writable for all users.
227-
os.chmod(directory_path, 0o777)
228-
except PermissionError: # pragma: no cover
229-
pass

tests/integration/core/test_main.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import django
44
import pytest
55
from django.core.management import ManagementUtility
6-
from pyfakefs.fake_filesystem import FakeFilesystem
76
from pytest_httpserver import HTTPServer
87

98
from common.core.main import main
@@ -109,25 +108,6 @@ def test_main__healthcheck_http__server_invalid_response__runs_expected(
109108
main(argv)
110109

111110

112-
def test_main__prometheus_multiproc_remove_dir_on_start_default__expected(
113-
monkeypatch: pytest.MonkeyPatch,
114-
fs: FakeFilesystem,
115-
) -> None:
116-
# Given
117-
monkeypatch.delenv("PROMETHEUS_MULTIPROC_DIR_KEEP", raising=False)
118-
119-
fs.create_file(
120-
"/tmp/flagsmith-prometheus/some_metric_file.db",
121-
create_missing_dirs=True,
122-
)
123-
124-
# When
125-
main(["flagsmith"])
126-
127-
# Then
128-
assert not fs.exists("/tmp/flagsmith-prometheus/some_metric_file.db")
129-
130-
131111
def test_main__no_django_configured__expected_0(
132112
monkeypatch: pytest.MonkeyPatch,
133113
) -> None:

0 commit comments

Comments
 (0)