Skip to content

Commit 5b00b91

Browse files
authored
[Fix][SDK-575] Keep telemetry events during session (#362)
* fix: keep telemetry events during session, dump method is replaced by getAll this shouldn't be a problem for a user since this functions are new and expected to be used internally only * fix: lint * fix: revapi file * fix: revapi file
1 parent c97abeb commit 5b00b91

File tree

5 files changed

+37
-15
lines changed

5 files changed

+37
-15
lines changed

.palantir/revapi.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,17 @@ acceptedBreaks:
5050
justification: "This is a binary compatible change, which could only break custom\
5151
\ implementations of our config interfaces, but those interfaces are not meant\
5252
\ to be implemented by users"
53+
"2.2.0":
54+
com.rollbar:rollbar-java:
55+
- code: "java.method.removed"
56+
old: "method java.util.List<com.rollbar.api.payload.data.TelemetryEvent> com.rollbar.notifier.telemetry.RollbarTelemetryEventTracker::dump()"
57+
justification: "This method is replaced by getAll(), the interface is not meant to be\
58+
\ implemented by users"
59+
- code: "java.method.removed"
60+
old: "method java.util.List<com.rollbar.api.payload.data.TelemetryEvent> com.rollbar.notifier.telemetry.TelemetryEventTracker::dump()"
61+
justification: "This method is replaced by getAll(), the interface is not meant to be\
62+
\ implemented by users"
63+
- code: "java.method.addedToInterface"
64+
new: "method java.util.List<com.rollbar.api.payload.data.TelemetryEvent> com.rollbar.notifier.telemetry.TelemetryEventTracker::getAll()"
65+
justification: "This method replaces dump(), the interface is not meant to be implemented\
66+
\ by users"

rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ protected RollbarThrowableWrapper wrapThrowable(Throwable error) {
353353
protected abstract RESULT sendPayload(C config, Payload payload);
354354

355355
private Body makeBody(ThrowableWrapper error, String description) {
356-
List<TelemetryEvent> telemetryEvents = telemetryEventTracker.dump();
356+
List<TelemetryEvent> telemetryEvents = telemetryEventTracker.getAll();
357357
if (telemetryEvents.isEmpty()) {
358358
return bodyFactory.from(error, description);
359359
}

rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,8 @@ public RollbarTelemetryEventTracker(
5757
}
5858

5959
@Override
60-
public List<TelemetryEvent> dump() {
61-
List<TelemetryEvent> events = new ArrayList<>(telemetryEvents);
62-
telemetryEvents.clear();
63-
return events;
60+
public List<TelemetryEvent> getAll() {
61+
return new ArrayList<>(telemetryEvents);
6462
}
6563

6664
@Override

rollbar-java/src/main/java/com/rollbar/notifier/telemetry/TelemetryEventTracker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
public interface TelemetryEventTracker {
1717

1818
/**
19-
* Dump all the events recorded.
19+
* Get all the events recorded.
2020
*/
21-
List<TelemetryEvent> dump();
21+
List<TelemetryEvent> getAll();
2222

2323
/**
2424
* Record log telemetry event. ({@link TelemetryType#LOG}).

rollbar-java/src/test/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTrackerTest.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,23 @@ public class RollbarTelemetryEventTrackerTest {
3232
private static final int MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS = 0;
3333
private static final int MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS = 100;
3434

35+
@Test
36+
public void shouldKeepAllTheEventsDuringSessionIfGetAllIsInvoked() {
37+
telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE);
38+
39+
List<TelemetryEvent> telemetryEventsFirstCall = telemetryEventTracker.getAll();
40+
List<TelemetryEvent> telemetryEventsSecondCall = telemetryEventTracker.getAll();
41+
42+
assertThat(telemetryEventsFirstCall, is(telemetryEventsSecondCall));
43+
}
44+
3545
@Test
3646
public void shouldDiscardOldestEventsWhenMaxCapacityIsReached() {
3747
telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE);
3848
telemetryEventTracker.recordLogEventFor(LEVEL, SOURCE, MESSAGE);
3949
telemetryEventTracker.recordLogEventFor(LEVEL, SOURCE, MESSAGE);
4050

41-
List<TelemetryEvent> telemetryEvents = telemetryEventTracker.dump();
51+
List<TelemetryEvent> telemetryEvents = telemetryEventTracker.getAll();
4252

4353
assertThat(telemetryEvents.size(), is(MAXIMUM_TELEMETRY_DATA));
4454
verifyContainsOnlyLogEvents(telemetryEvents);
@@ -84,7 +94,7 @@ public void shouldTrackANetworkEvent() {
8494
public void shouldSetTheMaximumTelemetryDataLimitedToItsLowerLimit() {
8595
TelemetryEventTracker telemetryEventTracker = newEventTracker(MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS - 1);
8696

87-
List<TelemetryEvent> telemetryEvents = record70EventsAndDump(telemetryEventTracker);
97+
List<TelemetryEvent> telemetryEvents = record101EventsAndDump(telemetryEventTracker);
8898

8999
assertThat(telemetryEvents.size(), is(MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS));
90100
}
@@ -93,7 +103,7 @@ public void shouldSetTheMaximumTelemetryDataLimitedToItsLowerLimit() {
93103
public void shouldSetTheMaximumTelemetryDataLimitedToItsUpperLimit() {
94104
TelemetryEventTracker telemetryEventTracker = newEventTracker(MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS + 1);
95105

96-
List<TelemetryEvent> telemetryEvents = record70EventsAndDump(telemetryEventTracker);
106+
List<TelemetryEvent> telemetryEvents = record101EventsAndDump(telemetryEventTracker);
97107

98108
assertThat(telemetryEvents.size(), is(MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS));
99109
}
@@ -103,7 +113,7 @@ public void shouldSetTheMaximumTelemetryDataLimitedToAValueBetweenBounds() {
103113
int maximumTelemetryEvents = 20;
104114
TelemetryEventTracker telemetryEventTracker = newEventTracker(maximumTelemetryEvents);
105115

106-
List<TelemetryEvent> telemetryEvents = record70EventsAndDump(telemetryEventTracker);
116+
List<TelemetryEvent> telemetryEvents = record101EventsAndDump(telemetryEventTracker);
107117

108118
assertThat(telemetryEvents.size(), is(maximumTelemetryEvents));
109119
}
@@ -115,19 +125,19 @@ private TelemetryEventTracker newEventTracker(int maximumTelemetryData) {
115125
);
116126
}
117127

118-
private List<TelemetryEvent> record70EventsAndDump(TelemetryEventTracker telemetryEventTracker) {
119-
for (int i = 0; i < 120; i++) {
128+
private List<TelemetryEvent> record101EventsAndDump(TelemetryEventTracker telemetryEventTracker) {
129+
for (int i = 0; i < 101; i++) {
120130
telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE);
121131
}
122-
return telemetryEventTracker.dump();
132+
return telemetryEventTracker.getAll();
123133
}
124134

125135
private Map<String, Object> getTrackedEventAsJson() {
126136
return getFirstEvent().asJson();
127137
}
128138

129139
private TelemetryEvent getFirstEvent() {
130-
return telemetryEventTracker.dump().get(0);
140+
return telemetryEventTracker.getAll().get(0);
131141
}
132142

133143
private Map<String, Object> getExpectedJsonForALogTelemetryEvent() {

0 commit comments

Comments
 (0)