Symptoms: all threads in BackgroundScheduledPool busy, lot of tasks in replication queue, none of the tasks is executing. 

![Screenshot from 2021-04-16 16-21-44_](https://user-images.githubusercontent.com/1549571/115193796-e767d600-a0ec-11eb-887c-5c9c2412e50c.png)

Related to #16895

Possible workarounds (poor options): increasing the background_schedule_pool_size to huge values, or restart server every time when that happens etc. - 

void cloneMetadataIfNeeded(const String & source_replica, const String & source_path, zkutil::ZooKeeperPtr & zookeeper);
    
    void cloneReplicaIfNeeded(zkutil::ZooKeeperPtr zookeeper);
    ReplicatedMergeTreeQueue::SelectedEntryPtr selectQueueEntry();
    bool processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr entry);
    
    
    
    void enterLeaderElection();
    
    
    
    void exitLeaderElection();
    /** Selects the parts to merge and writes to the log.
      */
    void mergeSelectingTask();
    
    void mutationsFinalizingTask();
    /** Write the selected parts to merge into the log,
      * Call when merge_selecting_mutex is locked.
      * Returns false if any part is not in ZK.
      */
    enum class CreateMergeEntryResult { Ok, MissingPart, LogUpdated, Other };
    CreateMergeEntryResult createLogEntryToMergeParts(
        zkutil::ZooKeeperPtr & zookeeper,
        const DataPartsVector & parts,
        const String & merged_name,
        const UUID & merged_part_uuid,
        const MergeTreeDataPartType & merged_part_type,