Show More
@@ -21,14 +21,14 b'' | |||||
21 | import os |
|
21 | import os | |
22 | import atexit |
|
22 | import atexit | |
23 | import logging |
|
23 | import logging | |
|
24 | import signal | |||
24 |
|
25 | |||
25 | log = logging.getLogger(__name__) |
|
26 | log = logging.getLogger(__name__) | |
26 |
|
27 | |||
27 |
cache_keys_by_pid = |
|
28 | cache_keys_by_pid = set() | |
28 |
|
29 | |||
29 |
|
30 | |||
30 | @atexit.register |
|
31 | def free_cache_keys(*args): | |
31 | def free_cache_keys(): |
|
|||
32 | ssh_cmd = os.environ.get('RC_CMD_SSH_WRAPPER') |
|
32 | ssh_cmd = os.environ.get('RC_CMD_SSH_WRAPPER') | |
33 | if ssh_cmd: |
|
33 | if ssh_cmd: | |
34 | return |
|
34 | return | |
@@ -38,8 +38,14 b' def free_cache_keys():' | |||||
38 |
|
38 | |||
39 | if cache_keys_by_pid: |
|
39 | if cache_keys_by_pid: | |
40 | try: |
|
40 | try: | |
41 |
for cache_ |
|
41 | for cache_proc in cache_keys_by_pid: | |
42 |
CacheKey.query().filter(CacheKey.cache_key |
|
42 | CacheKey.query().filter(CacheKey.cache_key.startswith(cache_proc)).delete() | |
43 | Session().commit() |
|
43 | Session().commit() | |
|
44 | cache_keys_by_pid.clear() | |||
44 | except Exception: |
|
45 | except Exception: | |
45 | log.warn('Failed to clear keys, exiting gracefully') |
|
46 | log.warn('Failed to clear keys, exiting gracefully') | |
|
47 | ||||
|
48 | ||||
|
49 | atexit.register(free_cache_keys) | |||
|
50 | signal.signal(signal.SIGTERM, free_cache_keys) | |||
|
51 | signal.signal(signal.SIGINT, free_cache_keys) |
@@ -354,6 +354,7 b' class InvalidationContext(object):' | |||||
354 | self.cache_key = compute_key_from_params(uid) |
|
354 | self.cache_key = compute_key_from_params(uid) | |
355 | self.cache_key = 'proc:{}|thread:{}|params:{}'.format( |
|
355 | self.cache_key = 'proc:{}|thread:{}|params:{}'.format( | |
356 | self.proc_id, self.thread_id, self.cache_key) |
|
356 | self.proc_id, self.thread_id, self.cache_key) | |
|
357 | self.proc_key = 'proc:{}'.format(self.proc_id) | |||
357 | self.compute_time = 0 |
|
358 | self.compute_time = 0 | |
358 |
|
359 | |||
359 | def get_or_create_cache_obj(self, cache_type, invalidation_namespace=''): |
|
360 | def get_or_create_cache_obj(self, cache_type, invalidation_namespace=''): | |
@@ -372,7 +373,7 b' class InvalidationContext(object):' | |||||
372 | cache_state_uid = first_cache_obj.cache_state_uid |
|
373 | cache_state_uid = first_cache_obj.cache_state_uid | |
373 | cache_obj = CacheKey(self.cache_key, cache_args=new_cache_args, |
|
374 | cache_obj = CacheKey(self.cache_key, cache_args=new_cache_args, | |
374 | cache_state_uid=cache_state_uid) |
|
375 | cache_state_uid=cache_state_uid) | |
375 |
cache_key_meta.cache_keys_by_pid.a |
|
376 | cache_key_meta.cache_keys_by_pid.add(self.proc_key) | |
376 |
|
377 | |||
377 | return cache_obj |
|
378 | return cache_obj | |
378 |
|
379 |
General Comments 0
You need to be logged in to leave comments.
Login now