v2.3.11.3 solr plugin search via MUA fails to match accented ascii characters; cmd line exec of `doveadm fts lookup` PANICs (assertion failed)

Aki Tuomi aki.tuomi at open-xchange.com
Mon Oct 19 08:28:27 EEST 2020


> On 19/10/2020 02:49 PGNet Dev <pgnet.dev at gmail.com> wrote:
> 
>  
> I've since rebuilt/reconfig'd all parts of my setup from scratch; some good cleanup along the way.
> 
> Atm, my entire system for send/recv, store/retrieve, + rules & search is working as I intend.  Ok, mostly ...
> 
> Except for this accented-character search mystery.  I've got a _lot_ of mail with various languages in bodies, so _do_ need to get this sorted.
> 
> > On 10/18/20 2:58 PM, John Fawcett wrote:
> ...
> > silly question
> ...
> 
> hardly!
> 
> 
> creating 2 messages
> 
> 	(1)
> 	Subject: tambien
> 	Body:    tambien
> 
> 	(2)
> 	Subject: también
> 	Body:    también
> 
> and two more, two avoid known stop words
> 
> 	(3)
> 	Subject: aausdfrhyetdwgyatrdf
> 	Body:    aausdfrhyetdwgyatrdf
> 
> 	(4)
> 	Subject: aausdfrhyétdwgyatrdf
> 	Body:    aausdfrhyétdwgyatrdf
> 
> 
> 1st,
> 
> 	doveadm fts rescan -u myuser at example.com
> 	doveadm index      -u myuser at example.com -q '*'
> 
> TBird/solr searches,
> 
> 	Subject: tambien  ==> FOUND
> 	Subject: también  ==> FOUND
> 	Subject: aausdfrhyetdwgyatrdf  ==> FOUND
> 	Subject: aausdfrhyétdwgyatrdf  ==> FOUND
> 
> 	Body:    tambien  ==> FOUND
> 	Body:    también  ==> (empty)
> 	Body:    aausdfrhyetdwgyatrdf  ==> FOUND
> 	Body:    aausdfrhyétdwgyatrdf  ==>  (empty)
> 
> suggests it's _not_ (just) an existing-stopword problem
> 
> notable/odd that subject searches are OK, but not body.
> 
> 
> 
> On 10/18/20 2:58 PM, Shawn Heisey wrote:
> ...
> > If you are using something like the following schema:
> > https://raw.githubusercontent.com/dovecot/core/master/doc/solr-schema-7.7.0.xml
> 
> I am
> 
> > Solr does have a set of ICU filters, which I would recommend using rather than the lowercase filter
> 
> I'll give that a try ; haven't used solr outside of the dovecot context -- so need to find a doc/example on how, exactly, that's done correctly.
> 
> > I cannot say much about the panic you're getting when using the doveadm command.  The stacktrace says it is happening in 
> > dovecot code, not Solr code.  And it looks like the panic had nothing to do with FTS or Solr ... what I see points to
> > mailbox storage code. 
> 
> again/still
> 
> 	doveadm fts lookup -u myuser at example.com <any key> "<any str>"
> 
> _all_ panic, as above,
> 
> 
> 	doveadm(myuser at example.com): Panic: file mail-storage.c: line 2112 (mailbox_get_open_status): assertion failed: (box->opened)
> 	doveadm(myuser at example.com): Error: Raw backtrace: /usr/lib64/dovecot/libdovecot.so.0(backtrace_append+0x46) [0x7f61bba4ecc6]
> 	-> /usr/lib64/dovecot/libdovecot.so.0(backtrace_get+0x22) [0x7f61bba4ede2]
> 	-> /usr/lib64/dovecot/libdovecot.so.0(+0x10025b) [0x7f61bba5825b]
> 	-> /usr/lib64/dovecot/libdovecot.so.0(+0x100297) [0x7f61bba58297]
> 	-> /usr/lib64/dovecot/libdovecot.so.0(+0x59bc6) [0x7f61bb9b1bc6]
> 	-> /usr/lib64/dovecot/libdovecot-storage.so.0(+0x4779e) [0x7f61bbb6579e]
> 	-> /usr/lib64/dovecot/lib21_fts_solr_plugin.so(+0x5849) [0x7f61bb5b7849]
> 	-> /usr/lib64/dovecot/lib20_fts_plugin.so(fts_backend_lookup+0x51) [0x7f61bb1d9491]
> 	-> /usr/lib64/dovecot/doveadm/lib20_doveadm_fts_plugin.so(+0x3280) [0x7f61bb14b280]
> 	-> doveadm(+0x343cd) [0x55f5def873cd]
> 	-> doveadm(+0x34fe0) [0x55f5def87fe0]
> 	-> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x22d) [0x55f5def88e2d]
> 	-> doveadm(doveadm_cmd_run_ver2+0x4e8) [0x55f5def998d8]
> 	-> doveadm(doveadm_cmd_try_run_ver2+0x3e) [0x55f5def9992e]
> 	-> doveadm(main+0x1d4) [0x55f5def77cf4]
> 	-> /lib64/libc.so.6(__libc_start_main+0xf2) [0x7f61bb613042]
> 	-> doveadm(_start+0x2e) [0x55f5def781ce]
> 	Aborted
> 
> Hopefully dovecot devs might comment further.
> 
> I'll see what I find with using the ICU filters -- if perhaps anything changes

Hi!

I can reproduce your problem with the `fts lookup` command. Luckily it's equivalent to running `doveadm search`. I'll open a bug about this.

Dovecot FTS tokenization is not done, unless you have `use_libfts` in fts_solr setting, in your case

fts_solr = url=https://solr.example.com:8984/solr/dovecot/ use_libfts

Without this, everything is sent to to solr as-is, which is then expected to do all the work.

Aki


More information about the dovecot mailing list