Skip to content

Commit 212ffbf

Browse files
committed
merged main
added feedback message truncation SentryClient doesn't check for backfillable feedbacks anymore
1 parent ee44b18 commit 212ffbf

File tree

5 files changed

+23
-21
lines changed

5 files changed

+23
-21
lines changed

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- Add new User Feedback API ([#4286](https://github.com/getsentry/sentry-java/pull/4286))
8+
- We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback
9+
510
### Dependencies
611

712
- Bump Gradle from v8.13 to v8.14.0 ([#4360](https://github.com/getsentry/sentry-java/pull/4360))
@@ -50,8 +55,6 @@
5055

5156
### Features
5257

53-
- Add new User Feedback API ([#4286](https://github.com/getsentry/sentry-java/pull/4286))
54-
- We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback
5558
- Add `SentryWrapper.wrapRunnable` to wrap `Runnable` for use with Sentry ([#4332](https://github.com/getsentry/sentry-java/pull/4332))
5659

5760
### Fixes

sentry/src/main/java/io/sentry/SentryClient.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,10 +1048,8 @@ public void captureSession(final @NotNull Session session, final @Nullable Hint
10481048
sentryId = event.getEventId();
10491049
}
10501050

1051-
final boolean isBackfillable = HintUtils.hasType(hint, Backfillable.class);
1052-
// if event is backfillable we don't wanna trigger capture replay, because it's an event from
1053-
// the past. If feedback already has a replayId, we don't want to overwrite it.
1054-
if (feedback.getReplayId() == null && !isBackfillable) {
1051+
// If feedback already has a replayId, we don't want to overwrite it.
1052+
if (feedback.getReplayId() == null) {
10551053
options.getReplayController().captureReplay(false);
10561054
final @NotNull SentryId replayId = scope.getReplayId();
10571055
if (!replayId.equals(SentryId.EMPTY_ID)) {

sentry/src/main/java/io/sentry/protocol/Feedback.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public final class Feedback implements JsonUnknown, JsonSerializable {
3131
private @Nullable Map<String, Object> unknown;
3232

3333
public Feedback(final @NotNull String message) {
34-
this.message = message;
34+
setMessage(message);
3535
}
3636

3737
public Feedback(final @NotNull Feedback feedback) {
@@ -89,7 +89,12 @@ public void setUrl(final @Nullable String url) {
8989
}
9090

9191
public void setMessage(final @NotNull String message) {
92-
this.message = message;
92+
// Sentry limits the message to 4096 characters
93+
if (message.length() > 4096) {
94+
this.message = message.substring(0, 4096);
95+
} else {
96+
this.message = message;
97+
}
9398
}
9499

95100
@Override

sentry/src/test/java/io/sentry/SentryClientTest.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3166,19 +3166,6 @@ class SentryClientTest {
31663166
)
31673167
}
31683168

3169-
@Test
3170-
fun `captureFeedback does not capture replay when backfilled`() {
3171-
val replayController = mock<ReplayController>()
3172-
val sut = fixture.getSut { it.setReplayController(replayController) }
3173-
3174-
sut.captureFeedback(
3175-
Feedback("message"),
3176-
HintUtils.createWithTypeCheckHint(BackfillableHint()),
3177-
createScope()
3178-
)
3179-
verify(replayController, never()).captureReplay(any())
3180-
}
3181-
31823169
//endregion
31833170

31843171
private fun givenScopeWithStartedSession(errored: Boolean = false, crashed: Boolean = false): IScope {

sentry/src/test/java/io/sentry/protocol/FeedbackTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,13 @@ class FeedbackTest {
4949
assertEquals("unknown", it["unknown"])
5050
}
5151
}
52+
53+
@Test
54+
fun `setting a message longer than 4096 characters truncates the message`() {
55+
val feedback = fixture.getSut()
56+
feedback.message = "X".repeat(4095) + "Y" + "Z"
57+
val expectedMessage = "X".repeat(4095) + "Y"
58+
assertEquals(expectedMessage, feedback.message)
59+
assertEquals(4096, feedback.message.length)
60+
}
5261
}

0 commit comments

Comments
 (0)