2828from .. import db
2929
3030
31+ @dataclass (frozen = True )
32+ class GridMetadata :
33+ base_length : int
34+ region : Optional [int ] = None
35+
36+
3137class StrikeGridState (TimingState ):
32- __slots__ = ['grid_parameters' , 'time_interval' ]
38+ __slots__ = ['grid_parameters' , 'grid_metadata' , ' time_interval' ]
3339
34- def __init__ (self , statsd_client , grid_parameters , time_interval ):
40+ def __init__ (self , statsd_client , grid_parameters , grid_metadata , time_interval ):
3541 super ().__init__ ("strikes_grid" , statsd_client )
3642 self .grid_parameters = grid_parameters
43+ self .grid_metadata = grid_metadata
3744 self .time_interval = time_interval
3845
3946
@@ -42,10 +49,11 @@ class StrikeGridQuery:
4249 def __init__ (self , strike_query_builder : db .query_builder .Strike ):
4350 self .strike_query_builder = strike_query_builder
4451
45- def create (self , grid_parameters , minute_length , minute_offset , count_threshold , connection , statsd_client ):
52+ def create (self , grid_parameters , grid_metadata , minute_length , minute_offset , count_threshold , connection ,
53+ statsd_client ):
4654 time_interval = create_time_interval (minute_length , minute_offset )
4755
48- state = StrikeGridState (statsd_client , grid_parameters , time_interval )
56+ state = StrikeGridState (statsd_client , grid_parameters , grid_metadata , time_interval )
4957
5058 query = self .strike_query_builder .grid_query (db .table .Strike .table_name , grid_parameters ,
5159 time_interval = time_interval , count_threshold = count_threshold )
@@ -92,6 +100,10 @@ def build_grid_response(results, state):
92100 histogram_data = results [1 ]
93101
94102 state .log_gauge ('strikes_grid.size' , len (grid_data ) if grid_data else 0 )
103+ state .log_gauge (f'strikes_grid.size.{ state .grid_metadata .baselength } ' , len (grid_data ))
104+ if state .grid_metadata .region is None :
105+ state .log_gauge ('local_strikes_grid.size' , len (grid_data ) if grid_data else 0 )
106+ state .log_gauge (f'local_strikes_grid.size.baselength.{ state .grid_metadata .baselength } ' , len (grid_data ))
95107 state .log_incr ('strikes_grid' )
96108
97109 grid_parameters = state .grid_parameters
@@ -118,10 +130,11 @@ class GlobalStrikeGridQuery:
118130 def __init__ (self , strike_query_builder : db .query_builder .Strike ):
119131 self .strike_query_builder = strike_query_builder
120132
121- def create (self , grid_parameters , minute_length , minute_offset , count_threshold , connection , statsd_client ):
133+ def create (self , grid_parameters , grid_metadata , minute_length , minute_offset , count_threshold , connection ,
134+ statsd_client ):
122135 time_interval = create_time_interval (minute_length , minute_offset )
123136
124- state = StrikeGridState (statsd_client , grid_parameters , time_interval )
137+ state = StrikeGridState (statsd_client , grid_parameters , grid_metadata , time_interval )
125138
126139 query = self .strike_query_builder .global_grid_query (db .table .Strike .table_name , grid_parameters ,
127140 time_interval = time_interval ,
@@ -168,7 +181,7 @@ def build_grid_response(results, state):
168181 histogram_data = results [1 ]
169182
170183 state .log_gauge ('global_strikes_grid.size' , len (grid_data ))
171- state .log_gauge (f'global_strikes_grid.size.{ state .grid_parameters .baselength } ' , len (grid_data ))
184+ state .log_gauge (f'global_strikes_grid.size.{ state .grid_metadata .baselength } ' , len (grid_data ))
172185 state .log_incr ('global_strikes_grid' )
173186
174187 grid_parameters = state .grid_parameters
0 commit comments