<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 9pt; font-family: Verdana,Geneva,sans-serif'>
<p>Sorted this out. sorry for noise</p>
<div id="signature"> </div>
<p><br /></p>
<p id="reply-intro">On 2019-01-12 11:39, Joan Moreau wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<p>The change of "Extern C" suggested by Timo actually solved the situation</p>
<p><br /></p>
<p>Now, further question :</p>
<p>I put a "i_warning" at each of my functions, and I see in the log :</p>
<p>Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_backend_xapian_alloc<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_backend_xapian_init<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_xapian init (3,25)<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_backend_xapian_get_last_uid<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Error: Mailbox XXX: Status lookup failed: Internal error occurred. Refer to server log for more information. [2019-01-12 10:33:27]<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_backend_xapian_deinit<br />Jan 12 10:33:27 indexer-worker(jom@grosjo.net)<30970><ms9zEnfCOVyHegAA0thIag:8IhwIHfCOVz6eAAA0thIag>: Warning: fts_backend_xapian_unset_box<br />Jan 12 10:33:27 lda(jom@grosjo.net)<31367><ms9zEnfCOVyHegAA0thIag>: Warning: fts_backend_xapian_deinit</p>
<p><br /></p>
<p>The error comes from the fact taht the "get_last_uid" is called without selecting a mailbox first, and therefore there is of course no uid.</p>
<p>How come ?</p>
<p><br /></p>
<p><br /></p>
<div id="signature"> </div>
<p><br /></p>
<p id="reply-intro">On 2019-01-12 10:50, Aki Tuomi wrote:</p>
<blockquote style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0;">
<div>Did you remember to load fts first?</div>
<div> </div>
<div>mail_plugins =$mail_plugins fts fts_xapian</div>
<div> </div>
<div>Aki</div>
<blockquote style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0;">
<div>On 12 January 2019 at 10:37 Joan Moreau via dovecot < <a href="mailto:dovecot@dovecot.org" rel="noreferrer">dovecot@dovecot.org</a>> wrote:</div>
<div> </div>
<div> </div>
<div>STATUS</div>
<div> </div>
<div>- Alpha code is written and compiling now. (attached)</div>
<div> </div>
<div>- I would like to start testing. However, there is an error when</div>
<div>starting dovecot (git) :</div>
<div> </div>
<div>Error: Couldn't load required plugin</div>
<div>/usr/lib/dovecot/lib21_fts_xapian_plugin.so: dlopen() failed:</div>
<div>/usr/lib/dovecot/lib21_fts_xapian_plugin.so: undefined symbol:</div>
<div>_Z30fts_backend_default_can_lookupP11fts_backendPK15mail_search_arg</div>
<div> </div>
<div>ldd shows that fts lib is properly linked:</div>
<div># ldd /usr/lib/dovecot/lib21_fts_xapian_plugin.so</div>
<div>(...)</div>
<div>lib20_fts_plugin.so => /usr/lib/dovecot/lib20_fts_plugin.so</div>
<div>(0x00007f25f75e0000)</div>
<div>(...)</div>
<div>libxapian.so.30 => /usr/lib/libxapian.so.30 (0x00007fe3a51e2000)</div>
<div> </div>
<div>Your help very welcome</div>
<div> </div>
<div>PENDING QUESTIONS</div>
<div> </div>
<div>1 - WHat does represent "subargs" in mail_search_args</div>
<div> </div>
<div>2 - for rescan : who is responsible for passing again the new email ? Is</div>
<div> </div>
<div>the Dovecot core sending again all the emails to index ? or the fts</div>
<div>shall somehow access the mailbox and read all emails ? Wouldn't just be</div>
<div>saying "delete all index and get_last_uid is now 0" the easy way ? or</div>
<div>the fts must process all emails (and block the current thread as a</div>
<div>mailbx maybe quite large)</div>
<div> </div>
<div>3 - for get_last_uid : this uncertainity is very unclear. "If there is a</div>
<div> </div>
<div>gap, then indexer first indexes all the missing" -> this mean at a</div>
<div>certain point, indexer maybe rebuilding a previous email, so *last* uid</div>
<div>is something different than max. And how indexer does know whther there</div>
<div>is a gap wihtout callong the fts backend (whch it does not as there are</div>
<div>no function for that) ?</div>
<div> </div>
<div>Thank you</div>
</blockquote>
<div> </div>
<div class="io-ox-signature">--- <br />Aki Tuomi</div>
</blockquote>
</blockquote>
</body></html>