You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2022/10/05 00:51:15 UTC
[skywalking-python] branch master updated: feat: make some meter methods thread safe (#241)
This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-python.git
The following commit(s) were added to refs/heads/master by this push:
new 196fda2 feat: make some meter methods thread safe (#241)
196fda2 is described below
commit 196fda2e303a0174ed9cd68fd64e4a37a0499045
Author: jiang1997 <ji...@live.cn>
AuthorDate: Wed Oct 5 08:51:10 2022 +0800
feat: make some meter methods thread safe (#241)
---
skywalking/meter/counter.py | 7 +++++--
skywalking/meter/histogram.py | 6 ++++--
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/skywalking/meter/counter.py b/skywalking/meter/counter.py
index 1a1edec..5fe5389 100644
--- a/skywalking/meter/counter.py
+++ b/skywalking/meter/counter.py
@@ -15,6 +15,7 @@
# limitations under the License.
#
+import threading
import timeit
from enum import Enum
from skywalking.meter.meter import BaseMeter, MeterType
@@ -32,9 +33,11 @@ class Counter(BaseMeter):
self.count = 0
self.previous = 0
self.mode = mode
+ self._lock = threading.Lock()
def increment(self, value):
- self.count += value
+ with self._lock:
+ self.count += value
def get(self):
return self.count
@@ -42,8 +45,8 @@ class Counter(BaseMeter):
def transform(self):
current_value = self.get()
if self.mode == CounterMode.RATE:
- self.previous = current_value
count = current_value - self.previous
+ self.previous = current_value
else:
count = current_value
diff --git a/skywalking/meter/histogram.py b/skywalking/meter/histogram.py
index 5c5e5df..8bd941c 100644
--- a/skywalking/meter/histogram.py
+++ b/skywalking/meter/histogram.py
@@ -15,6 +15,7 @@
# limitations under the License.
#
+import threading
import timeit
from skywalking.meter.meter import BaseMeter, MeterType
from skywalking.protocol.language_agent.Meter_pb2 import MeterBucketValue, MeterData, MeterHistogram
@@ -79,13 +80,14 @@ class Histogram(BaseMeter):
return Histogram.Timer(self)
class Bucket():
-
def __init__(self, bucket):
self.bucket = bucket
self.count = 0
+ self._lock = threading.Lock()
def increment(self, count):
- self.count += count
+ with self._lock:
+ self.count += count
def transform(self):
return MeterBucketValue(bucket=self.bucket, count=self.count)