Skip to content

Commit 36114d9

Browse files
authored
Merge branch 'master' into tkdodo/ref/decouple-button-tracking
2 parents 5dcbcc0 + 2b7fe8f commit 36114d9

File tree

3,054 files changed

+65398
-36711
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,054 files changed

+65398
-36711
lines changed

.craft.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ statusProvider:
88
contexts:
99
- 'self-hosted-ubuntu-24.04-amd64'
1010
- 'self-hosted-ubuntu-24.04-arm-arm64'
11+
- 'assemble'
1112
artifactProvider:
1213
name: none
1314
targets:
1415
- id: release
1516
name: docker
16-
source: ghcr.io/getsentry/sentry-self-hosted
17+
source: ghcr.io/getsentry/sentry
1718
target: getsentry/sentry
1819
- id: latest
1920
name: docker
20-
source: ghcr.io/getsentry/sentry-self-hosted
21+
source: ghcr.io/getsentry/sentry
2122
target: getsentry/sentry
2223
targetFormat: '{{{target}}}:latest'
2324
- name: github

.envrc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# initialization (e.g. activating the venv) or giving recommendations on how to reach the desired state.
55
# It also sets useful environment variables.
66
# If you'd like to override or set any custom environment variables, this .envrc will read a .env file at the end.
7-
set -e
7+
set -eu
88

99
# Upgrading Mac can uninstall the Command Line Tools, thus, removing our access to git
1010
# The message talks about xcrun, however, we can use the lack of git as a way to know that we need this
@@ -121,7 +121,7 @@ if [ -n "${SENTRY_DEVENV_NO_REPORT+x}" ]; then
121121
else
122122
# Since direnv traps the EXIT signal we place the temp file under /tmp for the odd time
123123
# the script will use the EXIT path
124-
_SENTRY_LOG_FILE=$(mktemp /tmp/sentry.envrc.$$.out || mktemp /tmp/sentry.envrc.XXXXXXXX.out)
124+
_SENTRY_LOG_FILE=$(mktemp /tmp/sentry.envrc.out.$$.XXXXXX)
125125
exec > >(tee "$_SENTRY_LOG_FILE")
126126
exec 2>&1
127127
debug "Development errors will be reported to Sentry.io. If you wish to opt-out, set SENTRY_DEVENV_NO_REPORT as an env variable."
@@ -188,7 +188,7 @@ python3 -m tools.docker_memory_check
188188
if [ "${PWD##*/}" = "sentry" ]; then
189189
debug "Checking node..."
190190

191-
if [ "${SENTRY_DEVENV_SKIP_FRONTEND}" != "1" ]; then
191+
if [ "${SENTRY_DEVENV_SKIP_FRONTEND:-}" != "1" ]; then
192192
if ! require node; then
193193
die "You don't seem to have node installed. Please run devenv sync."
194194
fi

.github/CODEOWNERS

Lines changed: 66 additions & 84 deletions
Large diffs are not rendered by default.

