Re: [Extra] Working Group Last Call - draft-ietf-extra-imap-fetch-preview-08

Alexey Melnikov <alexey.melnikov@isode.com> Tue, 07 July 2020 08:31 UTC

Return-Path: <alexey.melnikov@isode.com>
X-Original-To: extra@ietfa.amsl.com
Delivered-To: extra@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B5E7E3A07C3 for <extra@ietfa.amsl.com>; Tue, 7 Jul 2020 01:31:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=isode.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nNw9iz3PB2NT for <extra@ietfa.amsl.com>; Tue, 7 Jul 2020 01:31:13 -0700 (PDT)
Received: from statler.isode.com (Statler.isode.com [62.232.206.189]) by ietfa.amsl.com (Postfix) with ESMTP id BBCE23A07E2 for <extra@ietf.org>; Tue, 7 Jul 2020 01:31:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1594110671; d=isode.com; s=june2016; i=@isode.com; bh=nOBqBFwOV3U10Y8uQ3sVkScbH90QyKc4MmTZ6uVD11I=; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version: In-Reply-To:References:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description; b=QbQlwhnQkJYsobK2HlHQidh7OdL/szCwogQjck2xxSRMSf7oPkCMPipxz/SDl9rTMZiR9z GKRlhuaHcOL1XvEeTR406Q9RWrMQKYRWeGGjATgGsz6FwS4Y9/OikGVpqlZ1RTufpOAae3 Oe2SJmf41Ipcp2DoPWtWlgQYJYrmTR0=;
Received: from [192.168.1.222] (host81-151-37-172.range81-151.btcentralplus.com [81.151.37.172]) by statler.isode.com (submission channel) via TCP with ESMTPSA id <XwQyzAAFT2bv@statler.isode.com>; Tue, 7 Jul 2020 09:31:10 +0100
To: Bron Gondwana <brong@fastmailteam.com>, extra@ietf.org
References: <c4da8962-ec81-4ee5-b2e1-258d5b247770@dogfood.fastmail.com> <E7CA280C-D1B9-4BE7-8109-E070CF742623@sirainen.com> <1948688035.19548.1594092129291@appsuite.open-xchange.com> <0cbbf363-2652-40a7-baad-e0d7e38037e8@dogfood.fastmail.com>
From: Alexey Melnikov <alexey.melnikov@isode.com>
Message-ID: <01948a8c-3879-b47a-dfc6-a46f8a0cdf6d@isode.com>
Date: Tue, 07 Jul 2020 09:30:55 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0
In-Reply-To: <0cbbf363-2652-40a7-baad-e0d7e38037e8@dogfood.fastmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------401223FF3C51DD2652950B48"
Content-Language: en-GB
Archived-At: <https://mailarchive.ietf.org/arch/msg/extra/_kL5JlbPDDOIh-RjdfdAJlO2RXw>
Subject: Re: [Extra] Working Group Last Call - draft-ietf-extra-imap-fetch-preview-08
X-BeenThere: extra@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email mailstore and eXtensions To Revise or Amend <extra.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/extra>, <mailto:extra-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/extra/>
List-Post: <mailto:extra@ietf.org>
List-Help: <mailto:extra-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/extra>, <mailto:extra-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 07 Jul 2020 08:31:15 -0000

On 07/07/2020 05:38, Bron Gondwana wrote:

> On Tue, Jul 7, 2020, at 13:22, Michael Slusarz wrote:
>>> On 07/02/2020 3:20 AM Timo Sirainen <timo@sirainen.com> wrote:
>>>
>>>
>>> On 2. Jul 2020, at 4..56, Bron Gondwana < brong@fastmailteam.com 
>>> <mailto:brong@fastmailteam.com>> wrote:
>>>
>>>> As discussed in the interim meeting, this document was brought back 
>>>> to the working group to be reverted to an earlier and simpler version.
>>>>
>>>> This email announces a 2 week working group last call for any 
>>>> further comments on this version before I re-submit to IESG for 
>>>> publication.  Please reply with any comments by Thursday, July 16th 
>>>> 2020.  Let's get this one off our plates before IETF108.
>>>
>>>    It is possible that preview text is not available now, but might be
>>>    available later -- perhaps the server's preview-generating resources
>>>    are overloaded, there is a server-imposed timeout during preview
>>>    generation, or there is some transient issue with fetching the
>>>    message body.  In such cases, the server will return NIL as the
>>>    preview response, and the client can try to retrieve the preview
>>>    later.
>>> This sounds like it's possible for server to return NIL even when 
>>> the LAZY modifier isn't specified. Is this really wanted? I'd think 
>>> client developers would prefer that only LAZY can return NILs. 
>>> Either way, it's not clearly enough specified what is intended.
>> I was originally going to agree with Timo ... but then I remember we 
>> added this part as a direct response to a potential DoS situation - 
>> what happens if preview requests are (subjectively) taking too much time.
>>
>> If a server can't produce a preview within a certain time threshold, 
>> it should somehow be able to abort the request. NIL might not be the 
>> best solution, but what if it empty string ("") is returned?  Then a 
>> caching client may never have preview text for that message, even 
>> though the inability to return the text may be a temporary issue.
>>
>> LAZY means a server should return preview only if it is pre-generated 
>> (or can be generated without noticeable delay to user).  non-LAZY 
>> request should return PREVIEW unless it exceeds some sort of 
>> server-defined timeout.  But in the latter case - unless the server 
>> knows it can never create a PREVIEW, it does seem that NIL is the 
>> semantically correct response, at least given the current 
>> definitions.  Empty string means the server has canonically decided 
>> that no reasonable preview can be generated..
>>
>> Another suggestion might be to return NO response to the FETCH ... 
>> but semantics of that are a little tortured if the rest of the FETCH 
>> request could be returned, or if preview can be returned for all but 
>> one of the messages requested in the FETCH.
>>
>> In the IMAP spec we have: "The LIST command SHOULD return its data 
>> quickly, without undue delay."  Maybe adopt this language and leave 
>> it to server to figure out what is "undue delay?"  But that doesn't 
>> address whether empty string or NIL is the correct response if undue 
>> delay is reached...
>
> I'm good with the server returning a NO to the whole fetch with text 
> like "preview generation took too long, try again with LAZY".  I mean 
> - the Cyrus server does something like that with SEARCH results that 
> take too long these days - it'll just tell you "NO try again with a 
> less expensive search" if it takes over 30s with our config.  I expect 
> we'd do the same with FETCH - send a NO (possibly part way through the 
> fetch results) if we hit this kind of error.

I think returning NO to FETCH is problematic and will cause problems 
with clients as they don't expect it. Untagged NO might be slightly better.

> Maybe some client advice:
>
> 1) make the initial fetch with PREVIEW (LAZY) and the other fields you 
> care about.
> 2) for items that got a NIL response, batch request non-lazy PREVIEW 
> in sensible-sized batches (e.g. 64 at a time)

These recommendations are good.