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

Re: Repos won't recover with db_recover

From: Blair Zajac <blair_at_orcaware.com>
Date: 2002-07-30 22:11:20 CEST

Blair Zajac wrote:
>
> I think the problem yesterday of running 'svnadmin lsrevs' on my repos
> and having it run out of memory on the system munched it somehow. I've
> had to revert to the last hot-backup.py saved file. Thank you for that
> script!
>
> On the munched repos, running 'db_recover -ve -h repos/db' works hard
> for a while but never stops and running 'strace -p PID' on it shows this:
>
> select(0, NULL, NULL, NULL, {0, 750000}) = 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)
> 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)
> select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
> select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)

Even though we don't require now the -e flag to db_recover, I got a
response back from Sleepycat regarding this bug. The attached patch
for db 4.0.14 fixes this problem. I've run it on my broken repos
and the program completed.

Best,
Blair

-- 
Blair Zajac <blair@orcaware.com>
Web and OS performance plots - http://www.orcaware.com/orca/

attached mail follows:


Blair,

That attached patch should permit recover -e to complete on your database.

Let me know if you have additional problems.

Michael Ubell
Sleepycat Software.

*** mp_bh.c.orig Sat Jul 28 11:05:21 2001
--- mp_bh.c Mon Jul 29 15:30:27 2002
***************
*** 347,353 ****
           * already, unless it was modified by the application *after* the sync
           * was scheduled.
           */
! if (LOGGING_ON(dbenv) && mfp->lsn_off != -1 &&
              (!F_ISSET(bhp, BH_SYNC) || F_ISSET(bhp, BH_SYNC_LOGFLSH))) {
                  memcpy(&lsn, bhp->buf + mfp->lsn_off, sizeof(DB_LSN));
                  if ((ret = dbenv->log_flush(dbenv, &lsn)) != 0)
--- 347,353 ----
           * already, unless it was modified by the application *after* the sync
           * was scheduled.
           */
! if (LOGGING_ON(dbenv) && !IS_RECOVERING(dbenv) && mfp->lsn_off != -1 &&
              (!F_ISSET(bhp, BH_SYNC) || F_ISSET(bhp, BH_SYNC_LOGFLSH))) {
                  memcpy(&lsn, bhp->buf + mfp->lsn_off, sizeof(DB_LSN));
                  if ((ret = dbenv->log_flush(dbenv, &lsn)) != 0)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Jul 30 22:11:58 2002

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.