diff --git a/src/MassTransit.Tests/MassTransit.Tests.csproj b/src/MassTransit.Tests/MassTransit.Tests.csproj
index c7cad9a06e..edb4b7ed37 100644
--- a/src/MassTransit.Tests/MassTransit.Tests.csproj
+++ b/src/MassTransit.Tests/MassTransit.Tests.csproj
@@ -131,6 +131,7 @@
+
diff --git a/src/MassTransit.Tests/MessageRetryTracker_Specs.cs b/src/MassTransit.Tests/MessageRetryTracker_Specs.cs
new file mode 100644
index 0000000000..99ffe2e589
--- /dev/null
+++ b/src/MassTransit.Tests/MessageRetryTracker_Specs.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using MassTransit.Transports;
+using NUnit.Framework;
+
+namespace MassTransit.Tests
+{
+ [TestFixture]
+ public class MessageRetryTracker_Specs
+ {
+ [Test]
+ public void IsLimitExceeded_return_false_untill_specified_limit_reached()
+ {
+ const int retryLimit = 5;
+
+ var tracker = new MessageRetryTracker(retryLimit);
+ const string id = "qelofjsw";
+
+ for (int i = 0; i < retryLimit; i++)
+ {
+ Assert.IsFalse(tracker.IsRetryLimitExceeded(id));
+ tracker.IncrementRetryCount(id);
+ }
+ Assert.IsTrue(tracker.IsRetryLimitExceeded(id));
+ }
+ }
+}
diff --git a/src/MassTransit/Transports/MessageRetryTracker.cs b/src/MassTransit/Transports/MessageRetryTracker.cs
index afbb852f32..272dd7f5a9 100644
--- a/src/MassTransit/Transports/MessageRetryTracker.cs
+++ b/src/MassTransit/Transports/MessageRetryTracker.cs
@@ -29,7 +29,7 @@ public MessageRetryTracker(int retryLimit)
public bool IsRetryLimitExceeded(string id)
{
int retryCount = 0;
- if (_messages.ReadLock(x => x.TryGetValue(id, out retryCount)))
+ if (!_messages.ReadLock(x => x.TryGetValue(id, out retryCount)))
return false;
return retryCount >= _retryLimit;