On Fr, 30 Okt 2009, Stefano Zacchiroli wrote:
> given that synchronous is set to "no") or else the Xapian
> message-by-message removal. If you already have some debugging code

Yes, that is it.

I did poor-mens timing by entering printfs around and seeing where
it takes time, and it is the callback, which boils down to
        mu_storage_xapian_cleanup
and indeed there the commits are done one by one:
       try {
                /* this seems like an akward to get the specific doc;
                   defining a range... is there another way? */
                Xapian::Query::Query q (Xapian::Query::OP_VALUE_RANGE,
                                        MU_XAPIAN_MSG_PATH_ID,
                                        msgpath,msgpath);
                Xapian::Enquire enq(*storage->_db);
                Xapian::MSet matches;

                enq.set_query(q);
                matches = enq.get_mset(0, 1);

                transaction_begin (storage);
                for (Xapian::MSet::const_iterator ci = matches.begin();
                     ci != matches.end(); ++ci) {
                        Xapian::docid id (ci.get_document().get_docid());
                        g_message ("xapian: deleting document %u", (guint)id);
                        storage->_db->delete_document(id);
                }
                transaction_commit (storage);
                return MU_OK;

Most of the time is spent in the transaction_commit.

I guess that is the core of the problem that the xapian database
is opened/changed/written again and again.

Well. Now we only need someone to fix that ;-)

Maybe we have to have a callback_start_removal which boils down to
transaction_begin(storage), the normal callback doing the removals,
and a callback_end_removal which commits.

Puhhhhhh.... not for me. I probably can rewrite the code, but not without
*loads* of time which I don't have.

Best wishes

Norbert

-------------------------------------------------------------------------------
Dr. Norbert Preining                                        Associate Professor
JAIST Japan Advanced Institute of Science and Technology   prein...@jaist.ac.jp
Vienna University of Technology                               prein...@logic.at
Debian Developer (Debian TeX Task Force)                    prein...@debian.org
gpg DSA: 0x09C5B094      fp: 14DF 2E6C 0307 BE6D AD76  A9C0 D2BF 4AA3 09C5 B094
-------------------------------------------------------------------------------
YONKERS (n.)
(Rare.) The combined thrill of pain and shame when being caught in
public plucking your nostril-hairs and stuffing them into your
side-pocket.
                        --- Douglas Adams, The Meaning of Liff



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to