[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Can't diff after killing svnlook

From: Greg Ward <gward_at_mems-exchange.org>
Date: 2003-01-17 20:42:02 CET

Yikes -- out of curiosity, I just ran "svnlook tree ...". It quickly
spewed reams of data at me, so I killed it with a quick Ctrl-C.

Now my repository is (slightly) hosed: I can't get diffs out. With
svnlook on the server, it just hangs. Running strace reveals that
someone is calling select() on an empty fileset, with timeouts
increasing geometrically up to 1 sec:

  [...]
  open("/data/subversion/repository/db/strings", O_RDWR|O_LARGEFILE) = 9
  fcntl64(9, F_SETFD, FD_CLOEXEC) = 0
  fstat64(9, {st_mode=S_IFREG|0644, st_size=147283968, ...}) = 0
  open("/data/subversion/repository/locks/db.lock", O_RDONLY) = 10
  fcntl64(10, F_SETLKW, {type=F_RDLCK, whence=SEEK_SET, start=0, len=0}) = 0
  [... a whole bunch of brk() calls...]
  select(0, NULL, NULL, NULL, {0, 1000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 2000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 4000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 8000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 16000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 32000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 64000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 128000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 256000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {0, 512000}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
  select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
  [...continue, presumably forever...]

Running "svn diff" on a remote http client at least doesn't hang, but:

  $ svn diff -r PREV lib/CHANGES.txt
  svn: Berkeley DB error
  svn: REPORT request failed on /repos/trunk/vfab/lib
  svn:
  Berkeley DB error while checkpointing after Berkeley DB transaction for filesystem /data/subversion/repository/db:
  DB_INCOMPLETE: Cache flush was unable to complete

I presume I have to run "svnadmin recover" on the server. This is more
than a bit worrying though: for starters, why does svnlook need
read-write access to the repository? Why does it hose the repository if
I just kill it with Ctrl-C? That seems rather flaky.

-- 
Greg Ward - software developer                gward@mems-exchange.org
MEMS Exchange                            http://www.mems-exchange.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Jan 17 20:42:49 2003

This is an archived mail posted to the Subversion Dev mailing list.