I've discovered a bug that occurs when two messages in the timeout
queue have the same "To be processed at" date - only ONE of those
messages will actually be moved to the main queue at the specified
date.  The other will be left in the timeout queue indefinitely.

In TimeoutAction.cs, the id of each timeout message is added to a
SortedList, using the "To be processed at" DateTime of the message as
the key.  The problem occurs when TWO messages have the same date, and
thus the same key - one message will end up overwriting the other in
the SortedList.  That means the overwritten message will NEVER be
moved back into the main queue.

The solution for this is pretty simple: instead of storing JUST the
message ids as the value in the SortedList, store a collection of
message ids.  That would allow more than one message to be stored
under the same key.

I know it is a problem with the MSMQ TimeoutAction, and it looks like
it would be a problem with Rhino Queues as well, judging from the
TimeoutAction class in the RhinoQueues namespace.

Does this make sense?  I can submit a patch to fix this (or however
you do it in Git).

-- 
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rhino-tools-dev?hl=en.

Reply via email to