**Describe the bug**
Vertical merges seems to be fed with a granule bigger by 1 rows than granularity size, and fails with the following error : 
```
2021.04.20 09:59:56.027482 [ 10195 ] {} <Error> database.table_local (813d322c-c51c-47f4-baa7-6c0b90bbab9e): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 49, e.displayText() = DB::Exception: Incomplete granules are not allowed while blocks are granules size. Mark number 4665 (rows 4096), rows written in last mark 0, rows to write in last mark from block 1 (from row 4096), total marks currently 4666, Stack trace (when copying this message, always include the lines below):#012#0120. DB::Exception::Exception<unsigned long&, unsigned long, unsigned long&, unsigned long&, unsigned long&, unsigned long>(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long&, unsigned long&&, unsigned long&, unsigned long&, unsigned long&, unsigned long&&) @ 0xfa5c975 in /usr/bin/clickhouse#0121. DB::MergeTreeDataPartWriterWide::shiftCurrentMark(std::__1::vector<DB::Granule, std::__1::allocator<DB::Granule> > const&) @ 0xfa5c863 in /usr/bin/clickhouse#0122. DB::MergeTreeDataPartWriterWide::write(DB::Block const&, DB::PODArray<unsigned long, 4096ul, Allocator<false, false>, 15ul, 16ul> const*) @ 0xfa5d31f in /usr/bin/clickhouse#0123. DB::MergeTreeDataMergerMutator::mergePartsToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, long, DB::Context const&, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) @ 0xfa153c9 in /usr/bin/clickhouse#0124. DB::StorageReplicatedMergeTree::tryExecuteMerge(DB::ReplicatedMergeTreeLogEntry const&) @ 0xf7d6917 in /usr/bin/clickhouse#0125. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0xf7cb862 in /usr/bin/clickhouse#0126. ? @ 0xf83cd7f in /usr/bin/clickhouse#0127. DB::ReplicatedMergeTreeQueue::processEntry(std::__1::function<std::__1::shared_ptr<zkutil::ZooKeeper> ()>, std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::__1::function<bool (std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>) @ 0xfb7d0f8 in /usr/bin/clickhouse#0128. DB::StorageReplicatedMergeTree::processQueueEntry(std::__1::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>) @ 0xf7f514d in /usr/bin/clickhouse#0129. ? @ 0xf963667 in /usr/bin/clickhouse#01210. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x89916ff in /usr/bin/clickhouse#01211. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() @ 0x899367f in /usr/bin/clickhouse#01212. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x898edef in /usr/bin/clickhouse#01213. ? @ 0x8992733 in /usr/bin/clickhouse#01214. start_thread @ 0x7fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so#01215. clone @ 0xf94cf in /usr/lib/x86_64-linux-gnu/libc-2.28.so#012 (version 21.3.4.25)
``` 

The table engine is ReplicatedReplacingMergeTree
with  SETTINGS storage_policy = 'jbod_policy_1', index_granularity = 4096, merge_max_block_size = 4096, index_granularity_bytes = 41943040 

The error is clearly deterministic, and will fail to merge in a loop. 
**Does it reproduce on recent release?**
21.3.4.25 

The merge information : 
``` elapsed:                     32.740309772
progress:                    0.17199233946890857
num_parts:                   6
source_part_names:           ['31_975_975_0','31_976_976_0','31_977_977_0','31_978_978_0','31_979_979_0','31_980_980_0']
result_part_name:            31_975_980_1
source_part_paths:           ['/disk13/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_975_975_0/','/disk7/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_976_976_0/','/disk4/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_977_977_0/','/disk5/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_978_978_0/','/disk15/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_979_979_0/','/disk10/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_980_980_0/']
result_part_path:            /disk5/clickhouse/store/813/813d322c-c51c-47f4-baa7-6c0b90bbab9e/31_975_980_1/
partition_id:                31
is_mutation:                 0
total_size_bytes_compressed: 1286881212
total_size_marks:            4672
bytes_read_uncompressed:     1955818184
rows_read:                   8898560
bytes_written_uncompressed:  1947119248
rows_written:                8857600
columns_written:             0
memory_usage:                79808173
thread_id:                   9976
merge_type:                  REGULAR
merge_algorithm:             Vertical
``` 
{
    
    while (queue.isValid())
    {
        SortCursor current = queue.current();
        if (current->isLast() && skipLastRowFor(current->order))
        {
            
            queue.removeTop();
            return Status(current.impl->order);
        }
        RowRef current_row;
        setRowRef(current_row, current);
        bool key_differs = selected_row.empty() || !current_row.hasEqualSortColumnsWith(selected_row);
        if (key_differs)
        {
            
            if (merged_data.hasEnoughRows())
                return Status(merged_data.pull());
            
            if (!selected_row.empty())
                insertRow();
            selected_row.clear();
        }
        
        size_t current_pos = current_row_sources.size();
        if (out_row_sources_buf)