@@ -92,10 +92,11 @@ def _accumulate_metrics(metrics, accumulate):
92
92
sample_timestamps = defaultdict (float )
93
93
buckets = defaultdict (lambda : defaultdict (float ))
94
94
samples_setdefault = samples .setdefault
95
+ generate_pidless_key = lambda x , y : (x , tuple (l for l in y if l [0 ] != 'pid' ))
95
96
for s in metric .samples :
96
97
name , labels , value , timestamp , exemplar = s
97
98
if metric .type == 'gauge' :
98
- without_pid_key = (name , tuple ( l for l in labels if l [ 0 ] != 'pid' ) )
99
+ without_pid_key = generate_pidless_key (name , labels )
99
100
if metric ._multiprocess_mode in ('min' , 'livemin' ):
100
101
current = samples_setdefault (without_pid_key , value )
101
102
if value < current :
@@ -150,7 +151,13 @@ def _accumulate_metrics(metrics, accumulate):
150
151
samples [(metric .name + '_count' , labels )] = acc
151
152
152
153
# Convert to correct sample format.
153
- metric .samples = [Sample (name_ , dict (labels ), value ) for (name_ , labels ), value in samples .items ()]
154
+ timestamped_samples = []
155
+ for (name_ , labels ), value in samples .items ():
156
+ without_pid_key = generate_pidless_key (name_ , labels )
157
+ timestamped_samples .append (
158
+ Sample (name_ , dict (labels ), value , sample_timestamps [without_pid_key ] or None )
159
+ )
160
+ metric .samples = timestamped_samples
154
161
return metrics .values ()
155
162
156
163
def collect (self ):
0 commit comments