**Describe the bug**
Using `ALTER LIVE VIEW view REFRESH` results in an exception.

**How to reproduce**
* Connected to ClickHouse server version 20.8.1 revision 54438
* `CREATE TABLE` statements for all tables involved
```
clicktest :) SHOW CREATE table0

SHOW CREATE TABLE table0

┌─statement─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.table0
(
    `d` Date,
    `a` String,
    `b` UInt8,
    `x` String,
    `y` Int8
)
ENGINE = MergeTree()
ORDER BY d
SETTINGS index_granularity = 8192 │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

1 rows in set. Elapsed: 0.006 sec.
```
* Queries to run that lead to unexpected result
```
ClickHouse client version 20.8.1.4447 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.8.1 revision 54438.

clicktest :) SET allow_experimental_live_view=1

SET allow_experimental_live_view = 1

Ok.

0 rows in set. Elapsed: 0.003 sec.

clicktest :) CREATE LIVE VIEW live1 AS SELECT * FROM table0

CREATE LIVE VIEW live1 AS
SELECT *
FROM table0

Ok.

0 rows in set. Elapsed: 0.008 sec.

clicktest :) ALTER LIVE VIEW live1 REFRESH

ALTER LIVE VIEW live1
    REFRESH

Received exception from server (version 20.8.1):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: RWLockImpl::getLock(): RWLock is already locked in exclusive mode.

0 rows in set. Elapsed: 0.005 sec.
```
**Expected behavior**
A clear and concise description of what you expected to happen.


mergeable_blocks = live_view.collectMergeableBlocks(context);
            live_view.setMergeableBlocks(mergeable_blocks);
            from = live_view.blocksToPipes(mergeable_blocks->blocks, mergeable_blocks->sample_block);
            is_block_processed = true;
        }
    }
    if (!is_block_processed)
    {
        ASTPtr mergeable_query = live_view.getInnerQuery();
        if (live_view.getInnerSubQuery())
            mergeable_query = live_view.getInnerSubQuery();
        Pipes pipes;
        pipes.emplace_back(std::make_shared<SourceFromSingleChunk>(block.cloneEmpty(), Chunk(block.getColumns(), block.rows())));
        auto creator = [&](const StorageID & blocks_id_global)
        {
            auto parent_metadata = live_view.getParentStorage()->getInMemoryMetadataPtr();
            return StorageBlocks::createStorage(
                blocks_id_global, parent_metadata->getColumns(),
                std::move(pipes), QueryProcessingStage::FetchColumns);
        };
        TemporaryTableHolder blocks_storage(context, creator);
        InterpreterSelectQuery select_block(mergeable_query, context, blocks_storage.getTable(), blocks_storage.getTable()->getInMemoryMetadataPtr(),
            QueryProcessingStage::WithMergeableState);
        auto data_mergeable_stream = std::make_shared<MaterializingBlockInputStream>(
            select_block.execute().getInputStream());
        while (Block this_block = data_mergeable_stream->read())
            new_mergeable_blocks->push_back(this_block);
        if (new_mergeable_blocks->empty())
            return;
        {