summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Dever <zdever@pandora.com>2016-04-11 15:19:56 -0700
committerZack Dever <zdever@pandora.com>2016-04-13 17:26:39 -0700
commit81dc89a4fd17e601f8ea1570234d3c6ccf1e0d3a (patch)
tree8399db0c4822c38ae5fba91f233cbff9747413a4
parent00d1a8b5f9fb593055cfabd5f53efb1b0dcc248c (diff)
downloadkafka-python-81dc89a4fd17e601f8ea1570234d3c6ccf1e0d3a.tar.gz
trying to use locks a little less. still not ideal.
-rw-r--r--kafka/metrics/dict_reporter.py11
-rw-r--r--kafka/metrics/kafka_metric.py8
-rw-r--r--kafka/metrics/metrics.py11
-rw-r--r--kafka/metrics/stats/sensor.py7
4 files changed, 18 insertions, 19 deletions
diff --git a/kafka/metrics/dict_reporter.py b/kafka/metrics/dict_reporter.py
index 4888fc8..49af604 100644
--- a/kafka/metrics/dict_reporter.py
+++ b/kafka/metrics/dict_reporter.py
@@ -12,7 +12,7 @@ class DictReporter(AbstractMetricsReporter):
Store all metrics in a two level dictionary of category > name > metric.
"""
def __init__(self, prefix=''):
- self._lock = threading.RLock()
+ self._lock = threading.Lock()
self._prefix = prefix if prefix else '' # never allow None
self._store = {}
@@ -28,14 +28,13 @@ class DictReporter(AbstractMetricsReporter):
}
"""
return dict((category, dict((name, metric.value())
- for name, metric in metrics.items()))
+ for name, metric in list(metrics.items())))
for category, metrics in
- self._store.items())
+ list(self._store.items()))
def init(self, metrics):
- with self._lock:
- for metric in metrics:
- self.metric_change(metric)
+ for metric in metrics:
+ self.metric_change(metric)
def metric_change(self, metric):
with self._lock:
diff --git a/kafka/metrics/kafka_metric.py b/kafka/metrics/kafka_metric.py
index 8bd1b75..75d32a4 100644
--- a/kafka/metrics/kafka_metric.py
+++ b/kafka/metrics/kafka_metric.py
@@ -2,13 +2,13 @@ import time
class KafkaMetric(object):
- def __init__(self, lock, metric_name, measurable, config):
+ # NOTE java constructor takes a lock instance
+ def __init__(self, metric_name, measurable, config):
if not metric_name:
raise ValueError('metric_name must be non-empty')
if not measurable:
raise ValueError('measurable must be non-empty')
self._metric_name = metric_name
- self._lock = lock
self._measurable = measurable
self._config = config
@@ -26,11 +26,9 @@ class KafkaMetric(object):
@config.setter
def config(self, config):
- with self._lock:
- self._config = config
+ self._config = config
def value(self, time_ms=None):
if time_ms is None:
- # with (self._lock): This doesn't seem necessary?
time_ms = time.time() * 1000
return self.measurable.measure(self.config, time_ms)
diff --git a/kafka/metrics/metrics.py b/kafka/metrics/metrics.py
index 0920794..d02f48d 100644
--- a/kafka/metrics/metrics.py
+++ b/kafka/metrics/metrics.py
@@ -134,6 +134,10 @@ class Metrics(object):
Returns:
Sensor: The sensor that is created
"""
+ sensor = self.get_sensor(name)
+ if sensor:
+ return sensor
+
with self._lock:
sensor = self.get_sensor(name)
if not sensor:
@@ -185,10 +189,9 @@ class Metrics(object):
config (MetricConfig, optional): The configuration to use when
measuring this measurable
"""
- with self._lock:
- metric = KafkaMetric(threading.Lock(), metric_name, measurable,
- config or self.config)
- self.register_metric(metric)
+ # NOTE there was a lock here, but i don't think it's needed
+ metric = KafkaMetric(metric_name, measurable, config or self.config)
+ self.register_metric(metric)
def remove_metric(self, metric_name):
"""
diff --git a/kafka/metrics/stats/sensor.py b/kafka/metrics/stats/sensor.py
index 7d179cb..6878096 100644
--- a/kafka/metrics/stats/sensor.py
+++ b/kafka/metrics/stats/sensor.py
@@ -103,8 +103,8 @@ class Sensor(object):
raise ValueError('compound stat must be non-empty')
self._stats.append(compound_stat)
for named_measurable in compound_stat.stats():
- metric = KafkaMetric(self._lock, named_measurable.name,
- named_measurable.stat, config or self._config)
+ metric = KafkaMetric(named_measurable.name, named_measurable.stat,
+ config or self._config)
self._registry.register_metric(metric)
self._metrics.append(metric)
@@ -119,8 +119,7 @@ class Sensor(object):
If None use the sensor default configuration.
"""
with self._lock:
- metric = KafkaMetric(threading.Lock(), metric_name, stat,
- config or self._config)
+ metric = KafkaMetric(metric_name, stat, config or self._config)
self._registry.register_metric(metric)
self._metrics.append(metric)
self._stats.append(stat)