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.
