Use a single Xapian Database object for update and query operations while indexing instead of separately open read/write ones. Separate objects seem to trigger Xapian issues
This commit is contained in:
parent
27f77addd6
commit
50ee2838dc
@ -781,12 +781,16 @@ bool Db::open(OpenMode mode, OpenError *error)
|
|||||||
#ifdef IDX_THREADS
|
#ifdef IDX_THREADS
|
||||||
m_ndb->maybeStartThreads();
|
m_ndb->maybeStartThreads();
|
||||||
#endif
|
#endif
|
||||||
// We open a readonly object in all cases (possibly in
|
// We used to open a readonly object in addition to
|
||||||
// addition to the r/w one) because some operations
|
// the r/w one because some operations were faster
|
||||||
// are faster when performed through a Database: no
|
// when performed through a Database: no forced
|
||||||
// forced flushes on allterms_begin(), ie, used in
|
// flushes on allterms_begin(), used in
|
||||||
// subDocs()
|
// subDocs(). This issue has been gone for a long time
|
||||||
m_ndb->xrdb = Xapian::Database(dir);
|
// (now: Xapian 1.2) and the separate objects seem to
|
||||||
|
// trigger other Xapian issues, so the query db is now
|
||||||
|
// a clone of the update one.
|
||||||
|
// m_ndb->xrdb = Xapian::Database(dir);
|
||||||
|
m_ndb->xrdb = m_ndb->xwdb;
|
||||||
LOGDEB(("Db::open: lastdocid: %d\n",
|
LOGDEB(("Db::open: lastdocid: %d\n",
|
||||||
m_ndb->xwdb.get_lastdocid()));
|
m_ndb->xwdb.get_lastdocid()));
|
||||||
LOGDEB2(("Db::open: resetting updated\n"));
|
LOGDEB2(("Db::open: resetting updated\n"));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user