On Fri, 30 Aug 2019 at 04:18, test user <example.com.use...@gmail.com>
wrote:

> B. Is there any method for determining lock transitions for connections?
>     - Is there an API?
>     - Would it be possible to use dtrace to instrument SQLite to detect
> lock transitions?
>         - Where should I be looking?
>

 On unix sqlite uses fcntl() with cmd=F_SETLK on specific byte locations to
acquire locks -- I'm not familiar with dtrace, but I've used strace + sed
to watch sqlite lock activity before. eg:

#!/bin/sh

PID=$1

replace() {
     echo "s#F_SETLK, {type=F_$1, whence=SEEK_SET, start=$2, len=$3}#$4#"
}

strace -Ttt -ff -e trace=fcntl -p $PID 2>&1 |
sed \
    -e "$(replace RDLCK 1073741824 1 acquireR{PENDING})" \
    -e "$(replace RDLCK 1073741825 1 acquireR{RESERVED})" \
    -e "$(replace RDLCK 1073741826 510 acquire{SHARED})" \
    -e "$(replace WRLCK 1073741824 1 acquireW{PENDING})" \
    -e "$(replace WRLCK 1073741825 1 acquireW{RESERVED})" \
    -e "$(replace WRLCK 1073741826 510 acquire{EXCLUSIVE})" \
    -e "$(replace UNLCK 1073741824 2 release{PENDING+RESERVED})" \
    -e "$(replace UNLCK 1073741824 1 release{PENDING})" \
    -e "$(replace UNLCK 1073741825 1 release{RESERVED})" \
    -e "$(replace UNLCK 1073741826 510 release{SHARED/EXCLUSIVE})" \
    -e "$(replace UNLCK 0 0 release{ALL})"

-Rowan
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to