Your message dated Tue, 11 Dec 2012 19:52:18 +0100
with message-id <[email protected]>
and subject line Re: Bug#695649: unblock: xapian-core/1.2.12-2
has caused the Debian Bug report #695649,
regarding unblock: xapian-core/1.2.12-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
695649: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695649
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock

Please unblock package xapian-core

This update contains the following changes compared to the version
currently in testing (1.2.12-1):

Fixes grave bug http://bugs.debian.org/695542 ("Concurrent threads can
succeed in locking database").

Fixes bug http://bugs.debian.org/695643 ("Database replication fails for
files > 32GB") which is a small and safe patch relevant to the LFS release
goal: http://wiki.debian.org/ReleaseGoals/LFS

I've attached a debdiff against 1.2.12-1 (currently in testing), and
for your reviewing convenience, the two new patches individually.

Cheers,
    Olly

unblock xapian-core/1.2.12-2

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru xapian-core-1.2.12/debian/changelog 
xapian-core-1.2.12/debian/changelog
--- xapian-core-1.2.12/debian/changelog 2012-06-28 19:54:11.000000000 +1200
+++ xapian-core-1.2.12/debian/changelog 2012-12-11 17:22:23.000000000 +1300
@@ -1,3 +1,13 @@
+xapian-core (1.2.12-2) unstable; urgency=low
+
+  * New patch fix-db-write-lock.patch which fixes database write locking to
+    work when the lock file is already open in the same process.
+    (Closes: #695542)
+  * New patch replication-above-32GB.patch which fixes database replication to
+    handle files > 32GB.  (Closes: #695643)
+
+ -- Olly Betts <[email protected]>  Tue, 11 Dec 2012 04:22:04 +0000
+
 xapian-core (1.2.12-1) unstable; urgency=low
 
   * New upstream release.
diff -Nru xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch 
xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch
--- xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch   1970-01-01 
12:00:00.000000000 +1200
+++ xapian-core-1.2.12/debian/patches/fix-db-write-lock.patch   2012-12-11 
17:25:07.000000000 +1300
@@ -0,0 +1,62 @@
+Taken from 1.2 branch of upstream SVN r16938.
+
+--- a/backends/flint_lock.cc   (revision 16937)
++++ b/backends/flint_lock.cc   (revision 16938)
+@@ -2,5 +2,5 @@
+  * @brief Flint-compatible database locking.
+  */
+-/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011 Olly Betts
++/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Olly Betts
+  *
+  * This program is free software; you can redistribute it and/or
+@@ -134,4 +134,20 @@
+       close(fds[0]);
+ 
++      // Connect pipe to stdin and stdout.
++      dup2(fds[1], 0);
++      dup2(fds[1], 1);
++
++      // Make sure we don't hang on to open files which may get deleted but
++      // not have their disk space released until we exit.  Close these
++      // before we try to get the lock because if one of them is open on
++      // the lock file then closing it after obtaining the lock would release
++      // the lock, which would be really bad.
++      for (int i = 2; i < lockfd; ++i) {
++          // Retry on EINTR; just ignore other errors (we'll get
++          // EBADF if the fd isn't open so that's OK).
++          while (close(i) < 0 && errno == EINTR) { }
++      }
++      closefrom(lockfd + 1);
++
+       reason why = SUCCESS;
+       {
+@@ -160,5 +176,5 @@
+           // Tell the parent if we got the lock, and if not, why not.
+           char ch = static_cast<char>(why);
+-          while (write(fds[1], &ch, 1) < 0) {
++          while (write(1, &ch, 1) < 0) {
+               // EINTR means a signal interrupted us, so retry.
+               // Otherwise we're DOOMED!  The best we can do is just exit
+@@ -169,8 +185,4 @@
+           if (why != SUCCESS) _exit(0);
+       }
+-
+-      // Connect pipe to stdin and stdout.
+-      dup2(fds[1], 0);
+-      dup2(fds[1], 1);
+ 
+       // Make sure we don't block unmount() of partition holding the current
+@@ -184,13 +196,4 @@
+           // gives a warning even if we cast the result to void.
+       }
+-
+-      // Make sure we don't hang on to open files which may get deleted but
+-      // not have their disk space released until we exit.
+-      for (int i = 2; i < lockfd; ++i) {
+-          // Retry on EINTR; just ignore other errors (we'll get
+-          // EBADF if the fd isn't open so that's OK).
+-          while (close(i) < 0 && errno == EINTR) { }
+-      }
+-      closefrom(lockfd + 1);
+ 
+       // FIXME: use special statically linked helper instead of cat.
diff -Nru xapian-core-1.2.12/debian/patches/replication-above-32GB.patch 
xapian-core-1.2.12/debian/patches/replication-above-32GB.patch
--- xapian-core-1.2.12/debian/patches/replication-above-32GB.patch      
1970-01-01 12:00:00.000000000 +1200
+++ xapian-core-1.2.12/debian/patches/replication-above-32GB.patch      
2012-12-11 17:25:13.000000000 +1300
@@ -0,0 +1,13 @@
+Taken from 1.2 branch of upstream SVN r16915.
+
+--- a/net/remoteconnection.cc  (revision 16348)
++++ b/net/remoteconnection.cc  (revision 16915)
+@@ -618,5 +618,7 @@
+     int shift = 0;
+     do {
+-      if (i == buffer.end() || shift > 28) {
++      // Allow a full 64 bits for message lengths - anything longer than that
++      // is almost certainly a corrupt value.
++      if (i == buffer.end() || shift > 63) {
+           // Something is very wrong...
+           throw Xapian::NetworkError("Insane message length specified!");
diff -Nru xapian-core-1.2.12/debian/patches/series 
xapian-core-1.2.12/debian/patches/series
--- xapian-core-1.2.12/debian/patches/series    1970-01-01 12:00:00.000000000 
+1200
+++ xapian-core-1.2.12/debian/patches/series    2012-12-11 17:22:00.000000000 
+1300
@@ -0,0 +1,2 @@
+fix-db-write-lock.patch
+replication-above-32GB.patch
Taken from 1.2 branch of upstream SVN r16938.

--- a/backends/flint_lock.cc	(revision 16937)
+++ b/backends/flint_lock.cc	(revision 16938)
@@ -2,5 +2,5 @@
  * @brief Flint-compatible database locking.
  */
-/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011 Olly Betts
+/* Copyright (C) 2005,2006,2007,2008,2009,2010,2011,2012 Olly Betts
  *
  * This program is free software; you can redistribute it and/or
@@ -134,4 +134,20 @@
 	close(fds[0]);
 
+	// Connect pipe to stdin and stdout.
+	dup2(fds[1], 0);
+	dup2(fds[1], 1);
+
+	// Make sure we don't hang on to open files which may get deleted but
+	// not have their disk space released until we exit.  Close these
+	// before we try to get the lock because if one of them is open on
+	// the lock file then closing it after obtaining the lock would release
+	// the lock, which would be really bad.
+	for (int i = 2; i < lockfd; ++i) {
+	    // Retry on EINTR; just ignore other errors (we'll get
+	    // EBADF if the fd isn't open so that's OK).
+	    while (close(i) < 0 && errno == EINTR) { }
+	}
+	closefrom(lockfd + 1);
+
 	reason why = SUCCESS;
 	{
@@ -160,5 +176,5 @@
 	    // Tell the parent if we got the lock, and if not, why not.
 	    char ch = static_cast<char>(why);
-	    while (write(fds[1], &ch, 1) < 0) {
+	    while (write(1, &ch, 1) < 0) {
 		// EINTR means a signal interrupted us, so retry.
 		// Otherwise we're DOOMED!  The best we can do is just exit
@@ -169,8 +185,4 @@
 	    if (why != SUCCESS) _exit(0);
 	}
-
-	// Connect pipe to stdin and stdout.
-	dup2(fds[1], 0);
-	dup2(fds[1], 1);
 
 	// Make sure we don't block unmount() of partition holding the current
@@ -184,13 +196,4 @@
 	    // gives a warning even if we cast the result to void.
 	}
-
-	// Make sure we don't hang on to open files which may get deleted but
-	// not have their disk space released until we exit.
-	for (int i = 2; i < lockfd; ++i) {
-	    // Retry on EINTR; just ignore other errors (we'll get
-	    // EBADF if the fd isn't open so that's OK).
-	    while (close(i) < 0 && errno == EINTR) { }
-	}
-	closefrom(lockfd + 1);
 
 	// FIXME: use special statically linked helper instead of cat.
Taken from 1.2 branch of upstream SVN r16915.

--- a/net/remoteconnection.cc	(revision 16348)
+++ b/net/remoteconnection.cc	(revision 16915)
@@ -618,5 +618,7 @@
     int shift = 0;
     do {
-	if (i == buffer.end() || shift > 28) {
+	// Allow a full 64 bits for message lengths - anything longer than that
+	// is almost certainly a corrupt value.
+	if (i == buffer.end() || shift > 63) {
 	    // Something is very wrong...
 	    throw Xapian::NetworkError("Insane message length specified!");

Attachment: signature.asc
Description: Digital signature


--- End Message ---
--- Begin Message ---
On 2012-12-11 08:16, Olly Betts wrote:
> Package: release.debian.org
> Severity: normal
> User: [email protected]
> Usertags: unblock
> 
> Please unblock package xapian-core
> 
> This update contains the following changes compared to the version
> currently in testing (1.2.12-1):
> 
> Fixes grave bug http://bugs.debian.org/695542 ("Concurrent threads can
> succeed in locking database").
> 
> Fixes bug http://bugs.debian.org/695643 ("Database replication fails for
> files > 32GB") which is a small and safe patch relevant to the LFS release
> goal: http://wiki.debian.org/ReleaseGoals/LFS
> 
> I've attached a debdiff against 1.2.12-1 (currently in testing), and
> for your reviewing convenience, the two new patches individually.
> 
> Cheers,
>     Olly
> 
> unblock xapian-core/1.2.12-2
> 
> [...]

Unblocked, thanks.

~Niels

--- End Message ---

Reply via email to