Your message dated Sat, 04 Jun 2016 14:54:37 +0100 with message-id <1465048477.7545.10.camel@adam-barratt.org.uk> and subject line Closing bugs for fixed included in 7.11 has caused the Debian Bug report #821757, regarding wheezy-pu: package 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.) -- 821757: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=821757 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: wheezy-pu: package xapian-core/1.2.12-2
- From: Olly Betts <olly@survex.com>
- Date: Tue, 19 Apr 2016 13:51:21 +1200
- Message-id: <20160419015121.GA7756@survex.com>
Package: release.debian.org Severity: normal Tags: wheezy User: release.debian.org@packages.debian.org Usertags: pu I'd like to update xapian-core in wheezy to fix a bug which can cause database corruption. This is triggered by certain usage patterns, and the recoll package is known to be affected: https://bugs.debian.org/808610 I've attached a debdiff for the proposed upload. The patch added is from the upstream git repo - it's been on git master since 2015-04-28, and in upstream stable releases since 2015-05-20. There's already a pending request to address this in jessie: https://bugs.debian.org/820059 The patch for wheezy is exactly the same as that for jessie, except with a "quilt refresh" to adjust the line numbers of some of the hunks. Cheers, Ollydiff -Nru xapian-core-1.2.12/debian/changelog xapian-core-1.2.12/debian/changelog --- xapian-core-1.2.12/debian/changelog 2012-12-11 17:22:23.000000000 +1300 +++ xapian-core-1.2.12/debian/changelog 2016-04-19 13:14:15.000000000 +1200 @@ -1,3 +1,10 @@ +xapian-core (1.2.12-2+deb7u1) oldstable; urgency=medium + + * New patch increment-cursor-version-on-cancel-or-reopen.patch fixing + possible database corruption, especially with recoll. (Closes: #808610) + + -- Olly Betts <olly@survex.com> Tue, 19 Apr 2016 13:13:31 +1200 + xapian-core (1.2.12-2) unstable; urgency=low * New patch fix-db-write-lock.patch which fixes database write locking to diff -Nru xapian-core-1.2.12/debian/patches/increment-cursor-version-on-cancel-or-reopen.patch xapian-core-1.2.12/debian/patches/increment-cursor-version-on-cancel-or-reopen.patch --- xapian-core-1.2.12/debian/patches/increment-cursor-version-on-cancel-or-reopen.patch 1970-01-01 12:00:00.000000000 +1200 +++ xapian-core-1.2.12/debian/patches/increment-cursor-version-on-cancel-or-reopen.patch 2016-04-19 13:13:25.000000000 +1200 @@ -0,0 +1,197 @@ +Description: Increment cursor version of cancel or reopen + Potentially increment the cursor version on cancel() or when the database is + reopened, and flag the current cursor version as used when a cursor is + rebuilt. + . + Fixes database corruption issues with certain usage patterns, which recoll + can trigger. +Author: Olly Betts <olly@survex.com> +Origin: upstream, https://trac.xapian.org/changeset/826d1a19cc356e7bf66c1681626e70af32967447/git and https://trac.xapian.org/changeset/d784290ce015958474f965817f7a41f1483c3e03/git +Bug: https://trac.xapian.org/ticket/675 +Bug-Debian: https://bugs.debian.org/808610 +Forwarded: https://trac.xapian.org/ticket/675 +Last-Update: 2016-04-19 + +--- a/backends/brass/brass_cursor.cc ++++ b/backends/brass/brass_cursor.cc +@@ -1,7 +1,7 @@ + /* brass_cursor.cc: Btree cursor implementation + * + * Copyright 1999,2000,2001 BrightStation PLC +- * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012 Olly Betts ++ * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012,2015 Olly Betts + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as +@@ -99,6 +99,7 @@ + C[level].n = B->C[level].n; + C[level].p = B->C[level].p; + version = B->cursor_version; ++ B->cursor_created_since_last_modification = true; + } + + BrassCursor::~BrassCursor() +--- a/backends/brass/brass_table.cc ++++ b/backends/brass/brass_table.cc +@@ -1435,6 +1435,11 @@ + + base_letter = ch; + ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } ++ + /* ready to open the main file */ + + RETURN(true); +@@ -1975,6 +1980,11 @@ + changed_n = 0; + changed_c = DIR_START; + seq_count = SEQ_START_POINT; ++ ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } + } + + /************ B-tree reading ************/ +--- a/backends/chert/chert_cursor.cc ++++ b/backends/chert/chert_cursor.cc +@@ -1,7 +1,7 @@ + /* chert_cursor.cc: Btree cursor implementation + * + * Copyright 1999,2000,2001 BrightStation PLC +- * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012 Olly Betts ++ * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012,2015 Olly Betts + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as +@@ -97,6 +97,7 @@ + C[level].n = B->C[level].n; + C[level].p = B->C[level].p; + version = B->cursor_version; ++ B->cursor_created_since_last_modification = true; + } + + ChertCursor::~ChertCursor() +--- a/backends/chert/chert_table.cc ++++ b/backends/chert/chert_table.cc +@@ -1438,6 +1438,11 @@ + + base_letter = ch; + ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } ++ + /* ready to open the main file */ + + RETURN(true); +@@ -1994,6 +1999,11 @@ + changed_n = 0; + changed_c = DIR_START; + seq_count = SEQ_START_POINT; ++ ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } + } + + /************ B-tree reading ************/ +--- a/backends/flint/flint_cursor.cc ++++ b/backends/flint/flint_cursor.cc +@@ -1,7 +1,7 @@ + /* flint_cursor.cc: Btree cursor implementation + * + * Copyright 1999,2000,2001 BrightStation PLC +- * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012 Olly Betts ++ * Copyright 2002,2003,2004,2005,2006,2007,2008,2009,2010,2012,2015 Olly Betts + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as +@@ -97,6 +97,7 @@ + C[level].n = B->C[level].n; + C[level].p = B->C[level].p; + version = B->cursor_version; ++ B->cursor_created_since_last_modification = true; + } + + FlintCursor::~FlintCursor() +--- a/backends/flint/flint_table.cc ++++ b/backends/flint/flint_table.cc +@@ -1427,6 +1427,11 @@ + + base_letter = ch; + ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } ++ + /* ready to open the main file */ + + return true; +@@ -1976,6 +1981,11 @@ + changed_n = 0; + changed_c = DIR_START; + seq_count = SEQ_START_POINT; ++ ++ if (cursor_created_since_last_modification) { ++ cursor_created_since_last_modification = false; ++ ++cursor_version; ++ } + } + + /************ B-tree reading ************/ +--- a/tests/api_backend.cc ++++ b/tests/api_backend.cc +@@ -788,3 +788,45 @@ + Xapian::Auto::open_stub("nosuchdirectory", Xapian::DB_OPEN)); + return true; + } ++ ++/// Regression test for #675, fixed in 1.3.3 and 1.2.21. ++DEFINE_TESTCASE(cursorbug1, brass || chert || flint) { ++ Xapian::WritableDatabase wdb = get_writable_database(); ++ Xapian::Database db = get_writable_database_as_database(); ++ Xapian::Enquire enq(db); ++ enq.set_query(Xapian::Query::MatchAll); ++ Xapian::MSet mset; ++ // The original problem triggers for chert and glass on repeat==7. ++ for (int repeat = 0; repeat < 10; ++repeat) { ++ tout.str(string()); ++ tout << "iteration #" << repeat << endl; ++ ++ const int ITEMS = 10; ++ int free_id = db.get_doccount(); ++ int offset = max(free_id, ITEMS * 2) - (ITEMS * 2); ++ int limit = offset + (ITEMS * 2); ++ ++ mset = enq.get_mset(offset, limit); ++ for (Xapian::MSetIterator m1 = mset.begin(); m1 != mset.end(); ++m1) { ++ (void)m1.get_document().get_value(0); ++ } ++ ++ for (int i = free_id; i <= free_id + ITEMS; ++i) { ++ Xapian::Document doc; ++ const string & id = str(i); ++ string qterm = "Q" + id; ++ doc.add_value(0, id); ++ doc.add_boolean_term(qterm); ++ wdb.replace_document(qterm, doc); ++ } ++ wdb.commit(); ++ ++ db.reopen(); ++ mset = enq.get_mset(offset, limit); ++ for (Xapian::MSetIterator m2 = mset.begin(); m2 != mset.end(); ++m2) { ++ (void)m2.get_document().get_value(0); ++ } ++ } ++ ++ return true; ++} 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 2012-12-11 17:22:00.000000000 +1300 +++ xapian-core-1.2.12/debian/patches/series 2016-04-19 13:12:53.000000000 +1200 @@ -1,2 +1,3 @@ fix-db-write-lock.patch replication-above-32GB.patch +increment-cursor-version-on-cancel-or-reopen.patchAttachment: signature.asc
Description: PGP signature
--- End Message ---
--- Begin Message ---
- To: 793986-done@bugs.debian.org, 818906-done@bugs.debian.org, 819282-done@bugs.debian.org, 819362-done@bugs.debian.org, 819499-done@bugs.debian.org, 819805-done@bugs.debian.org, 821044-done@bugs.debian.org, 821757-done@bugs.debian.org, 821834-done@bugs.debian.org, 822465-done@bugs.debian.org, 822853-done@bugs.debian.org
- Subject: Closing bugs for fixed included in 7.11
- From: "Adam D. Barratt" <adam@adam-barratt.org.uk>
- Date: Sat, 04 Jun 2016 14:54:37 +0100
- Message-id: <1465048477.7545.10.camel@adam-barratt.org.uk>
Version: 7.11 Hi, The fixes referred to in each of these bugs were included in today's 7.11 point release. Regards, Adam
--- End Message ---