@@ -395,6 +395,7 @@ def close(self):
395
395
def _MultiProcessValue (_pidFunc = os .getpid ):
396
396
files = {}
397
397
values = []
398
+ pid = {'value' : _pidFunc ()}
398
399
# Use a single global lock when in multi-processing mode
399
400
# as we presume this means there is no threading going on.
400
401
# This avoids the need to also have mutexes in __MmapDict.
@@ -413,22 +414,23 @@ def __init__(self, typ, metric_name, name, labelnames, labelvalues, multiprocess
413
414
414
415
415
416
def __reset (self ):
416
- self ._pid = _pidFunc ()
417
417
typ , metric_name , name , labelnames , labelvalues , multiprocess_mode = self ._params
418
418
if typ == 'gauge' :
419
419
file_prefix = typ + '_' + multiprocess_mode
420
420
else :
421
421
file_prefix = typ
422
422
if file_prefix not in files :
423
423
filename = os .path .join (
424
- os .environ ['prometheus_multiproc_dir' ], '{0}_{1}.db' .format (file_prefix , self . _pid ))
424
+ os .environ ['prometheus_multiproc_dir' ], '{0}_{1}.db' .format (file_prefix , pid [ 'value' ] ))
425
425
files [file_prefix ] = _MmapedDict (filename )
426
426
self ._file = files [file_prefix ]
427
427
self ._key = json .dumps ((metric_name , name , labelnames , labelvalues ))
428
428
self ._value = self ._file .read_value (self ._key )
429
429
430
430
def __check_for_pid_change (self ):
431
- if self ._pid != _pidFunc ():
431
+ actual_pid = _pidFunc ()
432
+ if pid ['value' ] != actual_pid :
433
+ pid ['value' ] = actual_pid
432
434
# There has been a fork(), reset all the values.
433
435
for f in files .values ():
434
436
f .close ()
0 commit comments