From 25c3f40559316c76abdde49b0505b8e40b235088 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Fri, 8 Jan 2021 16:30:51 -0500 Subject: [PATCH] Cache manager name Since the get_myname() may be called much much more frequently now that it is in the deployment flow, have it cache results to save a lot of disk I/O --- confluent_server/confluent/collective/manager.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/confluent_server/confluent/collective/manager.py b/confluent_server/confluent/collective/manager.py index 2f0bc938..3626b4d0 100644 --- a/confluent_server/confluent/collective/manager.py +++ b/confluent_server/confluent/collective/manager.py @@ -28,6 +28,7 @@ import eventlet.green.ssl as ssl import eventlet.green.threading as threading import greenlet import random +import time import sys try: import OpenSSL.crypto as crypto @@ -195,15 +196,21 @@ def connect_to_collective(cert, member): raise Exception("Certificate mismatch in the collective") return remote - +mycachedname = [None, 0] def get_myname(): + if mycachedname[1] > time.time() - 15: + return mycachedname[0] try: with open('/etc/confluent/cfg/myname', 'r') as f: - return f.read().strip() + mycachedname[0] = f.read().strip() + mycachedname[1] = time.time() + return except IOError: myname = socket.gethostname() with open('/etc/confluent/cfg/myname', 'w') as f: f.write(myname) + mycachedname[0] = myname + mycachedname[1] = time.time() return myname def handle_connection(connection, cert, request, local=False):