Skip to content

Commit 217bad1

Browse files
ted kaemmingmattrobenolt
authored andcommitted
Merge pull request #2839 from getsentry/sketch-switch
Disable frequency sketches for Redis by default.
1 parent 7faaa80 commit 217bad1

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/sentry/tsdb/redis.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,15 @@ def __init__(self, prefix='ts:', vnodes=64, **options):
9696
self.cluster, options = get_cluster_from_options(self, options)
9797
self.prefix = prefix
9898
self.vnodes = vnodes
99+
self.enable_frequency_sketches = options.pop('enable_frequency_sketches', False)
99100
super(RedisTSDB, self).__init__(**options)
100101

101102
def validate(self):
102103
logger.debug('Validating Redis version...')
104+
version = Version((2, 8, 18)) if self.enable_frequency_sketches else Version((2, 8, 9))
103105
check_cluster_versions(
104106
self.cluster,
105-
Version((2, 8, 9)),
107+
version,
106108
label='TSDB',
107109
)
108110

@@ -296,6 +298,9 @@ def make_frequency_table_keys(self, model, rollup, timestamp, key):
296298
)
297299

298300
def record_frequency_multi(self, requests, timestamp=None):
301+
if not self.enable_frequency_sketches:
302+
return
303+
299304
if timestamp is None:
300305
timestamp = timezone.now()
301306

@@ -332,6 +337,9 @@ def record_frequency_multi(self, requests, timestamp=None):
332337
self.cluster.execute_commands(commands)
333338

334339
def get_most_frequent(self, model, keys, start, end=None, rollup=None, limit=None):
340+
if not self.enable_frequency_sketches:
341+
raise NotImplementedError("Frequency sketches are disabled.")
342+
335343
rollup, series = self.get_optimal_rollup_series(start, end, rollup)
336344

337345
commands = {}
@@ -354,6 +362,9 @@ def get_most_frequent(self, model, keys, start, end=None, rollup=None, limit=Non
354362
return results
355363

356364
def get_frequency_series(self, model, items, start, end=None, rollup=None):
365+
if not self.enable_frequency_sketches:
366+
raise NotImplementedError("Frequency sketches are disabled.")
367+
357368
rollup, series = self.get_optimal_rollup_series(start, end, rollup)
358369

359370
# Freeze ordering of the members (we'll need these later.)
@@ -381,6 +392,9 @@ def get_frequency_series(self, model, items, start, end=None, rollup=None):
381392
return results
382393

383394
def get_frequency_totals(self, model, items, start, end=None, rollup=None):
395+
if not self.enable_frequency_sketches:
396+
raise NotImplementedError("Frequency sketches are disabled.")
397+
384398
responses = {}
385399

386400
for key, series in self.get_frequency_series(model, items, start, end, rollup).iteritems():

tests/sentry/tsdb/test_redis.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ def setUp(self):
2323
(ONE_HOUR, 24), # 1 days at 1 hour
2424
(ONE_DAY, 30), # 30 days at 1 day
2525
),
26-
vnodes=64
26+
vnodes=64,
27+
enable_frequency_sketches=True,
2728
)
2829

2930
def test_make_counter_key(self):

0 commit comments

Comments
 (0)