1
1
using System ;
2
- using System . Collections . Concurrent ;
3
- using System . Linq ;
4
2
using System . Threading ;
5
3
using Exceptionless . Logging ;
6
4
using Exceptionless . Dependency ;
5
+ using System . Collections . Generic ;
6
+ using System . Linq ;
7
7
8
8
namespace Exceptionless . Plugins . Default {
9
9
[ Priority ( 1010 ) ]
10
10
public class DuplicateCheckerPlugin : IEventPlugin , IDisposable {
11
- private readonly ConcurrentQueue < Tuple < int , DateTimeOffset > > _processed = new ConcurrentQueue < Tuple < int , DateTimeOffset > > ( ) ;
12
- private readonly ConcurrentQueue < MergedEvent > _mergedEvents = new ConcurrentQueue < MergedEvent > ( ) ;
11
+ private readonly Queue < Tuple < int , DateTimeOffset > > _processed = new Queue < Tuple < int , DateTimeOffset > > ( ) ;
12
+ private readonly Queue < MergedEvent > _mergedEvents = new Queue < MergedEvent > ( ) ;
13
13
private readonly object _lock = new object ( ) ;
14
14
private readonly TimeSpan _interval ;
15
15
private Timer _timer ;
@@ -54,10 +54,9 @@ public void Run(EventPluginContext context) {
54
54
55
55
context . Log . FormattedInfo ( typeof ( DuplicateCheckerPlugin ) , String . Concat ( "Enqueueing event with hash:" , hashCode , " to cache." ) ) ;
56
56
_processed . Enqueue ( Tuple . Create ( hashCode , DateTimeOffset . UtcNow ) ) ;
57
-
58
- Tuple < int , DateTimeOffset > temp ;
57
+
59
58
while ( _processed . Count > 50 )
60
- _processed . TryDequeue ( out temp ) ;
59
+ _processed . Dequeue ( ) ;
61
60
}
62
61
}
63
62
@@ -67,9 +66,8 @@ private void OnTimer(object state) {
67
66
68
67
private void EnqueueMergedEvents ( ) {
69
68
lock ( _lock ) {
70
- MergedEvent mergedEvent ;
71
- while ( _mergedEvents . TryDequeue ( out mergedEvent ) )
72
- mergedEvent . Enqueue ( ) ;
69
+ while ( _mergedEvents . Count > 0 )
70
+ _mergedEvents . Dequeue ( ) . Resubmit ( ) ;
73
71
}
74
72
}
75
73
@@ -98,7 +96,7 @@ public void IncrementCount(int value) {
98
96
Interlocked . Add ( ref _count , value ) ;
99
97
}
100
98
101
- public void Enqueue ( ) {
99
+ public void Resubmit ( ) {
102
100
_context . Event . Count = _count ;
103
101
_context . Resolver . GetEventQueue ( ) . Enqueue ( _context . Event ) ;
104
102
}
0 commit comments