From 253cf080b84835a0b516a7802398e9e55866d945 Mon Sep 17 00:00:00 2001 From: chris Date: Mon, 22 Dec 2025 16:37:49 -0300 Subject: [PATCH 1/2] 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 --- .../com/rollbar/notifier/RollbarBase.java | 2 +- .../RollbarTelemetryEventTracker.java | 6 ++--- .../telemetry/TelemetryEventTracker.java | 4 +-- .../RollbarTelemetryEventTrackerTest.java | 26 +++++++++++++------ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java b/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java index cc61f94c..5fdd32ca 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/RollbarBase.java @@ -345,7 +345,7 @@ protected RollbarThrowableWrapper wrapThrowable(Throwable error) { protected abstract RESULT sendPayload(C config, Payload payload); private Body makeBody(ThrowableWrapper error, String description) { - List telemetryEvents = telemetryEventTracker.dump(); + List telemetryEvents = telemetryEventTracker.getAll(); if (telemetryEvents.isEmpty()) { return bodyFactory.from(error, description); } diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java index 265f11db..00621928 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java @@ -51,10 +51,8 @@ public RollbarTelemetryEventTracker( } @Override - public List dump() { - List events = new ArrayList<>(telemetryEvents); - telemetryEvents.clear(); - return events; + public List getAll() { + return new ArrayList<>(telemetryEvents); } @Override diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/TelemetryEventTracker.java b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/TelemetryEventTracker.java index a5bbc16d..434cf1eb 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/TelemetryEventTracker.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/TelemetryEventTracker.java @@ -10,9 +10,9 @@ public interface TelemetryEventTracker { /** - * Dump all the events recorded. + * Get all the events recorded. */ - List dump(); + List getAll(); /** * Record log telemetry event. ({@link TelemetryType#LOG}). diff --git a/rollbar-java/src/test/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTrackerTest.java b/rollbar-java/src/test/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTrackerTest.java index a0d4475f..c9141666 100644 --- a/rollbar-java/src/test/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTrackerTest.java +++ b/rollbar-java/src/test/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTrackerTest.java @@ -32,13 +32,23 @@ public class RollbarTelemetryEventTrackerTest { private static final int MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS = 0; private static final int MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS = 100; + @Test + public void shouldKeepAllTheEventsDuringSessionIfGetAllIsInvoked() { + telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE); + + List telemetryEventsFirstCall = telemetryEventTracker.getAll(); + List telemetryEventsSecondCall = telemetryEventTracker.getAll(); + + assertThat(telemetryEventsFirstCall, is(telemetryEventsSecondCall)); + } + @Test public void shouldDiscardOldestEventsWhenMaxCapacityIsReached() { telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE); telemetryEventTracker.recordLogEventFor(LEVEL, SOURCE, MESSAGE); telemetryEventTracker.recordLogEventFor(LEVEL, SOURCE, MESSAGE); - List telemetryEvents = telemetryEventTracker.dump(); + List telemetryEvents = telemetryEventTracker.getAll(); assertThat(telemetryEvents.size(), is(MAXIMUM_TELEMETRY_DATA)); verifyContainsOnlyLogEvents(telemetryEvents); @@ -84,7 +94,7 @@ public void shouldTrackANetworkEvent() { public void shouldSetTheMaximumTelemetryDataLimitedToItsLowerLimit() { TelemetryEventTracker telemetryEventTracker = newEventTracker(MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS - 1); - List telemetryEvents = record70EventsAndDump(telemetryEventTracker); + List telemetryEvents = record101EventsAndDump(telemetryEventTracker); assertThat(telemetryEvents.size(), is(MINIMUM_CAPACITY_FOR_TELEMETRY_EVENTS)); } @@ -93,7 +103,7 @@ public void shouldSetTheMaximumTelemetryDataLimitedToItsLowerLimit() { public void shouldSetTheMaximumTelemetryDataLimitedToItsUpperLimit() { TelemetryEventTracker telemetryEventTracker = newEventTracker(MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS + 1); - List telemetryEvents = record70EventsAndDump(telemetryEventTracker); + List telemetryEvents = record101EventsAndDump(telemetryEventTracker); assertThat(telemetryEvents.size(), is(MAXIMUM_CAPACITY_FOR_TELEMETRY_EVENTS)); } @@ -103,7 +113,7 @@ public void shouldSetTheMaximumTelemetryDataLimitedToAValueBetweenBounds() { int maximumTelemetryEvents = 20; TelemetryEventTracker telemetryEventTracker = newEventTracker(maximumTelemetryEvents); - List telemetryEvents = record70EventsAndDump(telemetryEventTracker); + List telemetryEvents = record101EventsAndDump(telemetryEventTracker); assertThat(telemetryEvents.size(), is(maximumTelemetryEvents)); } @@ -115,11 +125,11 @@ private TelemetryEventTracker newEventTracker(int maximumTelemetryData) { ); } - private List record70EventsAndDump(TelemetryEventTracker telemetryEventTracker) { - for (int i = 0; i < 120; i++) { + private List record101EventsAndDump(TelemetryEventTracker telemetryEventTracker) { + for (int i = 0; i < 101; i++) { telemetryEventTracker.recordManualEventFor(LEVEL, SOURCE, MESSAGE); } - return telemetryEventTracker.dump(); + return telemetryEventTracker.getAll(); } private Map getTrackedEventAsJson() { @@ -127,7 +137,7 @@ private Map getTrackedEventAsJson() { } private TelemetryEvent getFirstEvent() { - return telemetryEventTracker.dump().get(0); + return telemetryEventTracker.getAll().get(0); } private Map getExpectedJsonForALogTelemetryEvent() { From fa3bb8c58e62ef047d8ff551ac98b941b01beb43 Mon Sep 17 00:00:00 2001 From: chris Date: Mon, 22 Dec 2025 16:44:47 -0300 Subject: [PATCH 2/2] fix: lint --- .../notifier/telemetry/RollbarTelemetryEventTracker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java index 00621928..184560b1 100644 --- a/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java +++ b/rollbar-java/src/main/java/com/rollbar/notifier/telemetry/RollbarTelemetryEventTracker.java @@ -52,7 +52,7 @@ public RollbarTelemetryEventTracker( @Override public List getAll() { - return new ArrayList<>(telemetryEvents); + return new ArrayList<>(telemetryEvents); } @Override