Hi Dmitry, Thanks. That sounds, on a high level, like the same behavior as native svn + sqlite. I.e. sounds good to me.
-- Johan On Tue, Oct 30, 2012 at 10:29 AM, Dmitry Pavlenko <pavle...@tmatesoft.com> wrote: > Hi Johan, > I'm not sure about SVN (I never investigated Subversion locking code) side > but from SQLite side > SQLJet uses the same locking techniques. > > In SVNKit TIMEOUT is hardcoded too (10 seconds). See > SVNSqlJetDb.DEFAULT_BUSY_HANDLER: > > http://svn.svnkit.com/repos/svnkit/trunk/svnkit/src/main/java/org/tmatesoft/svn/core/internal/db/SVNSqlJetDb.java > > As one can see SqlJetPager#waitOnLock: it tries to lock a file and waits a > bit (with gradually > increasing timeout: 1, 2, 5, ...) in a cycle until the whole timeout (10s) is > exceeded. > > > SVNKit locking code starts here: > > SVNSqlJetDb#beginTransaction (then SQLJet code: > ->SqlJetEngine#beginTransaction- >>SqlJetEngine#doBeginTransaction->ISqlJetBtree#beginTrans) > > ISqlJetBtree#beginTrans performs all locking depending on transaction mode > (as you can see it has > rather complex code). > > (Then after SVNSqlJetDb#beginTransaction SVNKit gets SQLJet cursor, walks > through table according to > query and finishes the transaction unlocking wc.db). All the locks are > released after each SQLJet > operation. > > What about BUSY error in IDE: I've never met a situation (at least since > stable SVNKit versions like > 1.7.5-v1) where it occurred in a situation other than expected (i.e. in an > attempt of concurrent > write operation), so to my opinion if it occurs, it's a problem of SVN > operations serialization. > > -- > Dmitry Pavlenko, > TMate Software, > http://subgit.com/ - git-svn bridge > >> Hi, >> >> While looking at issue IDEA-85496 [1], an issue in IntelliJ IDEA, >> which uses SVNKit for its svn integration, I'm wondering about the >> locking semantics of the wc.db. >> >> I've asked around on the svn dev mailinglist about how it works in >> native svn [2]. Does SVNKit (with sqljet) use the same techniques? >> Does it also have a 10 second timeout for the database lock? Any known >> differences in locking behavior between svnkit+sqljet and native >> svn+sqlite ? >> >> [1] http://youtrack.jetbrains.com/issue/IDEA-85496 - Getting svn: >> E200030: Commit failed (details follow): svn: E200030: BUSY >> [2] http://svn.haxx.se/dev/archive-2012-10/0365.shtml and >> http://svn.haxx.se/dev/archive-2012-10/0387.shtml