Skip to content

Commit 47382c2

Browse files
authored
Reapply "fix(hybridcloud) Continue to track down write volume from sentryapps v2 (#96657)
This reverts commit 51eed24. Redo of #96587 which was reverted because of semantic conflicts.
1 parent 6540b68 commit 47382c2

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/sentry/hybridcloud/models/cacheversion.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import logging
2-
import random
3-
41
from django.db import models, router, transaction
52
from django.db.models import F
63

@@ -9,8 +6,6 @@
96
from sentry.db.postgres.transactions import enforce_constraints
107
from sentry.options.rollout import in_random_rollout
118

12-
logger = logging.getLogger(__name__)
13-
149

1510
class CacheVersionBase(Model):
1611
class Meta:
@@ -23,8 +18,6 @@ class Meta:
2318
def incr_version(cls, key: str) -> int:
2419
if in_random_rollout("sentry.hybridcloud.cacheversion.rollout"):
2520
with enforce_constraints(transaction.atomic(router.db_for_write(cls))):
26-
if random.random() < 0.01:
27-
logger.info("cacheversion.incr_version", extra={"key": key})
2821
obj, created = cls.objects.select_for_update().get_or_create(
2922
key=key, defaults=dict(version=1)
3023
)
@@ -36,8 +29,6 @@ def incr_version(cls, key: str) -> int:
3629
return obj.version
3730

3831
with enforce_constraints(transaction.atomic(router.db_for_write(cls))):
39-
if random.random() < 0.01:
40-
logger.info("cacheversion.incr_version", extra={"key": key})
4132
cls.objects.create_or_update(
4233
key=key, defaults=dict(version=1), values=dict(version=F("version") + 1)
4334
)

src/sentry/hybridcloud/rpc/caching/service.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
# in modules such as this one where hybrid cloud data models or service classes are
44
# defined, because we want to reflect on type annotations and avoid forward references.
55
import abc
6+
import random
67
from collections.abc import Callable, Generator, Mapping
78
from typing import TYPE_CHECKING, Generic, TypeVar
89

910
import pydantic
11+
import sentry_sdk
1012

1113
from sentry.hybridcloud.rpc.resolvers import ByRegionName
1214
from sentry.hybridcloud.rpc.service import RpcService, regional_rpc_method, rpc_method
@@ -162,7 +164,18 @@ def resolve_from(
162164
try:
163165
metrics.incr("hybridcloud.caching.list.cached", tags={"base_key": self.base_key})
164166
return [self.type_(**item) for item in json.loads(value)]
165-
except (pydantic.ValidationError, JSONDecodeError, TypeError):
167+
except (pydantic.ValidationError, JSONDecodeError, TypeError) as err:
168+
metrics.incr(
169+
"hybridcloud.caching.list.failed_read",
170+
tags={
171+
"base_key": self.base_key,
172+
"err": type(err).__name__,
173+
},
174+
)
175+
if random.random() < 0.001:
176+
with sentry_sdk.isolation_scope() as scope:
177+
scope.set_level("warning")
178+
sentry_sdk.capture_exception(err)
166179
version = yield from _delete_cache(key, self.silo_mode)
167180
else:
168181
version = value

0 commit comments

Comments
 (0)