seriously? you should fix and solve why the soft crashed in the first place, reality check please.
"But it is possible that Dropbox will copy a database and journal files that are not consistent with each other, which can create problems" fix the sync process, that's easy. Best. On Mon, Jul 14, 2014 at 3:04 PM, Drago, William @ MWG - NARDAEAST < william.dr...@l-3com.com> wrote: > This may be a bit simplistic, but it does give me a reasonable degree of > confidence that hot journal files are being handled correctly in my > application. > > I simply put a 1/0 on the line before my commit to purposely crash my app. > Sure enough there's a journal file after the crash (I have a rather large > transaction consisting of among other things, about 35 rows inserted, each > containing a blob). > > When I restart my app it looks for the presence of a journal file and will > open and read the db so that SQLite can deal with it. It also displays a > message letting the user know that something went wrong during the last run. > > I do this with a test db of course, not the real one. > > -Bill > > > > > > -----Original Message----- > > From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users- > > boun...@sqlite.org] On Behalf Of Charles Parnot > > Sent: Saturday, July 12, 2014 4:38 AM > > To: sqlite-users@sqlite.org > > Subject: [sqlite] capturing and testing a hot journal > > > > Hi all, > > > > For testing purposes of our application (a Mac app), I am generating > > what I thought would be a database with a "hot" journal using this > > approach (on an existing database): > > > > - open the database (and PRAGMA journal_mode = TRUNCATE;) > > - open a transaction: BEGIN IMMEDIATE TRANSACTION; > > - add some rows: INSERT etc... > > - **make a copy of the db and journal files** (while still hot?) > > - close the transaction > > > > Then I open the copied database+journal (naming the files > > appropriately), again in TRUNCATE journal mode. As expected, the > > content of the database does not include the inserted rows. However, > > the journal file is not emptied, even after closing the database. Based > > on the documentation > > (http://www.sqlite.org/lockingv3.html#hot_journals), I would have > > expected the journal file to be emptied because it is "hot". > > > > There are 2 options here: > > > > - the journal file is actually not "hot" and I misunderstood the > > conditions that make it hot > > - there is a bug in SQLite > > > > Obviously, I strongly suspect I am misunderstanding things, and don't > > think it is an SQLite bug. Despite intensive Google-ing and more > > testing, I am not sure what makes the journal non-hot. > > > > Thanks for your help! > > > > Charles > > > > > > NB: You might be wondering why I am doing the above. I realize SQLite > > has already much more advanced tests for "hot" db+journals (running > > custom versions of filesystems to generate all kind of edge cases). The > > test case I am generating is just for a simple edge case of our > > Dropbox-based syncing (see: https://github.com/cparnot/PARStore and > > http://mjtsai.com/blog/2014/05/21/findings-1-0-and-parstore/). For a > > given database file, there is only one device that can write to it, all > > other devices being read-only (not in terms of filesystem, but sqlite- > > wise). But it is possible that Dropbox will copy a database and journal > > files that are not consistent with each other, which can create > > problems. For instance, maybe a read-only device could try to open the > > (still old) database with a new non-empty journal file and sqlite would > > empty that journal file, then Dropbox could in turn empty the journal > > file before the writer client had finished the transaction. I am not > > (yet) going to test for and try to protect against more complicated > > (and rarer) edge cases where the database is in the middle of writing a > > transaction (which I suspect will only happen in case of crashes, not > > because of Dropbox, in which case the recovery of the database by the > > read-only client would actually be beneficial). > > > > -- > > Charles Parnot > > charles.par...@gmail.com > > http://app.net/cparnot > > twitter: @cparnot > > > > Your Lab Notebook, Reinvented. > > http://findingsapp.com > > > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > CONFIDENTIALITY, EXPORT CONTROL AND DISCLAIMER NOTE:This e-mail and any > attachments are solely for the use of the addressee and may contain > information that is privileged or confidential. Any disclosure, use or > distribution of the information contained herein is prohibited. In the > event this e-mail contains technical data within the definition of the > International Traffic in Arms Regulations or Export Administration > Regulations, it is subject to the export control laws of the > U.S.Government. The recipient should check this e-mail and any attachments > for the presence of viruses as L-3 does not accept any liability associated > with the transmission of this e-mail. If you have received this > communication in error, please notify the sender by reply e-mail and > immediately delete this message and any attachments. > _______________________________________________ > 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