On 31/03/16 21:05, David Holl wrote: > I'm curious why the kamailio sqlite module doesn't export a > transaction API, especially since the native sqlite API does support > transactions according to https://www.sqlite.org/transactional.html > Maybe someday, I'd get time to dig into the kamailio module myself to > try lending a hand... I guess nobody from dev team needed transaction operations for sqlite, I expect that most of us use a larger sql server (mysql, postgres) if they have presence services...
Your contribution to add them will be very welcome, of course! > > Anyhow, the following is what I did to work around the locked db errors: > > I'm not running BLF, but I have been using sqlite for my testing. At > first, I was getting occasional "database is locked" errors, but then > I enabled "wal" mode on my database on a hunch to speed up > operations. I didn't measure the actual db performance before/after > enabling wal, but the error messages went away after enabling wal. > (Now, I only get an occasional locked message if I happen to have SIP > tracing enabled and writing to the same database as the rest of the > kamailio tables. To work around this issue, I just moved the > sip_trace table to a separate sqlite db file.) > > wal is described in detail at https://www.sqlite.org/wal.html > > The following is the short script I wrote to remind myself how I > enabled wal. It just runs "journal_mode=WAL; > <https://www.sqlite.org/pragma.html#pragma_journal_mode>" on the > database, and the database supposedly can be converted back to the > default via " journal_mode=DELETE; > <https://www.sqlite.org/pragma.html#pragma_journal_mode>". (Though, > the usual "cya" disclaimer of backing up your DB always applies...) > > Contents of make_siptrace_db.sh > > #!/bin/sh > set -e > # Instructions: > # /etc/init.d/kamailio stop > # #Run this script with db file as the command line parameter: > # ./make_siptrace_db.sh /path/to/db/kamailio.sqlite > # /etc/init.d/kamailio start > # > # For details on Write-Ahead Logging (WAL), see > https://www.sqlite.org/wal.html > exec sqlite3 -bail -batch "$1" << 'EOF' > PRAGMA journal_mode=WAL; > EOF > # If this works, sqlite3 should print out "wal" > > Very useful hint, many thanks for sharing all these details! Cheers, Daniel > > > On 3/31/16 11:25 AM, Kristian Kielhofner wrote: >> Hi Daniel, >> >> I switched to mysql and haven't looked back but I will take another >> look with sqlite because it *should* work. >> >> Thanks! >> >> On Thu, Mar 31, 2016 at 12:11 PM, Daniel-Constantin Mierla >> <mico...@gmail.com> wrote: >>> Hello, >>> >>> I looked quickly at sqlite and the module doesn't export db transaction API, >>> so it is not what I thought in the first place (some presence operations try >>> to use db transactions if supported by db module). So it is something in >>> sqlite that locks the table. Do you see any error message in the logs before >>> the one with the table locked? >>> >>> Cheers, >>> Daniel >>> >>> >>> On 30/03/16 14:28, Kristian Kielhofner wrote: >>> >>> Hi Daniel, >>> >>> First call. >>> >>> Thanks! >>> >>> On Wednesday, March 30, 2016, Daniel-Constantin Mierla <mico...@gmail.com> >>> wrote: >>>> Hello, >>>> >>>> not using sqlite here, but could be related to presence modules doing db >>>> transactions and not releasing the locks. Do you get the issue after the >>>> first call, or it runs for a while and at some point it breaks? >>>> >>>> Cheers, >>>> Daniel >>>> >>>> On 30/03/16 02:50, Kristian Kielhofner wrote: >>>>> Hello everyone, >>>>> >>>>> I'm trying to use BLF with the config here (except with SQlite): >>>>> >>>>> http://kb.asipto.com/kamailio:presence:k43-blf >>>>> >>>>> BLF seems to work perfectly except after the call is ended I get >>>>> "sqlite commit failed: database is locked" error messages as seen >>>>> here: >>>>> >>>>> http://pastebin.com/xVijj98H >>>>> >>>>> BLF is then broken at this point. >>>>> >>>>> kamailio -v >>>>> version: kamailio 4.3.5 (x86_64/linux) 950657 >>>>> flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, >>>>> USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, >>>>> SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX, >>>>> FAST_LOCK-ADAPTIVE_WAIT, USE_PTHREAD_MUTEX, USE_DNS_CACHE, >>>>> USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES >>>>> ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, >>>>> MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB >>>>> poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. >>>>> id: 950657 >>>>> compiled on 01:33:01 Mar 29 2016 with x86_64-openwrt-linux-gnu-gcc 4.8.3 >>>>> >>>>> Has anyone ever seen this before? >>>>> >>>>> Thanks! >>>>> >>>> -- >>>> Daniel-Constantin Mierla >>>> http://www.asipto.com >>>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda >>>> Kamailio World Conference, Berlin, May 18-20, 2016 - >>>> http://www.kamailioworld.com >>>> >>>> >>>> _______________________________________________ >>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list >>>> sr-users@lists.sip-router.org >>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users >>> >>> -- >>> Sent from mobile device >>> >>> >>> -- >>> Daniel-Constantin Mierla >>> http://www.asipto.com >>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda >>> Kamailio World Conference, Berlin, May 18-20, 2016 - >>> http://www.kamailioworld.com >> > > > > _______________________________________________ > SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list > sr-users@lists.sip-router.org > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users -- Daniel-Constantin Mierla http://www.asipto.com http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio World Conference, Berlin, May 18-20, 2016 - http://www.kamailioworld.com
_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users