--- loncom/LONCAPA.pm 2006/07/03 10:26:22 1.12 +++ loncom/LONCAPA.pm 2006/10/13 19:11:05 1.13.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network # Base routines # -# $Id: LONCAPA.pm,v 1.12 2006/07/03 10:26:22 foxr Exp $ +# $Id: LONCAPA.pm,v 1.13.2.1 2006/10/13 19:11:05 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -269,7 +269,8 @@ sub _do_hash_untie { return undef; } # If this is compressed, we will actually need an exclusive lock - if (-e "$file_prefix.db.gz") { + if (-e "$file_prefix.db.gz" + || !-e "$file_prefix.db.old" ) { if (!&flock_sym(LOCK_EX)) { &clean_sym(); return undef; @@ -294,10 +295,39 @@ sub _do_hash_untie { system("gunzip $file_prefix.hist.gz"); } } + if (!-e "$file_prefix.db.old") { + my $dump_db = '/home/httpd/perl/debug/dump_db_static_32'; + my $create_db = '/home/httpd/perl/debug/create_db_dynamic_64'; + my $file = "$file_prefix.db"; + &main::logthis("Converting $file"); + if (!-x $dump_db) { + &clean_symb(); + &main::logthis("$dump_db unexecutable"); + return; + } + if (!-x $create_db) { + &clean_symb(); + &main::logthis("$create_db unexecutable"); + return; + } + system("$dump_db -f $file|$create_db -f $file.new"); + if (!-e "$file.new") { + &clean_symb(); + &main::logthis("conversion faile $file.new doesn't exist"); + return; + } + rename($file,"$file.old"); + rename("$file.new","$file"); + } # Change access mode to non-blocking $how=$how|&GDBM_NOLOCK(); # Go ahead and tie the hash - return &_do_hash_tie($file_prefix,$namespace,$how,$loghead,$what); + my $result = + &_do_hash_tie($file_prefix,$namespace,$how,$loghead,$what); + if (!$result) { + &clean_sym(); + } + return $result; } sub flock_sym {