Skip to content

Commit ccb9bda

Browse files
authored
python, ruby: Remove collapsed files after reading (#128)
* merge: Add parse_and_remove_one_collapsed() * python: Use parse_and_remove_one_collapsed() Fixes a regression: we didn't remove old collapsed files. * ruby: Use parse_and_remove_one_collapsed() Fixes same bug from Python.
1 parent 222d16c commit ccb9bda

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

gprofiler/merge.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import random
88
import re
99
from collections import Counter, defaultdict
10+
from pathlib import Path
1011
from typing import Iterable, Optional, Tuple
1112

1213
from gprofiler.docker_client import DockerClient
@@ -53,6 +54,15 @@ def parse_one_collapsed(collapsed: str, add_comm: Optional[str] = None) -> Stack
5354
return stacks
5455

5556

57+
def parse_and_remove_one_collapsed(collapsed: Path, add_comm: Optional[str] = None) -> StackToSampleCount:
58+
"""
59+
Parse a stack-collapsed file and remove it.
60+
"""
61+
data = collapsed.read_text()
62+
collapsed.unlink()
63+
return parse_one_collapsed(data, add_comm)
64+
65+
5666
def parse_many_collapsed(text: str) -> ProcessToStackSampleCounters:
5767
"""
5868
Parse a stack-collapsed listing where stacks are prefixed with the command and pid/tid of their

gprofiler/python.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
from gprofiler.exceptions import CalledProcessError, ProcessStoppedException, StopEventSetException
1717
from gprofiler.log import get_logger_adapter
18-
from gprofiler.merge import parse_many_collapsed, parse_one_collapsed
18+
from gprofiler.merge import parse_and_remove_one_collapsed, parse_many_collapsed
1919
from gprofiler.profiler_base import ProfilerBase, ProfilerInterface
2020
from gprofiler.types import ProcessToStackSampleCounters
2121
from gprofiler.utils import (
@@ -66,7 +66,7 @@ def _profile_process(self, process: Process):
6666
raise StopEventSetException
6767

6868
logger.info(f"Finished profiling process {process.pid} with py-spy")
69-
return parse_one_collapsed(Path(local_output_path).read_text(), comm)
69+
return parse_and_remove_one_collapsed(Path(local_output_path), comm)
7070

7171
def _find_python_processes_to_profile(self) -> List[Process]:
7272
filtered_procs = []

gprofiler/ruby.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from gprofiler.exceptions import ProcessStoppedException, StopEventSetException
1313
from gprofiler.log import get_logger_adapter
14-
from gprofiler.merge import parse_one_collapsed
14+
from gprofiler.merge import parse_and_remove_one_collapsed
1515
from gprofiler.profiler_base import ProfilerBase
1616
from gprofiler.types import ProcessToStackSampleCounters
1717
from gprofiler.utils import pgrep_maps, random_prefix, resource_path, run_process
@@ -58,7 +58,7 @@ def _profile_process(self, process: Process):
5858
raise StopEventSetException
5959

6060
logger.info(f"Finished profiling process {process.pid} with rbspy")
61-
return parse_one_collapsed(Path(local_output_path).read_text(), comm)
61+
return parse_and_remove_one_collapsed(Path(local_output_path), comm)
6262

6363
def snapshot(self) -> ProcessToStackSampleCounters:
6464
processes_to_profile = _find_ruby_processes()

0 commit comments

Comments
 (0)