ご無沙汰してます!島村です。
特定の条件を満たすと、gqtpで新規の接続ができなくなる問題をみつけました。
-- Debian stretch
-- Groonga 8.0.7
[linux-gnu,x86_64,utf8,match-escalation-threshold=-1,nfkc,onigmo,epoll]
-- configure options: < '--with-match-escalation-threshold=-1'
'CFLAGS=-O3 -march=native' 'CXXFLAGS=-O3 -march=native'>
## 再現方法
# groonga -n test.db
> quit
# groonga -d -p 11111 test.db
クライアントプロセスをquit等をしない状態で中断すると、それ以降はサーバーに対して新規接続ができなくなります。
# groonga -c -p 11111
> status
[[0,1539384436.904048,0.0001926422119140625],{"alloc_count":356,"starttime":1539384357,"start_time":1539384357,"uptime":79,"version":"8.0.7","n_queries":0,"cache_hit_rate":0.0,"command_version":1,"default_command_version":1,"max_command_version":3}]
> ^C
# groonga -c -p 11111
> status
↑応答しない
中断するより前に接続された他のクライアントはそのまま全ての処理が維持されます。
バックトレースではきちんとepoll_waitで待っているように見えるんですが‥
ちなみにこの問題はgroonga 7.0.2では起きなかったです。
どうぞよろしくお願いします!