Because the move and merge chunk phase has no guarantees that all small chunks will be merged, there is a possibility that there are empty chunks left in the split chunk phase (this could also happen on cancellation of defragmentation). The AutoSplitVectorCommand fails with this error when called on an empty range. Currently, the defragmentation algorithm treats this as a non-retryable error, rebuilds phase 3, and then executes the same command causing defragmentation to get stuck. We need to ignore this specific error response as though it was a success since there is no need to split an empty range.
Another possible solution would be to modify the auto split vector command to return success with no split points if a range is empty.