`TRIGGER backup` answered `ERR internal_error` in two common cases:
- a KV store was open in the pool (e.g. right after a `PUSH`): the backup
opened the database a second time, which RocksDB refuses as its `LOCK`
file is held. The pooled store is now backed up instead, after a flush.
- the KV or FST store directory did not exist yet (nothing ingested, or
nothing consolidated yet): listing it failed. There is nothing to back up
in that case.
Also enable the `trigger_backup` test, which covers both cases.
Fixes#274
Values longer than 128 bytes or with non-ASCII characters are rejected by
`StoreItemPart::from_str` with `ERR invalid_argument(...)`, but the
protocol did not say so.
Closes#319
A read timeout or an abrupt client hang-up unwound the channel thread,
which flooded the logs with "closing channel" panics and skipped the
connected clients counter decrement, leaking a client slot each time.
Fixes#256