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

RE: svn client fails with Berkeley DB error Cannot allocate memory - repository wedges

From: Martin J. Evans <martin.evans_at_easysoft.com>
Date: 2004-05-28 13:16:39 CEST

I forgot to say this is subversion 1.0.2.

sh-2.05$ svn --version
svn, version 1.0.2 (r9423)
   compiled May 11 2004, 14:43:24

Copyright (C) 2000-2004 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' schema
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' schema
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' schema

Martin

--
Martin J. Evans
Easysoft Ltd, UK
Development
On 28-May-2004 Martin J. Evans wrote:
> Hi,
> 
> Since no one has yet replied to my "tree view of repository including
> following
> external references" posting I put together a small perl script using
> WEB::SVN
> to do the job (see below). Running this program to a dav URL I see in the
> Apache log:
> 
> ./x.pl -u http://a.b.c/linux-x86
> 
> [Fri May 28 09:33:34 2004] [error] [client 192.168.0.78] Could not fetch
> resourc
> e information.  [500, #0]
> [Fri May 28 09:33:34 2004] [error] [client 192.168.0.78] Could not open the
> requ
> ested SVN filesystem  [500, #160029]
> [Fri May 28 09:33:34 2004] [error] [client 192.168.0.78] (17)File exists:
> Could 
> not open the requested SVN filesystem  [500, #160029]
> [Fri May 28 09:34:04 2004] [error] [client 192.168.0.78] (20014)Error string
> not
>  specified yet: Berkeley DB error while opening 'transactions' table for
> filesys
> tem /var/subversion/distribution/linux-x86/db:
> Cannot allocate memory
> 
> (Perhaps this is related to issue 1224 - "svn update crashes with "Cannot
> allocate memory""). If I change Apache's "MaxClients 150" to "MaxClients 50"
> my
> perl program slows down massively but runs to completion (similarly if I
> insert
> sleeps into the code it runs to completion).
> 
> If I run this perl directly on the machine with a local URL
> 
> ./x.pl -u file///var/subversion/distribution/linux-x86
> 
> I get:
> 
> Couldn't open a repository: Unable to open an ra_local session to URL: Unable
> to open repository
> 'file:///var/subversion/distribution/linux-x86/common/libraries/extras/tags/re
> le
> ase-1_0_32/libraries/extras': Berkeley DB error while opening 'nodes' table
> for
> filesystem /var/subversion/distribution/linux-x86/db:
> Cannot allocate memory at ./x.pl line 11
> 
> My repository appears to wedge after the later (perhaps issue 739 -
> "automatic
> db_recovery feature in libsvn_fs").
> 
> This is really worrying for us. We've been moving our source control to
> subversion for the last month and now it seems we can wedge the repository
> very easily and lock everyone out of it.
> 
> The machine we are using has 2Gb of memory and 30Gb of disk and the
> repository
> is not that large (6Mb) but it contains a lot of external references to other
> repositories totalling around 0.5Gb.
> 
> Any one got any suggestions?
> 
> The Perl is:
> 
>#!/usr/local/bin/perl
> use strict ;
> use Getopt::Std ;
> use SVN::Client;
> use Data::Dumper;
> 
> sub process_dir
> {
>   my ( $ctx, $url, $revision, $spaces ) = @_ ;
>   my $dirs = $ctx->ls ( $url , $revision, 0 ) ;
> 
>   foreach my $dir (sort keys (%$dirs)) {
>         my $printed = 0;
>         my $props = $ctx->propget("svn:externals", "$url/$dir", $revision,
> 0);
>         if (%$props + 0) {
>                 print " " x $spaces, $dir, "\n";
>                 $printed++;
>                 foreach my $prop (keys %$props) {
>                         my $y = $props->{$prop};
>                         $y =~ tr/\r//d;
>                         my @x = split /\s+/,$y;
>                         for (my $i = 0; $i < $#x; $i+=2) {
>                           print " " x $spaces, " ", $x[$i], " -> ", $x[$i+1],
> "\n";
>                         }
>                 }
>         }
>         if ($dirs->{$dir}->kind() == $SVN::Node::dir) {
>                 print " " x $spaces, $dir, "\n" if ($printed eq 0);
>                 process_dir($ctx, "$url/$dir", $revision, $spaces+1);
>         }
>         elsif ($dirs->{$dir}->kind() == $SVN::Node::file) {
>                 print  " " x $spaces, "$dir\n" if ($printed eq 0);
>         } else {
>                 print $dir, "\n";
>                 exit 0;
>         }
>   }
> }
> 
> my $url ;
> my $ctx = new SVN::Client(
>               auth => [SVN::Client::get_simple_provider(),
>               SVN::Client::get_simple_prompt_provider(\&simple_prompt,2),
>               SVN::Client::get_username_provider()]
>               );
> my $revision = 'HEAD' ;
> my %options ;
> getopts("u:",\%options);
> 
> if ( $options{'u'} ) { $url = $options{'u'}; }
> if ( $options{'r'} ) { $revision = $options{'r'}; }
> print "[$url]\n";
> process_dir ( $ctx, $url, $revision, 0 )
> 
> Martin
> --
> Martin J. Evans
> Easysoft Ltd, UK
> Development
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Fri May 28 13:18:03 2004

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

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