Skip to content

Commit 4b274bb

Browse files
committed
s/group_hash/hash and s/parent_group_hash/parent_hash
1 parent 80ed536 commit 4b274bb

File tree

4 files changed

+43
-43
lines changed

4 files changed

+43
-43
lines changed

src/sentry/api/endpoints/group_similar_issues_embeddings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def get(self, request: Request, group) -> Response:
162162

163163
similar_issues_params: SimilarIssuesEmbeddingsRequest = {
164164
"group_id": group.id,
165-
"group_hash": latest_event.get_primary_hash(),
165+
"hash": latest_event.get_primary_hash(),
166166
"project_id": group.project.id,
167167
"stacktrace": stacktrace_string,
168168
"message": group.message,
@@ -184,7 +184,7 @@ def get(self, request: Request, group) -> Response:
184184
organization_id=group.organization.id,
185185
project_id=group.project.id,
186186
group_id=group.id,
187-
group_hash=latest_event.get_primary_hash(),
187+
hash=latest_event.get_primary_hash(),
188188
count_over_threshold=len(
189189
[
190190
result.stacktrace_distance

src/sentry/seer/utils.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,15 @@ class SimilarIssuesEmbeddingsRequest(TypedDict):
102102
k: NotRequired[int] # how many neighbors to find
103103
threshold: NotRequired[float]
104104
group_id: NotRequired[int] # TODO: Remove this once we stop sending it to seer
105-
group_hash: NotRequired[str] # TODO: Make this required once id -> hash change is done
105+
hash: NotRequired[str] # TODO: Make this required once id -> hash change is done
106106

107107

108108
class RawSeerSimilarIssueData(TypedDict):
109109
stacktrace_distance: float
110110
message_distance: float
111111
should_group: bool
112112
parent_group_id: NotRequired[int] # TODO: Remove this once seer stops sending it
113-
parent_group_hash: NotRequired[str] # TODO: Make this required once id -> hash change is done
113+
parent_hash: NotRequired[str] # TODO: Make this required once id -> hash change is done
114114

115115

116116
class SimilarIssuesEmbeddingsResponse(TypedDict):
@@ -125,7 +125,7 @@ class SeerSimilarIssueData:
125125
should_group: bool
126126
parent_group_id: int
127127
# TODO: See if we end up needing the hash here
128-
parent_group_hash: str | None = None
128+
parent_hash: str | None = None
129129

130130
@classmethod
131131
def from_raw(cls, project_id: int, raw_similar_issue_data: RawSeerSimilarIssueData) -> Self:
@@ -141,12 +141,12 @@ def from_raw(cls, project_id: int, raw_similar_issue_data: RawSeerSimilarIssueDa
141141
142142
"""
143143
similar_issue_data = raw_similar_issue_data
144-
parent_group_hash = raw_similar_issue_data.get("parent_group_hash")
144+
parent_hash = raw_similar_issue_data.get("parent_hash")
145145
parent_group_id = raw_similar_issue_data.get("parent_group_id")
146146

147-
if not parent_group_id and not parent_group_hash:
147+
if not parent_group_id and not parent_hash:
148148
raise IncompleteSeerDataError(
149-
"Seer similar issues response missing both `parent_group_id` and `parent_group_hash`"
149+
"Seer similar issues response missing both `parent_group_id` and `parent_hash`"
150150
)
151151

152152
if parent_group_id:
@@ -155,7 +155,7 @@ def from_raw(cls, project_id: int, raw_similar_issue_data: RawSeerSimilarIssueDa
155155

156156
else:
157157
parent_grouphash = (
158-
GroupHash.objects.filter(project_id=project_id, hash=parent_group_hash)
158+
GroupHash.objects.filter(project_id=project_id, hash=parent_hash)
159159
.exclude(state=GroupHash.State.LOCKED_IN_MIGRATION)
160160
.first()
161161
)

tests/sentry/api/endpoints/test_group_similar_issues_embeddings.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -662,14 +662,14 @@ def test_get_formatted_results(self):
662662
similar_issue_data_1 = SeerSimilarIssueData(
663663
message_distance=0.05,
664664
parent_group_id=NonNone(self.similar_event.group_id),
665-
parent_group_hash=NonNone(self.similar_event.get_primary_hash()),
665+
parent_hash=NonNone(self.similar_event.get_primary_hash()),
666666
should_group=True,
667667
stacktrace_distance=0.01,
668668
)
669669
similar_issue_data_2 = SeerSimilarIssueData(
670670
message_distance=0.49,
671671
parent_group_id=NonNone(event_from_second_similar_group.group_id),
672-
parent_group_hash=NonNone(event_from_second_similar_group.get_primary_hash()),
672+
parent_hash=NonNone(event_from_second_similar_group.get_primary_hash()),
673673
should_group=False,
674674
stacktrace_distance=0.23,
675675
)
@@ -720,7 +720,7 @@ def test_simple_only_group_id_returned(self, mock_logger, mock_seer_request):
720720

721721
expected_seer_request_params = {
722722
"group_id": self.group.id,
723-
"group_hash": NonNone(self.event.get_primary_hash()),
723+
"hash": NonNone(self.event.get_primary_hash()),
724724
"project_id": self.project.id,
725725
"stacktrace": EXPECTED_STACKTRACE_STRING,
726726
"message": self.group.message,
@@ -748,7 +748,7 @@ def test_simple_only_hash_returned(self, mock_logger, mock_seer_request):
748748
"responses": [
749749
{
750750
"message_distance": 0.05,
751-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
751+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
752752
"should_group": True,
753753
"stacktrace_distance": 0.01,
754754
}
@@ -767,7 +767,7 @@ def test_simple_only_hash_returned(self, mock_logger, mock_seer_request):
767767

768768
expected_seer_request_params = {
769769
"group_id": self.group.id,
770-
"group_hash": NonNone(self.event.get_primary_hash()),
770+
"hash": NonNone(self.event.get_primary_hash()),
771771
"project_id": self.project.id,
772772
"stacktrace": EXPECTED_STACKTRACE_STRING,
773773
"message": self.group.message,
@@ -797,7 +797,7 @@ def test_simple_group_id_and_hash_returned(self, mock_logger, mock_seer_request)
797797
{
798798
"message_distance": 0.05,
799799
"parent_group_id": NonNone(self.similar_event.group_id),
800-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
800+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
801801
"should_group": True,
802802
"stacktrace_distance": 0.01,
803803
}
@@ -816,7 +816,7 @@ def test_simple_group_id_and_hash_returned(self, mock_logger, mock_seer_request)
816816

817817
expected_seer_request_params = {
818818
"group_id": self.group.id,
819-
"group_hash": NonNone(self.event.get_primary_hash()),
819+
"hash": NonNone(self.event.get_primary_hash()),
820820
"project_id": self.project.id,
821821
"stacktrace": EXPECTED_STACKTRACE_STRING,
822822
"message": self.group.message,
@@ -848,21 +848,21 @@ def test_multiple(self, mock_seer_request, mock_record):
848848
{
849849
"message_distance": 0.05,
850850
"parent_group_id": NonNone(self.similar_event.group_id),
851-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
851+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
852852
"should_group": True,
853853
"stacktrace_distance": 0.002, # Over threshold
854854
},
855855
{
856856
"message_distance": 0.05,
857857
"parent_group_id": NonNone(over_threshold_group_event.group_id),
858-
"parent_group_hash": NonNone(over_threshold_group_event.get_primary_hash()),
858+
"parent_hash": NonNone(over_threshold_group_event.get_primary_hash()),
859859
"should_group": True,
860860
"stacktrace_distance": 0.002, # Over threshold
861861
},
862862
{
863863
"message_distance": 0.05,
864864
"parent_group_id": NonNone(under_threshold_group_event.group_id),
865-
"parent_group_hash": NonNone(under_threshold_group_event.get_primary_hash()),
865+
"parent_hash": NonNone(under_threshold_group_event.get_primary_hash()),
866866
"should_group": False,
867867
"stacktrace_distance": 0.05, # Under threshold
868868
},
@@ -891,7 +891,7 @@ def test_multiple(self, mock_seer_request, mock_record):
891891
organization_id=self.org.id,
892892
project_id=self.project.id,
893893
group_id=self.group.id,
894-
group_hash=NonNone(self.event.get_primary_hash()),
894+
hash=NonNone(self.event.get_primary_hash()),
895895
count_over_threshold=2,
896896
user_id=self.user.id,
897897
)
@@ -900,14 +900,14 @@ def test_multiple(self, mock_seer_request, mock_record):
900900
@mock.patch("sentry.seer.utils.logger")
901901
@mock.patch("sentry.seer.utils.seer_staging_connection_pool.urlopen")
902902
def test_incomplete_return_data(self, mock_seer_request, mock_logger):
903-
# Two suggested groups, one with valid data, one missing both parent group id and parent group hash.
903+
# Two suggested groups, one with valid data, one missing both parent group id and parent hash.
904904
# We should log the second and return the first.
905905
seer_return_value: SimilarIssuesEmbeddingsResponse = {
906906
"responses": [
907907
{
908908
"message_distance": 0.05,
909909
"parent_group_id": NonNone(self.similar_event.group_id),
910-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
910+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
911911
"should_group": True,
912912
"stacktrace_distance": 0.01,
913913
},
@@ -923,11 +923,11 @@ def test_incomplete_return_data(self, mock_seer_request, mock_logger):
923923
response = self.client.get(self.path)
924924

925925
mock_logger.exception.assert_called_with(
926-
"Seer similar issues response missing both `parent_group_id` and `parent_group_hash`",
926+
"Seer similar issues response missing both `parent_group_id` and `parent_hash`",
927927
extra={
928928
"request_params": {
929929
"group_id": NonNone(self.event.group_id),
930-
"group_hash": NonNone(self.event.get_primary_hash()),
930+
"hash": NonNone(self.event.get_primary_hash()),
931931
"project_id": self.project.id,
932932
"stacktrace": EXPECTED_STACKTRACE_STRING,
933933
"message": self.group.message,
@@ -958,14 +958,14 @@ def test_nonexistent_group(self, mock_seer_request, mock_logger):
958958
{
959959
"message_distance": 0.05,
960960
"parent_group_id": NonNone(self.similar_event.group_id),
961-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
961+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
962962
"should_group": True,
963963
"stacktrace_distance": 0.01,
964964
},
965965
{
966966
"message_distance": 0.05,
967967
"parent_group_id": 1121201212312012, # too high to be real
968-
"parent_group_hash": "not a real hash",
968+
"parent_hash": "not a real hash",
969969
"should_group": True,
970970
"stacktrace_distance": 0.01,
971971
},
@@ -979,15 +979,15 @@ def test_nonexistent_group(self, mock_seer_request, mock_logger):
979979
extra={
980980
"request_params": {
981981
"group_id": NonNone(self.event.group_id),
982-
"group_hash": NonNone(self.event.get_primary_hash()),
982+
"hash": NonNone(self.event.get_primary_hash()),
983983
"project_id": self.project.id,
984984
"stacktrace": EXPECTED_STACKTRACE_STRING,
985985
"message": self.group.message,
986986
},
987987
"raw_similar_issue_data": {
988988
"message_distance": 0.05,
989989
"parent_group_id": 1121201212312012,
990-
"parent_group_hash": "not a real hash",
990+
"parent_hash": "not a real hash",
991991
"should_group": True,
992992
"stacktrace_distance": 0.01,
993993
},
@@ -1010,7 +1010,7 @@ def test_empty_seer_return(self, mock_seer_request, mock_record):
10101010
organization_id=self.org.id,
10111011
project_id=self.project.id,
10121012
group_id=self.group.id,
1013-
group_hash=NonNone(self.event.get_primary_hash()),
1013+
hash=NonNone(self.event.get_primary_hash()),
10141014
count_over_threshold=0,
10151015
user_id=self.user.id,
10161016
)
@@ -1079,7 +1079,7 @@ def test_no_optional_params(self, mock_seer_request):
10791079
{
10801080
"message_distance": 0.05,
10811081
"parent_group_id": NonNone(self.similar_event.group_id),
1082-
"parent_group_hash": NonNone(self.similar_event.get_primary_hash()),
1082+
"parent_hash": NonNone(self.similar_event.get_primary_hash()),
10831083
"should_group": True,
10841084
"stacktrace_distance": 0.01,
10851085
}
@@ -1100,7 +1100,7 @@ def test_no_optional_params(self, mock_seer_request):
11001100
body=json.dumps(
11011101
{
11021102
"group_id": self.group.id,
1103-
"group_hash": NonNone(self.event.get_primary_hash()),
1103+
"hash": NonNone(self.event.get_primary_hash()),
11041104
"project_id": self.project.id,
11051105
"stacktrace": EXPECTED_STACKTRACE_STRING,
11061106
"message": self.group.message,
@@ -1124,7 +1124,7 @@ def test_no_optional_params(self, mock_seer_request):
11241124
body=json.dumps(
11251125
{
11261126
"group_id": self.group.id,
1127-
"group_hash": NonNone(self.event.get_primary_hash()),
1127+
"hash": NonNone(self.event.get_primary_hash()),
11281128
"project_id": self.project.id,
11291129
"stacktrace": EXPECTED_STACKTRACE_STRING,
11301130
"message": self.group.message,
@@ -1149,7 +1149,7 @@ def test_no_optional_params(self, mock_seer_request):
11491149
body=json.dumps(
11501150
{
11511151
"group_id": self.group.id,
1152-
"group_hash": NonNone(self.event.get_primary_hash()),
1152+
"hash": NonNone(self.event.get_primary_hash()),
11531153
"project_id": self.project.id,
11541154
"stacktrace": EXPECTED_STACKTRACE_STRING,
11551155
"message": self.group.message,

tests/sentry/seer/test_utils.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def test_simple_similar_issues_embeddings_only_group_id_returned(
8080

8181
params: SimilarIssuesEmbeddingsRequest = {
8282
"group_id": NonNone(event.group_id),
83-
"group_hash": NonNone(event.get_primary_hash()),
83+
"hash": NonNone(event.get_primary_hash()),
8484
"project_id": default_project.id,
8585
"stacktrace": "string",
8686
"message": "message",
@@ -97,7 +97,7 @@ def test_simple_similar_issues_embeddings_only_hash_returned(mock_seer_request,
9797

9898
raw_similar_issue_data: RawSeerSimilarIssueData = {
9999
"message_distance": 0.05,
100-
"parent_group_hash": NonNone(similar_event.get_primary_hash()),
100+
"parent_hash": NonNone(similar_event.get_primary_hash()),
101101
"should_group": True,
102102
"stacktrace_distance": 0.01,
103103
}
@@ -107,7 +107,7 @@ def test_simple_similar_issues_embeddings_only_hash_returned(mock_seer_request,
107107

108108
params: SimilarIssuesEmbeddingsRequest = {
109109
"group_id": NonNone(event.group_id),
110-
"group_hash": NonNone(event.get_primary_hash()),
110+
"hash": NonNone(event.get_primary_hash()),
111111
"project_id": default_project.id,
112112
"stacktrace": "string",
113113
"message": "message",
@@ -134,7 +134,7 @@ def test_simple_similar_issues_embeddings_both_returned(mock_seer_request, defau
134134
raw_similar_issue_data: RawSeerSimilarIssueData = {
135135
"message_distance": 0.05,
136136
"parent_group_id": NonNone(similar_event.group_id),
137-
"parent_group_hash": NonNone(similar_event.get_primary_hash()),
137+
"parent_hash": NonNone(similar_event.get_primary_hash()),
138138
"should_group": True,
139139
"stacktrace_distance": 0.01,
140140
}
@@ -144,7 +144,7 @@ def test_simple_similar_issues_embeddings_both_returned(mock_seer_request, defau
144144

145145
params: SimilarIssuesEmbeddingsRequest = {
146146
"group_id": NonNone(event.group_id),
147-
"group_hash": NonNone(event.get_primary_hash()),
147+
"hash": NonNone(event.get_primary_hash()),
148148
"project_id": default_project.id,
149149
"stacktrace": "string",
150150
"message": "message",
@@ -163,7 +163,7 @@ def test_empty_similar_issues_embeddings(mock_seer_request, default_project):
163163

164164
params: SimilarIssuesEmbeddingsRequest = {
165165
"group_id": NonNone(event.group_id),
166-
"group_hash": NonNone(event.get_primary_hash()),
166+
"hash": NonNone(event.get_primary_hash()),
167167
"project_id": default_project.id,
168168
"stacktrace": "string",
169169
"message": "message",
@@ -192,7 +192,7 @@ def test_from_raw_only_parent_hash(default_project):
192192
similar_event = save_new_event({"message": "Dogs are great!"}, default_project)
193193
raw_similar_issue_data: RawSeerSimilarIssueData = {
194194
"message_distance": 0.05,
195-
"parent_group_hash": NonNone(similar_event.get_primary_hash()),
195+
"parent_hash": NonNone(similar_event.get_primary_hash()),
196196
"should_group": True,
197197
"stacktrace_distance": 0.01,
198198
}
@@ -216,7 +216,7 @@ def test_from_raw_parent_group_id_and_parent_hash(default_project):
216216
raw_similar_issue_data: RawSeerSimilarIssueData = {
217217
"message_distance": 0.05,
218218
"parent_group_id": NonNone(similar_event.group_id),
219-
"parent_group_hash": NonNone(similar_event.get_primary_hash()),
219+
"parent_hash": NonNone(similar_event.get_primary_hash()),
220220
"should_group": True,
221221
"stacktrace_distance": 0.01,
222222
}
@@ -230,7 +230,7 @@ def test_from_raw_parent_group_id_and_parent_hash(default_project):
230230
def test_from_raw_missing_data(default_project):
231231
with pytest.raises(IncompleteSeerDataError):
232232
raw_similar_issue_data: RawSeerSimilarIssueData = {
233-
# missing both `parent_group_id` and `parent_group_hash`
233+
# missing both `parent_group_id` and `parent_hash`
234234
"message_distance": 0.05,
235235
"should_group": True,
236236
"stacktrace_distance": 0.01,
@@ -244,7 +244,7 @@ def test_from_raw_nonexistent_group(default_project):
244244
with pytest.raises(SimilarGroupNotFoundError):
245245
raw_similar_issue_data: RawSeerSimilarIssueData = {
246246
"parent_group_id": 1121201212312012, # too high to be real
247-
"parent_group_hash": "not a real hash",
247+
"parent_hash": "not a real hash",
248248
"message_distance": 0.05,
249249
"should_group": True,
250250
"stacktrace_distance": 0.01,

0 commit comments

Comments
 (0)