@@ -27,17 +27,18 @@ public DuplicateCheckerPlugin(TimeSpan? interval) {
27
27
_interval = interval ?? TimeSpan . FromSeconds ( 60 ) ;
28
28
_timer = new Timer ( OnTimer , null , _interval , _interval ) ;
29
29
}
30
-
30
+
31
31
public void Run ( EventPluginContext context ) {
32
32
int hashCode = context . Event . GetHashCode ( ) ;
33
33
int count = context . Event . Count ?? 1 ;
34
34
context . Log . FormattedTrace ( typeof ( DuplicateCheckerPlugin ) , String . Concat ( "Checking event: " , context . Event . Message , " with hash: " , hashCode ) ) ;
35
-
35
+
36
36
lock ( _lock ) {
37
37
// Increment the occurrence count if the event is already queued for submission.
38
38
var merged = _mergedEvents . FirstOrDefault ( s => s . HashCode == hashCode ) ;
39
39
if ( merged != null ) {
40
40
merged . IncrementCount ( count ) ;
41
+ merged . UpdateDate ( context . Event . Date ) ;
41
42
context . Log . FormattedInfo ( typeof ( DuplicateCheckerPlugin ) , String . Concat ( "Ignoring duplicate event with hash:" , hashCode ) ) ;
42
43
context . Cancel = true ;
43
44
return ;
@@ -59,7 +60,7 @@ public void Run(EventPluginContext context) {
59
60
_processed . Dequeue ( ) ;
60
61
}
61
62
}
62
-
63
+
63
64
private void OnTimer ( object state ) {
64
65
EnqueueMergedEvents ( ) ;
65
66
}
@@ -100,6 +101,11 @@ public void Resubmit() {
100
101
_context . Event . Count = _count ;
101
102
_context . Resolver . GetEventQueue ( ) . Enqueue ( _context . Event ) ;
102
103
}
104
+
105
+ public void UpdateDate ( DateTimeOffset date ) {
106
+ if ( date > _context . Event . Date )
107
+ _context . Event . Date = date ;
108
+ }
103
109
}
104
110
}
105
- }
111
+ }
0 commit comments