Yes I am covering the case where xNotify is called before sqlite3_unlock_notify
is returned.

My struct which I pass into sqlite3_unlock_notify has a fired flag, this
would then get set to true if xNotify is called in sqlite3_unlock_notify.
This flag is then checked after the sqlite3_unlock_notify call to see if it
has changed from false.

I do near enough a carbon copy of the example code on
http://www.sqlite.org/unlock_notify.html.


Owen



On 9 July 2013 10:08, Dan Kennedy <danielk1...@gmail.com> wrote:

> On 06/20/2013 03:20 PM, Owen Haynes wrote:
>
>> Hello,
>>
>> I am currently having some problems with the unlock notify and getting in
>> a
>> state of deadlock.
>>
>> I am using code based on 
>> http://www.sqlite.org/unlock_**notify.html<http://www.sqlite.org/unlock_notify.html>,
>> with
>> the latest sqlite.
>>
>> The setup is as follows:
>>   - WAL is on
>>   - Multi Threaded is on
>>   - Temp store is memory
>>   - Database is stored in /dev/shm
>>   - Synchronous is set as normal
>>   - Multi-threading is on
>>   - connection is set as SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |
>> SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE
>>
>> Unlock notify does work I can see my log messages printed when the
>> callback
>> is called but sometimes I can end up in the following dead lock situation.
>>
>> Each connection is in its own thread
>>
>> *Deadlock 1*
>>
>> Connection A is using database
>> Connection B is waiting on Connection A
>> Connection C is waiting on Connection B
>>
>> Connection A is has finished
>> Connection B is waiting on Connection A
>> Connection C is waiting on Connection B
>>
>> *Deadlock 2*
>>
>> Connection A is using database
>> Connection B is waiting on Connection A
>> Connection C is waiting on Connection A
>>
>> Connection A is has finished
>> Connection B is waiting on Connection A
>> Connection C is waiting on Connection A
>>
>> For some reason sometimes the notify callback does not get issued and end
>> up with 2 threads waiting for the callback back to be issued.
>>
>> Connection B is a writer thread the others only read.
>>
>> Any ideas?
>>
>
> Are you handling the case where the xNotify callback is invoked by
> sqlite3_unlock_notify() before it returns?
>
> Dan.
>
> ______________________________**_________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-**bin/mailman/listinfo/sqlite-**users<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to