[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#695649: marked as done (unblock: xapian-core/1.2.12-2)



Your message dated Tue, 11 Dec 2012 19:52:18 +0100
with message-id <50C780E2.1060505@thykier.net>
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 owner@bugs.debian.org
immediately.)


-- 
695649: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695649
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
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 <olly@survex.com>  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: release.debian.org@packages.debian.org
> 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 to: