When I tried to create a distributed table with empty cluster '', the create statement failed with exception "Code: 170. DB::Exception: Received from localhost:9000. DB::Exception: Requested cluster '' not found.". However, show tables can see the WRONG table.
Later when CH restarted, unable to start due to unable to attach this wrong table.

The question is: When we try to startup the new created table during creation, if error happens, this new table should be dropped? OR we should add some special check on the cluster for Distributed engine to avoid this kind of error? OR we can just ignore this error during start up to allow CK server to start, not failed?

CH version: 21.7.3.14 (official build).
How to reproduce:
1. Create wrong table:
    create table t_empty(a int) engine=Distributed('','','');
2. Force CH to restart, and check the status
service clickhouse-server forcerestart
service clickhouse-server status
Now there is no clickhouse-server process.

**##### output ###** 
node236 :) create table t_empty(a int) engine=Distributed('','','');

CREATE TABLE t_empty
(
    `a` int
)
ENGINE = Distributed('', '', '')

Query id: c9eb24ea-f87d-4431-9bdc-18d21fbb5636


0 rows in set. Elapsed: 0.054 sec.

Received exception from server (version 21.7.3):
**Code: 170. DB::Exception: Received from localhost:9000. DB::Exception: Requested cluster '' not found.**

node236 :) show tables;

SHOW TABLES

Query id: 0d9e2398-26c5-46eb-baf2-a02111bc770e

┌─name────┐
│ people  │
│ **t_empty** │
└─────────┘

2 rows in set. Elapsed: 0.001 sec.

node236 :) show create table t_empty;

SHOW CREATE TABLE t_empty

Query id: 8c489c90-dfe0-4392-9742-17a43a075c12

┌─statement───────────────────────────────────────────────────────────────────┐
│ CREATE TABLE default.t_empty
(
    `a` Int32
)
ENGINE = **Distributed('', '', '')** │
└─────────────────────────────────────────────────────────────────────────────┘

==== clickhouse-server.err.log ===
### backtrace for DDL ###
2021.08.19 12:12:03.150990 [ 19900 ] {c9eb24ea-f87d-4431-9bdc-18d21fbb5636} <Error> TCPHandler: Code: 170, e.displayText() = DB::Exception: Requested cluster '' n
ot found, Stack trace:

0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8d31b5a in /usr/bin/click
house
1. DB::Context::getCluster(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const @ 0xf73b378 in /usr/bin/clickhouse
2. DB::StorageDistributed::getCluster() const @ 0x100081f7 in /usr/bin/clickhouse
3. DB::StorageDistributed::startup() @ 0x1000e5b2 in /usr/bin/clickhouse
4. DB::InterpreterCreateQuery::doCreateTable(DB::ASTCreateQuery&, DB::InterpreterCreateQuery::TableProperties const&) @ 0xf875226 in /usr/bin/clickhouse
5. DB::InterpreterCreateQuery::createTable(DB::ASTCreateQuery&) @ 0xf8711e3 in /usr/bin/clickhouse
6. DB::InterpreterCreateQuery::execute() @ 0xf87735c in /usr/bin/clickhouse
7. ? @ 0xfe22253 in /usr/bin/clickhouse
8. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::Context>, bool, DB::Que
ryProcessingStage::Enum, bool) @ 0xfe208e3 in /usr/bin/clickhouse
9. DB::TCPHandler::runImpl() @ 0x1069f6c2 in /usr/bin/clickhouse
10. DB::TCPHandler::run() @ 0x106b25d9 in /usr/bin/clickhouse
11. Poco::Net::TCPServerConnection::start() @ 0x1338b30f in /usr/bin/clickhouse
12. Poco::Net::TCPServerDispatcher::run() @ 0x1338cd9a in /usr/bin/clickhouse
13. Poco::PooledThread::run() @ 0x134bfc19 in /usr/bin/clickhouse
14. Poco::ThreadImpl::runnableEntry(void*) @ 0x134bbeaa in /usr/bin/clickhouse
15. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
16. __clone @ 0xfe9fd in /usr/lib64/libc-2.17.so

### backtrace for start up of CH ### 
2021.08.19 12:22:47.254734 [ 25174 ] {} <Error> Application: Caught exception while loading metadata: Code: 170, e.displayText() = DB::Exception: Requested cluster '' not found: while loading database `default` from path /var/lib/clickhouse/metadata/default, Stack trace (when copying this message, always include the lines below):

0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8d31b5a in /usr/bin/clickhouse
1. DB::Context::getCluster(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const @ 0xf73b378 in /usr/bin/clickhouse
2. DB::StorageDistributed::getCluster() const @ 0x100081f7 in /usr/bin/clickhouse
3. DB::StorageDistributed::startup() @ 0x1000e5b2 in /usr/bin/clickhouse
4. ? @ 0xf646a3b in /usr/bin/clickhouse
5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8d75738 in /usr/bin/clickhouse
6. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x8d772df in /usr/bin/clickhouse
7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8d72a1f in /usr/bin/clickhouse
8. ? @ 0x8d76303 in /usr/bin/clickhouse
9. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
10. __clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
 (version 21.7.3.14 (official build))
2021.08.19 12:22:48.260957 [ 25174 ] {} <Error> Application: DB::Exception: Requested cluster '' not found: while loading database `default` from path /var/lib/clickhouse/metadata/default


mutable std::optional<BackgroundSchedulePool> distributed_schedule_pool; 
    mutable std::optional<BackgroundSchedulePool> message_broker_schedule_pool; 
    mutable ThrottlerPtr replicated_fetches_throttler; 
    mutable ThrottlerPtr replicated_sends_throttler; 
    MultiVersion<Macros> macros;                            
    std::unique_ptr<DDLWorker> ddl_worker;                  
    
    mutable std::unique_ptr<CompressionCodecSelector> compression_codec_selector;
    
    mutable std::shared_ptr<const DiskSelector> merge_tree_disk_selector;
    
    mutable std::shared_ptr<const StoragePolicySelector> merge_tree_storage_policy_selector;
    std::optional<MergeTreeSettings> merge_tree_settings;   
    std::optional<MergeTreeSettings> replicated_merge_tree_settings;   
    std::atomic_size_t max_table_size_to_drop = 50000000000lu; 
    std::atomic_size_t max_partition_size_to_drop = 50000000000lu; 
    String format_schema_path;                              
    ActionLocksManagerPtr action_locks_manager;             
    std::unique_ptr<SystemLogs> system_logs;                
    std::optional<StorageS3Settings> storage_s3_settings;   
    std::vector<String> warnings;                           
    RemoteHostFilter remote_host_filter; 
    std::optional<TraceCollector> trace_collector;        
    
    
    std::shared_ptr<Clusters> clusters;
    ConfigurationPtr clusters_config;                        
    mutable std::mutex clusters_mutex;                       
    bool shutdown_called = false;
    Stopwatch uptime_watch;