about summary refs log tree commit diff
path: root/pkgs/development/libraries/db4
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2005-12-15 17:03:47 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2005-12-15 17:03:47 +0000
commit62d12a8cdb0c91043a880339a25533f016538a13 (patch)
tree02d2373440a76a9edf61c35d5089a83a1b0a6db6 /pkgs/development/libraries/db4
parent51c111cb2e8db7edcd61774d785196c5115102cb (diff)
downloadnixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar.gz
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar.bz2
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar.lz
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar.xz
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.tar.zst
nixlib-62d12a8cdb0c91043a880339a25533f016538a13.zip
* Apply the register patch.
svn path=/nixpkgs/trunk/; revision=4375
Diffstat (limited to 'pkgs/development/libraries/db4')
-rw-r--r--pkgs/development/libraries/db4/default.nix1
-rw-r--r--pkgs/development/libraries/db4/register.patch84
2 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/development/libraries/db4/default.nix b/pkgs/development/libraries/db4/default.nix
index ab5cd1803e17..169e1e1e564d 100644
--- a/pkgs/development/libraries/db4/default.nix
+++ b/pkgs/development/libraries/db4/default.nix
@@ -11,4 +11,5 @@ stdenv.mkDerivation {
     (if cxxSupport then "--enable-cxx" else "--disable-cxx")
     (if cxxSupport then "--enable-compat185" else "--disable-compat185")
   ];
+  patches = [./register.patch]; # <- should be fixed in 4.4.17
 }
diff --git a/pkgs/development/libraries/db4/register.patch b/pkgs/development/libraries/db4/register.patch
new file mode 100644
index 000000000000..6dae0e0d7162
--- /dev/null
+++ b/pkgs/development/libraries/db4/register.patch
@@ -0,0 +1,84 @@
+diff -rc db-4.4.16.NC-orig/env/env_register.c db-4.4.16.NC/env/env_register.c
+*** db-4.4.16.NC-orig/env/env_register.c	2005-10-07 22:21:27.000000000 +0200
+--- db-4.4.16.NC/env/env_register.c	2005-12-08 17:16:44.000000000 +0100
+***************
+*** 217,226 ****
+  		if (nr != PID_LEN)
+  			goto corrupt;
+  
+! 		if (FLD_ISSET(
+! 		    dbenv->verbose, DB_VERB_REGISTER) && PID_ISEMPTY(buf)) {
+  			__db_msg(dbenv, "%02u: EMPTY", lcnt);
+! 			continue;
+  		}
+  
+  		/*
+--- 217,226 ----
+  		if (nr != PID_LEN)
+  			goto corrupt;
+  
+!                 if (PID_ISEMPTY(buf)) {
+!                     if (FLD_ISSET(dbenv->verbose, DB_VERB_REGISTER))
+  			__db_msg(dbenv, "%02u: EMPTY", lcnt);
+!                     continue;
+  		}
+  
+  		/*
+diff -rc db-4.4.16.NC-orig/test/env012.tcl db-4.4.16.NC/test/env012.tcl
+*** db-4.4.16.NC-orig/test/env012.tcl	2005-11-02 21:27:45.000000000 +0100
+--- db-4.4.16.NC/test/env012.tcl	2005-12-08 17:21:19.000000000 +0100
+***************
+*** 168,173 ****
+--- 168,219 ----
+  	logcheckfails $testdir/env$tnum.log.p2 DB_RUNRECOVERY
+  	logcheck $testdir/env$tnum.log.p3
+  
++         # Regression test: check that recovery doesn't run if there is
++ 	# a "X   " slot in the registry.
++ 	puts "\tEnv$tnum.f: Multiple processes can join with -register -recover."
++ 
++         # Make sure that we have at least 2 "X   " slots in the registry.
++ 	puts "\t\tEnv$tnum.f1: Start process 1."
++ 	set p1 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
++ 	    $testdir/env$tnum.log.p1 \
++ 	    $testdir $testfile PUT $key $data RECOVER 1 &]
++ 
++ 	puts "\t\tEnv$tnum.f2: Start process 2."
++ 	set p2 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
++ 	    $testdir/env$tnum.log.p2 \
++ 	    $testdir $testfile PUT $key $data RECOVER 1 &]
++ 
++ 	watch_procs $p1 1 120
++ 	watch_procs $p2 1 120
++ 
++ 	logcheck $testdir/env$tnum.log.p1
++ 	logcheck $testdir/env$tnum.log.p2
++     
++         # Start a process.  It should not run recovery.  Under the bug
++ 	# we're testing for, it would, because it would get an
++         # exclusive lock on the first "X    " slot.
++ 	puts "\t\tEnv$tnum.f3: Start process 3."
++ 	set p3 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
++ 	    $testdir/env$tnum.log.p3 \
++ 	    $testdir $testfile PUT $key $data RECOVER 10 &]
++ 
++         tclsleep 2
++     
++         # Start another process.  It should not run recovery either.
++         # The bug would cause it to run recovery because it would get
++         # an exclusive lock on the second "X    " slot.  This would
++         # cause p3 to panic.
++ 	puts "\t\tEnv$tnum.f4: Start process 4."
++ 	set p4 [exec $tclsh_path $test_path/wrap.tcl envscript.tcl \
++ 	    $testdir/env$tnum.log.p4 \
++ 	    $testdir $testfile PUT $key $data RECOVER 10 &]
++ 
++ 	watch_procs $p3 1 120
++ 	watch_procs $p4 1 120
++ 
++ 	# Check log files for failures.
++ 	logcheck $testdir/env$tnum.log.p3
++ 	logcheck $testdir/env$tnum.log.p4
+  }
+  
+  # Check log file and report failures with FAIL.  Use this when