Error beginning begin transaction - PurgeExpired

Hi All,

Am getting the below error very randomly, looks like it is coming when we reading huge data from Couchdb.
Please provide inputs/comments on best practices to resolve the issue.

We are using the Couchbase.Lite.Storage.SQLCipher.dll Ver 1.3.1.0

Couchbase.Lite.CouchbaseLiteException: Error beginning begin transaction
at Couchbase.Lite.Storage.SQLCipher.SqlitePCLRawStorageEngine.RunInTransaction(RunInTransactionDelegate block)
at Couchbase.Lite.Storage.SQLCipher.SqliteCouchStore.RunInTransaction(RunInTransactionDelegate block)
at Couchbase.Lite.Storage.SQLCipher.SqliteCouchStore.PurgeExpired()
at Couchbase.Lite.Database.PurgeExpired(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()

Thanks in advance.

1 Like

Hey @TJShalem: that is a very old version of CBLite that you are using, there! We are up to 2.6! Give it a try!

Thank you for the suggestion, could you please confirm the issue is due to the old version of the dll that we using and not because of the volume of the data that we processing…

I’m afraid I can’t help there. V1.3 was EoL well before I joined the company. There are still people here who were around back then. Perhaps they can comment.

The exception is happening on a background timer that’s processing expiration of documents, so it’s not part of anything critical. It shouldn’t be causing any visible problems in your app – the only side effect is that some documents that were supposed to be purged won’t be, until later.

But yes, this is a very old version. You could at least try upgrading to the latest 1.4 release. Upgrading to 2.6 would be much better (it’s a huge improvement in performance and functionality), but it does require significant effort because the API has changed a lot.