Rsb with rhino queue esent error when purging data

85 views
Skip to first unread message

ozanyurt

unread,
Nov 1, 2012, 10:48:52 AM11/1/12
to rhino-t...@googlegroups.com
We are getting this error when rsb need to purge old data.

Message: Error NoCurrentRecord (JET_errNoCurrentRecord, Currency not on a record)
StackTrace :    at Microsoft.Isam.Esent.Interop.Api.Fail(Int32 err) in C:\Work\ravendb\SharedLibs\Sources\ManagedEsent-48322\EsentInterop\Api.cs:line 2279

Thanks in advance 
Ozan

Corey Kaylor

unread,
Nov 2, 2012, 2:11:06 PM11/2/12
to rhino-t...@googlegroups.com
We have seen something similar and are trying to reproduce locally now. I'll update if we find out anything productive.

--
You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rhino-tools-dev/-/Xo9Jv9KdHTEJ.
To post to this group, send email to rhino-t...@googlegroups.com.
To unsubscribe from this group, send email to rhino-tools-d...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.

ozanyurt

unread,
Nov 5, 2012, 4:19:42 AM11/5/12
to rhino-t...@googlegroups.com
Yes happen every time when tries to purge. I get WriteConflict error too when I heavily use rsb and later service stopped. To get rid of this situation I wrote script, restart every 6 hours.

On Friday, November 2, 2012 11:39:05 PM UTC+2, Ryan wrote:
Does this happen to you every time rsb tries to purge, or is it hit and miss?

I very recently saw something similar:
WARN  Rhino.Queues.QueueManager [(null)] - Failed to purge old data from the system
Microsoft.Isam.Esent.Interop.EsentErrorException: Error WriteConflict (JET_errWriteConflict, Write lock failed due to outstanding write lock)
   at Rhino.Queues.Storage.GlobalActions.<DeleteOldestReceivedMessages>d__12.MoveNext()
   at Rhino.Queues.Utils.ThreadSafeSet`1.Remove(IEnumerable`1 items)
   at Rhino.Queues.QueueManager.<PurgeOldData>b__3(GlobalActions actions)
   at Rhino.Queues.Storage.QueueStorage.Global(Action`1 action)
   at Rhino.Queues.QueueManager.PurgeOldData(Object ignored)

I suspect this is happening because the purge runs in one giant transaction, but reproducing this in a unit test is proving to be difficult.  Since I only see the error when there are a large number of incoming and outgoing messages at the same time as the purge, I'm going to assume the transaction is the issue.  I'm going to work on a pull request to break the purge actions into smaller transactions to avoid this.  In the meantime, restarting the process and allowing the esent file to be recovered seems to help temporarily.

ozanyurt

unread,
Nov 5, 2012, 5:44:59 AM11/5/12
to rhino-t...@googlegroups.com
I merged with "purgingQueues" but this not resolve my problem. I trace my code and I get this error when try to purge received message(DeleteOldestReceivedMessages()). But my client don't have any received message.

thanks in advance

ozanyurt

unread,
Nov 5, 2012, 6:47:37 AM11/5/12
to rhino-t...@googlegroups.com
I made some reading and when no data in table esent return  JET_errNoCurrentRecord, Currency not on a record error. My client does not receive any message and its empty. This message very normal I think. Sorry for inconvenience. But this code(purgingQueues) should solve my other problem:

2012-09-19 15:11:32.3222 Rhino.Queues.QueueManager.PurgeOldData Warn Failed to purge old data from the system
Microsoft.Isam.Esent.Interop.EsentErrorException: Error WriteConflict (JET_errWriteConflict, Write lock failed due to outstanding write lock)
   at Microsoft.Isam.Esent.Interop.Api.Fail(Int32 err) in C:\Work\ravendb\SharedLibs\Sources\ManagedEsent-48322\EsentInterop\Api.cs:line 2279
   at Rhino.Queues.Storage.GlobalActions.<DeleteOldestReceivedMessages>d__12.MoveNext() in d:\works\ayende\rhino-esb-latest\rhino-queues\Rhino.Queues\Storage\GlobalActions.cs:line 0
   at Rhino.Queues.Utils.ThreadSafeSet`1.Remove(IEnumerable`1 items) in d:\works\ayende\rhino-esb-latest\rhino-queues\Rhino.Queues\Utils\ThreadSafeSet.cs:line 52
   at Rhino.Queues.QueueManager.<PurgeOldData>b__3(GlobalActions actions) in d:\works\ayende\rhino-esb-latest\rhino-queues\Rhino.Queues\QueueManager.cs:line 158
   at Rhino.Queues.Storage.QueueStorage.Global(Action`1 action) in d:\works\ayende\rhino-esb-latest\rhino-queues\Rhino.Queues\Storage\QueueStorage.cs:line 256
   at Rhino.Queues.QueueManager.PurgeOldData(Object ignored) in d:\works\ayende\rhino-esb-latest\rhino-queues\Rhino.Queues\QueueManager.cs:line 127

Thanks 

Corey Kaylor

unread,
Nov 5, 2012, 10:48:22 AM11/5/12
to rhino-t...@googlegroups.com
Ah, yes that makes sense. I was assuming the error you were seeing went unhandled. Still good changes to get in.

--
You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rhino-tools-dev/-/MWVHMZKDg7EJ.
Reply all
Reply to author
Forward
0 new messages