@@ -92,10 +92,11 @@ def _accumulate_metrics(metrics, accumulate):
9292 sample_timestamps = defaultdict (float )
9393 buckets = defaultdict (lambda : defaultdict (float ))
9494 samples_setdefault = samples .setdefault
95+ generate_pidless_key = lambda x , y : (x , tuple (l for l in y if l [0 ] != 'pid' ))
9596 for s in metric .samples :
9697 name , labels , value , timestamp , exemplar = s
9798 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 )
99100 if metric ._multiprocess_mode in ('min' , 'livemin' ):
100101 current = samples_setdefault (without_pid_key , value )
101102 if value < current :
@@ -150,7 +151,13 @@ def _accumulate_metrics(metrics, accumulate):
150151 samples [(metric .name + '_count' , labels )] = acc
151152
152153 # 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
154161 return metrics .values ()
155162
156163 def collect (self ):
0 commit comments