I see many SQLITE_BUSY returned from sqlite3_finalize(). Are they memory leak because it don't succeed in finalizing the sqlite3_stmt pointer?
Black, Michael (IS) wrote: > > SQLITE_BUSY is not an error...just a fact. > > All your processes cannot work on the database at the same time...at least > not when one of them is doing an insert. You could be changing the table > while you're scanning it. EXXCLUSIVE doesn't change that idea. > > Somebody please correct me if I'm wrong on this one... > I think sqlite can work with multiple processes just doing read-onliy > operations (like SELECT). It's just the write operations > (INSERT/UPDATE) which will cause SQLITE_BUSY to occur. > > Michael D. Black > Senior Scientist > Northrop Grumman Mission Systems > > > ________________________________ > > From: sqlite-users-boun...@sqlite.org on behalf of liubin liu > Sent: Tue 5/11/2010 9:20 PM > To: sqlite-users@sqlite.org > Subject: Re: [sqlite] multi processes, so many errores of SQLITE_BUSY and > SQLITE_MISUSE > > > > > Thank you very much! > > It may be because my system's resource is limited. It's a embedded system > containing 32M RAM, ARM9 CPU. > > My "reiterating 20 times" is already using usleep(). > > After I add the loop in the prepare statements, the system performance is > still very bad... And there are still many errores of SQLITE_BUSY. > > The only improvement is the disappear of the error of SQLITE_MISUSE. > > And I tried to use the "BEGIN EXCLUSIVE TRANSACTION". The things are same > with them without using it. > > > > > > > > Black, Michael (IS) wrote: >> >> Your "reiterating 20 times" is not using a usleep so you'll blow by this >> most every time it's busy. >> >> Do this instead in all your proc's >> >> ret = sqlite3_step (p_stmt); >> if (SQLITE_BUSY == ret) >> { >> int n=0; >> usleep(100000); // try one more time before error >> while ((ret=sqlite3_step(p_stmt))==SQLITE_BUSY) { >> printf("proc1 ret==BUSY %d\n",++n); >> usleep(100000); >> } >> } >> >> And you'll also need to handle "database is locked" coming from your >> prepare statements. I saw that error too. >> You'll need to loop there too. >> >> The more you drop the usleep time the more times it will show as busy. >> 1/10th or 1/100th of second is about all you want I would think. >> >> And get rid of the usleep at the bottom of each proc -- it's pretty >> useless at 100 microseconds. You don't need to sleep unless you're busy. >> >> I tested your code with this and got no errors at all -- just a bunch of >> BUSY messages. >> >> >> Not sure what your purpose is in sqlrun.c with looping and killing. >> Looks >> pretty squirrely to me. You're not waiting for the forks to finish so >> what is your logic here? >> >> Michael D. Black >> Senior Scientist >> Northrop Grumman Mission Systems >> >> >> ________________________________ >> >> From: sqlite-users-boun...@sqlite.org on behalf of liubin liu >> Sent: Tue 5/11/2010 4:57 AM >> To: sqlite-users@sqlite.org >> Subject: [sqlite] multi processes, so many errores of SQLITE_BUSY and >> SQLITE_MISUSE >> >> ... >> >> -- >> View this message in context: >> http://old.nabble.com/multi-processes%2C-so-many-errores-of-SQLITE_BUSY-and-SQLITE_MISUSE-tp28522127p28522127.html >> Sent from the SQLite mailing list archive at Nabble.com. >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> 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 >> >> > > -- > View this message in context: > http://old.nabble.com/multi-processes%2C-so-many-errores-of-SQLITE_BUSY-and-SQLITE_MISUSE-tp28522127p28531394.html > Sent from the SQLite mailing list archive at Nabble.com. > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > 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 > > -- View this message in context: http://old.nabble.com/multi-processes%2C-so-many-errores-of-SQLITE_BUSY-and-SQLITE_MISUSE-tp28522127p28544420.html Sent from the SQLite mailing list archive at Nabble.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users