Skip to content

Commit c880d1d

Browse files
authored
fix: envelope header event id (getsentry/sentry-android#148)
1 parent 4047a75 commit c880d1d

5 files changed

Lines changed: 31 additions & 20 deletions

File tree

sentry-core/src/main/java/io/sentry/core/EnvelopeReader.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,9 @@ SentryEnvelopeItemHeader.class, new SentryEnvelopeItemHeaderAdapter())
5757

5858
SentryEnvelopeHeader header =
5959
deserializeEnvelopeHeader(envelopeBytes, 0, envelopeEndHeaderOffset);
60-
// TODO: until sentry-native writes envelopes header containing event_id
61-
// TODO: Remove @Ignore of unit test
62-
// if (header.getEventId() == null || header.getEventId() == SentryId.EMPTY_ID) {
63-
// throw new IllegalArgumentException("Envelope header is missing required 'event_id'.");
64-
// }
60+
if (header.getEventId() == null || header.getEventId().equals(SentryId.EMPTY_ID)) {
61+
throw new IllegalArgumentException("Envelope header is missing required 'event_id'.");
62+
}
6563

6664
int itemHeaderStartOffset = envelopeEndHeaderOffset + 1;
6765

sentry-core/src/main/java/io/sentry/core/EnvelopeSender.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,15 @@ private void processEnvelope(SentryEnvelope envelope) throws IOException {
8181
items,
8282
item.getHeader().getType());
8383
} else {
84-
// TODO: Until sentry-native sends event_id in the header
85-
// if (envelope.getHeader().getEventId() != event.getEventId()) {
86-
// logger.log(
87-
// SentryLevel.ERROR,
88-
// "Item %d of has a different event id (%s) to the envelope header
89-
// (s)",
90-
// items,
91-
// envelope.getHeader().getEventId(),
92-
// event.getEventId());
93-
// continue;
94-
// }
84+
if (!envelope.getHeader().getEventId().equals(event.getEventId())) {
85+
logger.log(
86+
SentryLevel.ERROR,
87+
"Item %d of has a different event id (%s) to the envelope header (%s)",
88+
items,
89+
envelope.getHeader().getEventId(),
90+
event.getEventId());
91+
continue;
92+
}
9593
hub.captureEvent(event);
9694
logger.log(SentryLevel.DEBUG, "Item %d is being captured.", items);
9795
}

sentry-core/src/main/java/io/sentry/core/protocol/SentryId.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package io.sentry.core.protocol;
22

33
import java.util.UUID;
4+
import org.jetbrains.annotations.NotNull;
45

56
public final class SentryId {
6-
private final UUID uuid;
7+
private final @NotNull UUID uuid;
78

89
public static final SentryId EMPTY_ID = new SentryId(new UUID(0, 0));
910

@@ -27,6 +28,19 @@ public String toString() {
2728
return uuid.toString().replace("-", "");
2829
}
2930

31+
@Override
32+
public boolean equals(Object o) {
33+
if (this == o) return true;
34+
if (o == null || getClass() != o.getClass()) return false;
35+
SentryId sentryId = (SentryId) o;
36+
return uuid.compareTo(sentryId.uuid) == 0;
37+
}
38+
39+
@Override
40+
public int hashCode() {
41+
return uuid.hashCode();
42+
}
43+
3044
private UUID fromStringSentryId(String sentryIdString) {
3145
if (sentryIdString == null) {
3246
return null;

sentry-core/src/test/java/io/sentry/core/EnvelopeSenderTest.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ import com.nhaarman.mockitokotlin2.never
88
import com.nhaarman.mockitokotlin2.times
99
import com.nhaarman.mockitokotlin2.verify
1010
import com.nhaarman.mockitokotlin2.whenever
11+
import io.sentry.core.protocol.SentryId
1112
import java.io.File
1213
import java.io.FileNotFoundException
1314
import java.io.Reader
1415
import java.nio.file.Files
1516
import java.nio.file.Paths
17+
import java.util.Date
18+
import java.util.UUID
1619
import kotlin.test.Test
1720
import kotlin.test.assertFailsWith
1821
import kotlin.test.assertFalse
@@ -62,7 +65,7 @@ class EnvelopeSenderTest {
6265
@Test
6366
fun `when parser is EnvelopeReader and serializer returns instance, event captured, file is deleted `() {
6467
fixture.envelopeReader = EnvelopeReader()
65-
val expected = SentryEvent()
68+
val expected = SentryEvent(SentryId(UUID.fromString("9ec79c33-ec99-42ab-8353-589fcb2e04dc")), Date())
6669
whenever(fixture.serializer!!.deserializeEvent(any<Reader>())).thenReturn(expected)
6770
val sut = fixture.getSut()
6871
val path = getTempEnvelope()

sentry-core/src/test/java/io/sentry/core/SentryEnvelopeTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.nhaarman.mockitokotlin2.any
44
import com.nhaarman.mockitokotlin2.mock
55
import com.nhaarman.mockitokotlin2.whenever
66
import java.io.InputStream
7-
import kotlin.test.Ignore
87
import kotlin.test.Test
98
import kotlin.test.assertEquals
109
import kotlin.test.assertFailsWith
@@ -59,7 +58,6 @@ class SentryEnvelopeTest {
5958
assertEquals("Envelope contains no header.", exception.message)
6059
}
6160

62-
@Ignore("Until sentry-native write it")
6361
@Test
6462
fun `when envelope header has no event_id, reader throws illegal argument`() {
6563
val envelopeReader = EnvelopeReader()

0 commit comments

Comments
 (0)