def _periodically_usage_report(self):
"""
Greenlet: periodically report the cluster existence to
projectcalico.org. Period is about once per day.
:return: Does not return, unless USAGE_REPORT disabled.
"""
interval = 86400 # Once every 24 hours minus 12 minute jitter
jitter = random.random() * 0.01 * interval
try:
calico_version = str(pkg_resources.require("calico")[0].version)
except ResolutionError:
calico_version = "NA"
_log.info("Started usage report thread. Usage report interval: %s, pre-jitter: %s", interval, jitter)
# Pre-Jitter the reporting thread start by 1% of interval (about 12 minutes)
# Jitter prevents thundering herd for large clusters when the cluster first starts
# Do pre-jitter only for clusters greater than 25.
felix_count = self.estimated_host_count()
if (felix_count >= 25):
gevent.sleep(jitter)
while True:
config = self._config
felix_count = self.estimated_host_count()
cluster_type = "NA"
if self._config.USAGE_REPORT:
_log.info("usage report is enabled")
report_usage_and_get_warnings(calico_version, config.HOSTNAME, config.CLUSTER_GUID, felix_count, cluster_type)
# Jitter by 10% of interval (about 120 minutes)
jitter = random.random() * 0.1 * interval
sleep_time = interval - jitter
_log.info("Usage report interval: %s, sleep-time: %s", interval, sleep_time)
gevent.sleep(sleep_time)
评论列表
文章目录