I have several (identical processors) accessing a sqlite3 database over NFS. I have a busy handler (see below) and use "begin exclusive"
Periodically I get the following error from from sqlite3: Function:artd_sql_exec_stmt error in stmt:begin exclusive against database:/wise/fops/ref/artid/latents.db, error:[database is locked] I was under the impression that sqlite3 should return SQLITE_BUSY under these conditions? Here is my busy handler: PASSFAIL artid_sql_busy_handler(void* p_arg_one, int num_prior_calls) { // Adding a random value here greatly reduces locking? if (*((int *)p_arg_one) < ARTID_ZERO) { usleep((rand() % 50000) + 40000); // Change magic number after test } else { usleep(50000); // Change magic number after test } /* * Have sqlite3_exec immediately return SQLITE_BUSY or * sleep if handler has been called less than * threshold value. 50 secs? */ return (num_prior_calls < ARTID_THOUSAND); } How would I know if my busy_handler (is even) being called? And how do I avoid the said error? Thanks, -rosemary. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users