Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2707)

Unified Diff: appengine_module/gae_ts_mon/deferred_metric_store.py

Issue 1531573003: Handle multiple modifications to distribution metrics correctly. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine_module/gae_ts_mon/deferred_metric_store.py
diff --git a/appengine_module/gae_ts_mon/deferred_metric_store.py b/appengine_module/gae_ts_mon/deferred_metric_store.py
index e063fa74a0df1d3d0da07c50636abb487f5bd9a7..1af497b209acaa8d07392f5a1c725df7ade4dd62 100644
--- a/appengine_module/gae_ts_mon/deferred_metric_store.py
+++ b/appengine_module/gae_ts_mon/deferred_metric_store.py
@@ -23,7 +23,7 @@ class DeferredMetricStore(metric_store.MetricStore):
self._thread_local = threading.local()
def initialize_context(self):
- self._thread_local.deferred = {}
+ self._thread_local.deferred = []
def finalize_context(self):
try:
@@ -34,7 +34,7 @@ class DeferredMetricStore(metric_store.MetricStore):
del self._thread_local.deferred
self._thread_local.finalizing = True
try:
- self._base_store.modify_multi(deferred.itervalues())
+ self._base_store.modify_multi(deferred)
finally:
self._thread_local.finalizing = False
@@ -58,9 +58,7 @@ class DeferredMetricStore(metric_store.MetricStore):
'your WSGIApplication with gae_ts_mon.initialize?')
self._base_store.set(name, fields, value, enforce_ge)
else:
- key = (name, fields)
- deferred[key] = metric_store.combine_modifications(
- deferred.get(key),
+ deferred.append(
metric_store.Modification(name, fields, 'set', (value, enforce_ge)))
def incr(self, name, fields, delta, modify_fn=operator.add):
@@ -74,9 +72,7 @@ class DeferredMetricStore(metric_store.MetricStore):
'your WSGIApplication with gae_ts_mon.initialize?')
self._base_store.incr(name, fields, delta, modify_fn)
else:
- key = (name, fields)
- deferred[key] = metric_store.combine_modifications(
- deferred.get(key),
+ deferred.append(
metric_store.Modification(name, fields, 'incr', (delta, modify_fn)))
def reset_for_unittest(self, name=None):
@@ -87,6 +83,7 @@ class DeferredMetricStore(metric_store.MetricStore):
except AttributeError:
pass
else:
- for key in deferred.keys():
- if name is None or key[0] == name:
- del deferred[key]
+ if name is None:
+ self._thread_local.deferred = []
+ else:
+ self._thread_local.deferred = [x for x in deferred if x.name != name]

Powered by Google App Engine
This is Rietveld 408576698