Skip to content

Commit c52b592

Browse files
committed
Expanded duplicate checking logic to all events
1 parent 2a9d5e0 commit c52b592

File tree

3 files changed

+17
-25
lines changed

3 files changed

+17
-25
lines changed

src/main/java/com/exceptionless/exceptionlessclient/configuration/PluginManager.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public PluginManager() {
3030
private void configureDefaultPlugins() {
3131
addPlugin(ConfigurationDefaultsPlugin.builder().build());
3232
addPlugin(ErrorPlugin.builder().build());
33-
addPlugin(DuplicateErrorCheckerPlugin.builder().build());
33+
addPlugin(DuplicateCheckerPlugin.builder().build());
3434
addPlugin(EventExclusionPlugin.builder().build());
3535
addPlugin(ModuleInfoPlugin.builder().build());
3636
addPlugin(RequestInfoPlugin.builder().build());
+12-19
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.exceptionless.exceptionlessclient.configuration.ConfigurationManager;
44
import com.exceptionless.exceptionlessclient.models.Event;
55
import com.exceptionless.exceptionlessclient.models.EventPluginContext;
6-
import com.exceptionless.exceptionlessclient.models.services.error.Error;
7-
import com.exceptionless.exceptionlessclient.models.services.error.InnerError;
86
import com.exceptionless.exceptionlessclient.plugins.EventPluginIF;
97
import com.exceptionless.exceptionlessclient.plugins.MergedEvent;
108
import lombok.Builder;
@@ -14,8 +12,8 @@
1412

1513
import java.util.*;
1614

17-
public class DuplicateErrorCheckerPlugin implements EventPluginIF {
18-
private static final Logger LOG = LoggerFactory.getLogger(DuplicateErrorCheckerPlugin.class);
15+
public class DuplicateCheckerPlugin implements EventPluginIF {
16+
private static final Logger LOG = LoggerFactory.getLogger(DuplicateCheckerPlugin.class);
1917
private static final String MERGED_EVENTS_RESUBMISSION_TIMER_NAME =
2018
"merged-events-resubmission-timer";
2119
private static final Integer DEFAULT_PRIORITY = 1010;
@@ -29,7 +27,7 @@ public class DuplicateErrorCheckerPlugin implements EventPluginIF {
2927
private final Integer mergedEventsResubmissionInSecs;
3028

3129
@Builder
32-
public DuplicateErrorCheckerPlugin(
30+
public DuplicateCheckerPlugin(
3331
Integer mergedEventsResubmissionInSecs, Integer maxHashesCount) {
3432
this.maxHashesCount = maxHashesCount == null ? DEFAULT_MAX_HASHES_COUNT : maxHashesCount;
3533
this.mergedEvents = new ArrayDeque<>();
@@ -70,13 +68,7 @@ public int getPriority() {
7068
public void run(
7169
EventPluginContext eventPluginContext, ConfigurationManager configurationManager) {
7270
Event event = eventPluginContext.getEvent();
73-
Optional<Error> maybeError = event.getError();
74-
if (maybeError.isEmpty()) {
75-
return;
76-
}
77-
Error error = maybeError.get();
78-
79-
long hash = getHashCode(error);
71+
long hash = getHash(event);
8072
Optional<MergedEvent> maybeMergedEvent =
8173
mergedEvents.stream().filter(mergedEvent -> mergedEvent.getHash() == hash).findFirst();
8274
if (maybeMergedEvent.isPresent()) {
@@ -119,13 +111,14 @@ private void addNewHashIfPossible(long hash, long now) {
119111
hashes.add(TimeStampedHash.builder().hash(hash).timestamp(now).build());
120112
}
121113

122-
private long getHashCode(InnerError error) {
123-
long hash = 0L;
124-
while (error != null) {
125-
hash += Objects.hash(error.getMessage(), error.getStackTrace());
126-
error = error.getInner();
127-
}
128-
return hash;
114+
private long getHash(Event event) {
115+
return Objects.hash(
116+
event.getType(),
117+
event.getSource(),
118+
event.getDate(),
119+
event.getTags(),
120+
event.getMessage(),
121+
event.getData());
129122
}
130123

131124
@Builder
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.exceptionless.exceptionlessclient.models.enums.EventPropertyKey;
88
import com.exceptionless.exceptionlessclient.models.services.error.Error;
99
import com.exceptionless.exceptionlessclient.models.services.error.StackFrame;
10-
import com.exceptionless.exceptionlessclient.plugins.preconfigured.DuplicateErrorCheckerPlugin;
1110
import com.exceptionless.exceptionlessclient.queue.DefaultEventQueue;
1211
import org.junit.jupiter.api.BeforeEach;
1312
import org.junit.jupiter.api.Test;
@@ -22,15 +21,15 @@
2221
import static org.mockito.Mockito.verify;
2322

2423
@ExtendWith(MockitoExtension.class)
25-
public class DuplicateErrorCheckerPluginTest {
24+
public class DuplicateCheckerPluginTest {
2625
private static final String EVENT_REF_ID = "test-event";
2726
private static final Long EVENT_COUNT = 100L;
2827

2928
@Mock private DefaultEventQueue eventQueue;
3029

3130
private EventPluginContext context;
3231
private ConfigurationManager configurationManager;
33-
private DuplicateErrorCheckerPlugin plugin;
32+
private DuplicateCheckerPlugin plugin;
3433

3534
@BeforeEach
3635
public void setup() {
@@ -56,7 +55,7 @@ public void setup() {
5655
@Test
5756
public void itCanDetectAPotentialToBeMergedEvent() throws InterruptedException {
5857
plugin =
59-
DuplicateErrorCheckerPlugin.builder()
58+
DuplicateCheckerPlugin.builder()
6059
.mergedEventsResubmissionInSecs(1)
6160
.build();
6261
plugin.run(context, configurationManager);
@@ -74,7 +73,7 @@ public void itCanDetectAPotentialToBeMergedEvent() throws InterruptedException {
7473
@Test
7574
public void itCanMergeEventsWithSameHash() throws InterruptedException {
7675
plugin =
77-
DuplicateErrorCheckerPlugin.builder()
76+
DuplicateCheckerPlugin.builder()
7877
.mergedEventsResubmissionInSecs(1)
7978
.build();
8079
plugin.run(context, configurationManager);

0 commit comments

Comments
 (0)