
**Describe the bug**
While using quorum replication, one of shards was found in a state when quorum was not being achieved because 3 replicas out of 4 were reporting the same error:
```
"Directory tmp_fetch_XXX already exists."
```

 which is thrown here: https://github.com/ClickHouse/ClickHouse/blob/master/src/Storages/MergeTree/DataPartsExchange.cpp#L340

After manually removing this temp folder on one of the replicas the replica has successfully downloaded the missing part and has caught up.

Looking at the code closely, once this temp dir is created there seems to be no code path that would remove it.
In several other places in the same function, there is 
```
disk->removeRecursive(part_download_path);
throw ...
```
kind of code that clears up the temp opening up a path for successful retry. But in the case above retries will fail forever.

uri,
        Poco::Net::HTTPRequest::HTTP_POST,
        {},
        timeouts,
        creds,
        DBMS_DEFAULT_BUFFER_SIZE,
        0, 
        data_settings->replicated_max_parallel_fetches_for_host
    };
    int server_protocol_version = parse<int>(in.getResponseCookie("server_protocol_version", "0"));
    int send_s3 = parse<int>(in.getResponseCookie("send_s3_metadata", "0"));
    if (send_s3 == 1)
    {
        if (server_protocol_version < REPLICATION_PROTOCOL_VERSION_WITH_PARTS_S3_COPY)
            throw Exception("Got 'send_s3_metadata' cookie with old protocol version", ErrorCodes::LOGICAL_ERROR);
        if (!try_use_s3_copy)
            throw Exception("Got 'send_s3_metadata' cookie when was not requested", ErrorCodes::LOGICAL_ERROR);
        size_t sum_files_size = 0;
        readBinary(sum_files_size, in);
        IMergeTreeDataPart::TTLInfos ttl_infos;
        
        String ttl_infos_string;
        readBinary(ttl_infos_string, in);
        String part_type = "Wide";
        readStringBinary(part_type, in);
        if (part_type == "InMemory")
            throw Exception("Got 'send_s3_metadata' cookie for in-memory part", ErrorCodes::INCORRECT_PART_TYPE);
        UUID part_uuid = UUIDHelpers::Nil;
        if (server_protocol_version >= REPLICATION_PROTOCOL_VERSION_WITH_PARTS_UUID)
            readUUIDText(part_uuid, in);