row_cache: Fix potential timeout or deadlock due to sstable read concurrency limit
row_cache: Fix potential timeout or deadlock due to sstable read concurrency limit

database::make_sstable_reader() creates a reader which will need to
obtain a semaphore permit when invoked. Therefore, each read may
create at most one such reader in order to be guaranteed to make
progress. If the reader tries to create another reader, that may
deadlock (or for non-system tables, timeout), if enough number of such
readers tries to do the same thing at the same time.

Avoid the problem by dropping previous reader before creating a new
one.

Refs #2644.

Message-Id: <35329919feabc1bb063ed317d676d3b564249760@scylladb.com>

avikivity/scylla,duarten/scylla,avikivity/scylla,scylladb/scylla,duarten/scylla,scylladb/scylla,scylladb/scylla,duarten/scylla,avikivity/scylla,scylladb/scylla