Skip to content

Commit 80bf6e6

Browse files
committed
fix: remove set-cache-item experiment
1 parent e5e9e93 commit 80bf6e6

File tree

6 files changed

+16
-26
lines changed

6 files changed

+16
-26
lines changed

src/sentry/db/models/fields/node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def save(self, subkeys=None):
156156
subkeys = subkeys or {}
157157
subkeys[None] = to_write
158158

159-
nodestore.backend.set_subkeys(self.id, subkeys)
159+
nodestore.backend.set_subkeys(self.id, subkeys, override_cache=True)
160160

161161

162162
class NodeField(GzippedDictField):

src/sentry/issues/escalating_group_forecast.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def save(self) -> None:
4747
self.build_storage_identifier(self.project_id, self.group_id),
4848
self.to_dict(),
4949
ttl=timedelta(GROUP_FORECAST_TTL),
50+
override_cache=True,
5051
)
5152

5253
@classmethod

src/sentry/nodestore/base.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from django.core.cache import BaseCache, InvalidCacheBackendError, caches
99
from django.utils.functional import cached_property
1010

11-
from sentry import options
1211
from sentry.utils import json, metrics
1312
from sentry.utils.services import Service
1413

@@ -231,18 +230,28 @@ def set_bytes(self, item_id: str, data: bytes, ttl: timedelta | None = None) ->
231230
def _set_bytes(self, item_id: str, data: bytes, ttl: timedelta | None = None) -> None:
232231
raise NotImplementedError
233232

234-
def set(self, item_id: str, data: dict[str, str], ttl: timedelta | None = None) -> None:
233+
def set(
234+
self,
235+
item_id: str,
236+
data: dict[str, str],
237+
ttl: timedelta | None = None,
238+
override_cache: bool = False,
239+
) -> None:
235240
"""
236241
Set value for `item_id`. Note that this deletes existing subkeys for `item_id` as
237242
well, use `set_subkeys` to write a value + subkeys.
238243
239244
>>> nodestore.set('key1', {'foo': 'bar'})
240245
"""
241-
return self.set_subkeys(item_id, {None: data}, ttl=ttl)
246+
return self.set_subkeys(item_id, {None: data}, ttl=ttl, override_cache=override_cache)
242247

243248
@sentry_sdk.tracing.trace
244249
def set_subkeys(
245-
self, item_id: str, data: dict[str | None, dict[str, str]], ttl: timedelta | None = None
250+
self,
251+
item_id: str,
252+
data: dict[str | None, dict[str, str]],
253+
ttl: timedelta | None = None,
254+
override_cache: bool = False,
246255
) -> None:
247256
"""
248257
Set value for `item_id` and its subkeys.
@@ -261,7 +270,7 @@ def set_subkeys(
261270
bytes_data = self._encode(data)
262271
self.set_bytes(item_id, bytes_data, ttl=ttl)
263272
# set cache only after encoding and write to nodestore has succeeded
264-
if options.get("nodestore.set-subkeys.enable-set-cache-item"):
273+
if override_cache:
265274
self._set_cache_item(item_id, cache_item)
266275

267276
def cleanup(self, cutoff_timestamp: datetime) -> None:

tests/sentry/nodestore/bigtable/test_backend.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,6 @@ def test_cache(ns):
141141
ns.delete_multi([node_1[0], node_2[0]])
142142
assert ns.get_multi([node_1[0], node_2[0]]) == {node_1[0]: None, node_2[0]: None}
143143

144-
# Setting the item updates cache
145-
new_value = {"event_id": "d" * 32}
146-
ns.set(node_1[0], new_value)
147-
with mock.patch.object(table, "read_row") as mock_read_row:
148-
assert ns.get(node_1[0]) == new_value
149-
assert mock_read_row.call_count == 0
150-
151144
# Missing rows are never cached
152145
assert ns.get("node_4") is None
153146
with mock.patch.object(table, "read_row") as mock_read_row:

tests/sentry/nodestore/django/test_backend.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,6 @@ def test_cache(self):
119119
self.ns.delete_multi([node_1[0], node_2[0]])
120120
assert self.ns.get_multi([node_1[0], node_2[0]]) == {}
121121

122-
# Setting the item updates cache
123-
new_value = {"event_id": "d" * 32}
124-
self.ns.set(node_1[0], new_value)
125-
with mock.patch.object(Node.objects, "get") as mock_get:
126-
assert self.ns.get(node_1[0]) == new_value
127-
assert mock_get.call_count == 0
128-
129122
# Missing rows are never cached
130123
assert self.ns.get("node_4") is None
131124
with mock.patch.object(Node.objects, "get") as mock_get:

tests/sentry/nodestore/test_common.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import pytest
88

99
from sentry.nodestore.django.backend import DjangoNodeStorage
10-
from sentry.testutils.helpers import override_options
1110
from tests.sentry.nodestore.bigtable.test_backend import (
1211
MockedBigtableNodeStorage,
1312
get_temporary_bigtable_nodestorage,
@@ -31,7 +30,6 @@ def ns(request):
3130
yield ns
3231

3332

34-
@override_options({"nodestore.set-subkeys.enable-set-cache-item": False})
3533
def test_get_multi(ns):
3634
nodes = [("a" * 32, {"foo": "a"}), ("b" * 32, {"foo": "b"})]
3735

@@ -42,15 +40,13 @@ def test_get_multi(ns):
4240
assert result == {n[0]: n[1] for n in nodes}
4341

4442

45-
@override_options({"nodestore.set-subkeys.enable-set-cache-item": False})
4643
def test_set(ns):
4744
node_id = "d2502ebbd7df41ceba8d3275595cac33"
4845
data = {"foo": "bar"}
4946
ns.set(node_id, data)
5047
assert ns.get(node_id) == data
5148

5249

53-
@override_options({"nodestore.set-subkeys.enable-set-cache-item": False})
5450
def test_delete(ns):
5551
node_id = "d2502ebbd7df41ceba8d3275595cac33"
5652
data = {"foo": "bar"}
@@ -60,7 +56,6 @@ def test_delete(ns):
6056
assert not ns.get(node_id)
6157

6258

63-
@override_options({"nodestore.set-subkeys.enable-set-cache-item": False})
6459
def test_delete_multi(ns):
6560
nodes = [("node_1", {"foo": "a"}), ("node_2", {"foo": "b"})]
6661

@@ -72,7 +67,6 @@ def test_delete_multi(ns):
7267
assert not ns.get(nodes[1][0])
7368

7469

75-
@override_options({"nodestore.set-subkeys.enable-set-cache-item": False})
7670
def test_set_subkeys(ns):
7771
"""
7872
Subkeys are used to store multiple JSON payloads under the same main key.

0 commit comments

Comments
 (0)