**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.


std::lock_guard lock(live_view.mutex);
            mergeable_blocks = live_view.getMergeableBlocks();
            mergeable_blocks->blocks->push_back(new_mergeable_blocks);
            from = live_view.blocksToPipes(mergeable_blocks->blocks, mergeable_blocks->sample_block);
        }
    }
    BlockInputStreamPtr data = live_view.completeQuery(std::move(from));
    copyData(*data, *output);
}
StorageLiveView::StorageLiveView(
    const StorageID & table_id_,
    Context & local_context,
    const ASTCreateQuery & query,
    const ColumnsDescription & columns_)
    : IStorage(table_id_)
    , global_context(local_context.getGlobalContext())
{
    live_view_context = std::make_unique<Context>(global_context);
    live_view_context->makeQueryContext();
    StorageInMemoryMetadata storage_metadata;
    storage_metadata.setColumns(columns_);
    setInMemoryMetadata(storage_metadata);
    if (!query.select)
        throw Exception("SELECT query is not specified for " + getName(), ErrorCodes::INCORRECT_QUERY);
    
    if (query.select->list_of_selects->children.size() != 1)
        throw Exception("UNION is not supported for LIVE VIEW", ErrorCodes::QUERY_IS_NOT_SUPPORTED_IN_LIVE_VIEW);
    inner_query = query.select->list_of_selects->children.at(0);
    auto inner_query_tmp = inner_query->clone();
    select_table_id = extractDependentTable(inner_query_tmp, global_context, table_id_.table_name, inner_subquery);