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

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: Add a missing test for coverage 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
« no previous file with comments | « no previous file | appengine_module/gae_ts_mon/memcache_metric_store.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..a8f74703ee4f445d2346d222e552fc5f9efed28c 100644
--- a/appengine_module/gae_ts_mon/deferred_metric_store.py
+++ b/appengine_module/gae_ts_mon/deferred_metric_store.py
@@ -3,7 +3,6 @@
# found in the LICENSE file.
import logging
-import operator
import threading
from infra_libs.ts_mon.common import metric_store
@@ -23,7 +22,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 +33,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,12 +57,10 @@ 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):
+ def incr(self, name, fields, delta, modify_fn=None):
try:
deferred = self._thread_local.deferred
except AttributeError:
@@ -74,9 +71,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 +82,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]
« no previous file with comments | « no previous file | appengine_module/gae_ts_mon/memcache_metric_store.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698