.pre-commit-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ repos:
4848
language: system
4949
types: [python]
5050
log_file: '.artifacts/flake8.pycodestyle.log'
51+
require_serial: true
5152
- id: mypy
5253
name: mypy
5354
entry: bash -c 'if [ -n "${SENTRY_MYPY_PRE_PUSH:-}" ]; then exec mypy "$@"; fi' --
@@ -124,7 +125,7 @@ repos:
124125
name: prettier
125126
language: system
126127
types_or: [yaml, ts, tsx, javascript, jsx, css, mdx, markdown]
127-
entry: ./node_modules/.bin/prettier --log-level=error --write
128+
entry: ./node_modules/.bin/prettier --log-level=error --write --experimental-cli --no-cache
128129
# https://pre-commit.com/#regular-expressions
129130
exclude: |
130131
(?x)^($^

CHANGES

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,67 @@
1+
25.6.2
2+
------
3+
4+
### Various fixes & improvements
5+
6+
- feat(feedback): enable feedback category option for org stats page (#94649) by @aliu39
7+
- fix(anomaly detection): turn processing back on for dynamic rules (#94652) by @mifu67
8+
- chore(sentry apps): Add SLO for updating servicehooks (#94489) by @Christinarlong
9+
- feat(prevent): Initial RepoTokenTable (#94381) by @ajay-sentry
10+
- feat(aci): automation edit scaffolding (#94595) by @ameliahsu
11+
- feat(replay): add feedback to LLM context (#94315) by @michellewzhang
12+
- chore(opsgenie): instrument opsgenie installation slos (#94587) by @Christinarlong
13+
- chore(detectors): Add google API filtering for Consecutive HTTP detector (#94634) by @roggenkemper
14+
- chore(launchpad): add dev check to skip ff logic on artifact upload path (#94638) by @NicoHinderling
15+
- profiling: allow session expanding (#94633) by @JonasBa
16+
- feat(aci): Add uptime detector form (#94617) by @malwilley
17+
- feat(preprod) Add file id for install file (#94642) by @noahsmartin
18+
- fix(ui): Silence additional AbortErrors (#94644) by @scttcper
19+
- fix(reports): Significantly increase the schedule_organizations deadline (#94596) by @kcons
20+
- feat(aci): add subfilters list to remaining frequency conditions (#94621) by @ameliahsu
21+
- :wrench: chore: add ecosystem to codeowners for sentry apps utils (#94620) by @iamrajjoshi
22+
- fix(ui): Throw error if response is undefined in api client (#94631) by @scttcper
23+
- :wrench: chore: fix and add a couple open pr comment logs (#94614) by @iamrajjoshi
24+
- :wrench: chore: sample sentry app client error slo logs (#94618) by @iamrajjoshi
25+
- feat(launchpad): Create size analysis upload (assemble) endpoint (#94353) by @NicoHinderling
26+
- fix(billing): update conditions for orgStatsBanner to appear (#94493) by @brendanhsentry
27+
- docs(replay): Iterate on bulk delete blueprint (#94494) by @ryan953
28+
- ref(issues): add rate limits to tagkey details (#94626) by @JoshFerge
29+
- feat(simpleTable): Allow `<SimpleTable>` to accept any Div props (#94619) by @ryan953
30+
31+
_Plus 519 more_
32+
33+
25.6.1
34+
------
35+
36+
### Various fixes & improvements
37+
38+
- feat(issues): Add hex parameterization experiment (#93970) by @mrduncan
39+
- feat(feedback): Split feedback tags into tags+context with collapsable sections (#93397) by @ryan953
40+
- ref(grouping): Small changes to grouping tests (#93960) by @lobsterkatie
41+
- ref(replay): adjust timestamps in replay ai summary UI (#93992) by @michellewzhang
42+
- fix(replay): Add handling for null max_segment_id (#93989) by @cmanallen
43+
- chore(issues): Remove traceparent experiment (#93942) by @mrduncan
44+
- ref(trace-items): Pull useGetTraceItemAttributeKeys into hook (#93739) by @Zylphrex
45+
- ref(explore): Visualize should only have 1 y axis (#93938) by @Zylphrex
46+
- feat(preprod): Add analytics to the assemble endpoint (#93871) by @trevor-e
47+
- feat(trace-eap-waterfall): Hiding some attrs (#93964) by @Abdkhan14
48+
- fix(aci): Fix accidental over-logging (#93971) by @kcons
49+
- feat(detectors): Add noise config to DB Query Injection Issue Type (#93943) by @roggenkemper
50+
- ref(dashboards): add a new table widget visualization component (#93902) by @lzhao-sentry
51+
- ref(issues): Remove redundant Type row from Event Grouping Information table (#93892) by @nora-shap
52+
- fix(taskworker) Extend deadlines for check_auth (#93961) by @markstory
53+
- flex: cleanup Flex* custom styling in favor of Flex primitive (#93809) by @JonasBa
54+
- ✨ feat(scm): add environment infomation to suspect commit prs (#93025) by @iamrajjoshi
55+
- ref(feedback): better summarization prompt (#93962) by @vishnupsatish
56+
- ref(replay): include error context in breadcrumb summary (#93669) by @michellewzhang
57+
- chore(issues): Remove regex parameterization experiment (#93958) by @mrduncan
58+
- fix(aci): Ensure slow conditions are consistent (#93895) by @kcons
59+
- feat(feedback): frontend to display summary (#93567) by @vishnupsatish
60+
- feat(devservices): Add tracing mode (#93759) by @hubertdeng123
61+
- ref(profiling): Move flamegraphFrameFilter types around for tsgo (#93948) by @scttcper
62+
63+
_Plus 105 more_
64+
165
25.6.0
266
------
367

CLAUDE.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Sentry is a developer-first error tracking and performance monitoring platform.
1414
- **Task Queue**: Celery 5.5+
1515
- **Databases**: PostgreSQL (primary), Redis, ClickHouse (via Snuba)
1616
- **Message Queue**: Kafka, RabbitMQ
17+
- **Stream Processing**: Arroyo (Kafka consumer/producer framework)
1718
- **Cloud Services**: Google Cloud Platform (Bigtable, Pub/Sub, Storage, KMS)
1819

1920
### Frontend
@@ -320,6 +321,7 @@ def send_email(user_id: int, subject: str, body: str) -> None:
320321
- Mock external services
321322
- Test database isolation with transactions
322323
- Use factories for test data
324+
- For Kafka/Arroyo components: Use `LocalProducer` with `MemoryMessageStorage` instead of mocks
323325

324326
### JavaScript Tests
325327

@@ -404,6 +406,35 @@ analytics.record(
404406
)
405407
```
406408

409+
### Arroyo Stream Processing
410+
411+
```python
412+
# Using Arroyo for Kafka producers with dependency injection for testing
413+
from arroyo.backends.abstract import Producer
414+
from arroyo.backends.kafka import KafkaProducer, KafkaPayload
415+
from arroyo.backends.local.backend import LocalBroker
416+
from arroyo.backends.local.storages.memory import MemoryMessageStorage
417+
418+
# Production producer
419+
def create_kafka_producer(config):
420+
return KafkaProducer(build_kafka_configuration(default_config=config))
421+
422+
# Test producer using Arroyo's LocalProducer
423+
def create_test_producer_factory():
424+
storage = MemoryMessageStorage()
425+
broker = LocalBroker(storage)
426+
return lambda config: broker.get_producer(), storage
427+
428+
# Dependency injection pattern for testable Kafka producers
429+
class MultiProducer:
430+
def __init__(self, topic: Topic, producer_factory: Callable[[Mapping[str, object]], Producer[KafkaPayload]] | None = None):
431+
self.producer_factory = producer_factory or self._default_producer_factory
432+
# ... setup code
433+
434+
def _default_producer_factory(self, config) -> KafkaProducer:
435+
return KafkaProducer(build_kafka_configuration(default_config=config))
436+
```
437+
407438
## Architecture Rules
408439

409440
### Silo Mode
@@ -445,6 +476,17 @@ for org in organizations:
445476

446477
# RIGHT: Use prefetch_related
447478
organizations.prefetch_related('projects')
479+
480+
# WRONG: Use hasattr() for unions
481+
x: str | None = "hello"
482+
if hasattr(x, "replace"):
483+
x = x.replace("e", "a")
484+
485+
# RIGHT: Use isinstance()
486+
x: str | None = "hello"
487+
if isinstance(x, str):
488+
x = x.replace("e", "a")
489+
448490
```
449491

450492
### Frontend

api-docs/components/schemas/organization-details.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,6 @@
114114
},
115115
"task": {
116116
"type": "integer"
117-
},
118-
"user": {
119-
"type": "string",
120-
"nullable": true
121117
}
122118
}
123119
}

api-docs/openapi.json

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,9 @@
9494
}
9595
],
9696
"paths": {
97-
"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/stats/": {
98-
"$ref": "paths/teams/stats.json"
99-
},
100-
"/api/0/organizations/{organization_id_or_slug}/eventids/{event_id}/": {
101-
"$ref": "paths/organizations/event-id-lookup.json"
102-
},
10397
"/api/0/organizations/{organization_id_or_slug}/repos/": {
10498
"$ref": "paths/organizations/repos.json"
10599
},
106-
"/api/0/organizations/{organization_id_or_slug}/repos/{repo_id}/commits/": {
107-
"$ref": "paths/organizations/repo-commits.json"
108-
},
109-
"/api/0/organizations/{organization_id_or_slug}/shortids/{issue_id}/": {
110-
"$ref": "paths/organizations/shortid.json"
111-
},
112100
"/api/0/projects/": {
113101
"$ref": "paths/projects/index.json"
114102
},
@@ -172,9 +160,6 @@
172160
"/api/0/organizations/{organization_id_or_slug}/releases/{version}/commitfiles/": {
173161
"$ref": "paths/releases/organization-release-commit-files.json"
174162
},
175-
"/api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/": {
176-
"$ref": "paths/releases/deploys.json"
177-
},
178163
"/api/0/organizations/{organization_id_or_slug}/sentry-app-installations/": {
179164
"$ref": "paths/integration-platform/sentry-app-installations.json"
180165
},

api-docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "@sentry-internal/api-docs",
33
"version": "1.0.0",
44
"private": true,
5+
"type": "module",
56
"description": "Sentry API docs",
67
"main": "index.js",
78
"scripts": {

0 commit comments

Comments
 (0)