Re: Draft v1 Update for Resumable Uploads
Guoye Zhang <guoye_zhang@apple.com> Thu, 23 June 2022 08:22 UTC
Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7D96CC13182F for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 23 Jun 2022 01:22:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.505
X-Spam-Level:
X-Spam-Status: No, score=-3.505 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.745, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IN1LVvZoxs3v for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 23 Jun 2022 01:22:40 -0700 (PDT)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B959DC164787 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 23 Jun 2022 01:22:39 -0700 (PDT)
Received: from lists by lyra.w3.org with local (Exim 4.92) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1o4I3u-00084u-RX for ietf-http-wg-dist@listhub.w3.org; Thu, 23 Jun 2022 08:19:38 +0000
Resent-Date: Thu, 23 Jun 2022 08:19:38 +0000
Resent-Message-Id: <E1o4I3u-00084u-RX@lyra.w3.org>
Received: from titan.w3.org ([128.30.52.76]) by lyra.w3.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <guoye_zhang@apple.com>) id 1o4I3s-000840-TU for ietf-http-wg@listhub.w3.org; Thu, 23 Jun 2022 08:19:36 +0000
Received: from rn-mailsvcp-ppex-lapp45.rno.apple.com ([17.179.253.49] helo=rn-mailsvcp-ppex-lapp45.apple.com) by titan.w3.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <guoye_zhang@apple.com>) id 1o4I3r-002zVx-VR for ietf-http-wg@w3.org; Thu, 23 Jun 2022 08:19:36 +0000
Received: from pps.filterd (rn-mailsvcp-ppex-lapp45.rno.apple.com [127.0.0.1]) by rn-mailsvcp-ppex-lapp45.rno.apple.com (8.16.1.2/8.16.1.2) with SMTP id 25N8AhOB002267; Thu, 23 Jun 2022 01:19:19 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=3CoHsmeK6Tr2/vfG/cf14DH5GDg3TQR+zGkXhVTm+uM=; b=cP/sxgdUgwPApNhnHR9r6Il0pT1SomKtcsWQvDcEi4kgHoh7Jou4NvHY1jn+b1ItBlR5 J+rUsqRTdI1nKD02xwpn5R8sC+O84P9YI0ekeOKKibUEkbbA8PQ0gLiUHS6uE3fxwTe7 skxDPRLobSgpkIvkAd49FmanDgzqyq2qMm9fqgWPHpM5tQ6MpVaD859bzBJPUhKV3hZ4 La8abGkUPzDTm8tPbnOINnoG2vVdSc2IZCHqq0xTD397/N6/x+1OchiILqAKji9Z/PHk OomHUwx4Nl+faSP0AHJV1nIv25MGGRU7v5BVMqy4YXHdYEUZaUhvVOmV7+fGh9fJ8mS6 Tg==
Received: from rn-mailsvcp-mta-lapp03.rno.apple.com (rn-mailsvcp-mta-lapp03.rno.apple.com [10.225.203.151]) by rn-mailsvcp-ppex-lapp45.rno.apple.com with ESMTP id 3gsx83e0mr-8 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Thu, 23 Jun 2022 01:19:19 -0700
Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp03.rno.apple.com (Oracle Communications Messaging Server 8.1.0.18.20220407 64bit (built Apr 7 2022)) with ESMTPS id <0RDX009TX8G6XY40@rn-mailsvcp-mta-lapp03.rno.apple.com>; Thu, 23 Jun 2022 01:19:18 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.18.20220407 64bit (built Apr 7 2022)) id <0RDX00R008FYFO00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Thu, 23 Jun 2022 01:19:18 -0700 (PDT)
X-Va-A:
X-Va-T-CD: ad1c7db98facf33010cfd2d0b48e1bee
X-Va-E-CD: 7fa589823f194c8498e6df6440bddbf3
X-Va-R-CD: 87a202228b76ae5a02807a21fbbc1b7c
X-Va-CD: 0
X-Va-ID: e3b13be0-3cb0-4ec4-ab32-a9aaddebccd1
X-V-A:
X-V-T-CD: ad1c7db98facf33010cfd2d0b48e1bee
X-V-E-CD: 7fa589823f194c8498e6df6440bddbf3
X-V-R-CD: 87a202228b76ae5a02807a21fbbc1b7c
X-V-CD: 0
X-V-ID: 098a7e8a-3ee4-4017-a80f-c75df90f8eca
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-23_03:2022-06-22,2022-06-23 signatures=0
Received: from smtpclient.apple (unknown [17.11.27.233]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.18.20220407 64bit (built Apr 7 2022)) with ESMTPSA id <0RDX00L2Y8G5LI00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Thu, 23 Jun 2022 01:19:18 -0700 (PDT)
From: Guoye Zhang <guoye_zhang@apple.com>
Message-id: <2472CFBC-753A-4DD6-B25B-48C6E0F946A3@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_0CC82145-6A9E-4E87-A636-61213B2967E0"
MIME-version: 1.0 (Mac OS X Mail 16.0 \(3724.0.1.1.31\))
Date: Thu, 23 Jun 2022 01:19:07 -0700
In-reply-to: <CAAPGdfEKqBy2cybU_cazhuMpqf445dSUW4yBk8bOg2F+zw6r7g@mail.gmail.com>
Cc: Eric J Bowman <mellowmutt@zoho.com>, Julian Reschke <julian.reschke@gmx.de>, ietf-http-wg <ietf-http-wg@w3.org>
To: Greg Wilkins <gregw@webtide.com>
References: <BED5A5BC-3F7F-47E2-815E-DC0483328DFD@apple.com> <Yq67WGkb0LtJIAP9@xps13> <D149DCFE-A5C9-418D-80B4-3B5F138AA497@apple.com> <Yq/mYB6FMLWn/7Oj@xps13> <1A0308B7-266A-4E12-BC6C-6D321BAFC3D3@apple.com> <1817f68e1bc.b0da438140687.4010670760181959722@zoho.com> <E0263B0F-3C3A-46F4-AA1D-7580C5ADE326@apple.com> <d32488ea-05b3-e97f-3118-3845306faa6a@gmx.de> <181808e7a44.aed3d7b643553.5952608326455145559@zoho.com> <A00C7493-2637-4C2A-B880-EC03AD82EDF3@apple.com> <CAAPGdfEKqBy2cybU_cazhuMpqf445dSUW4yBk8bOg2F+zw6r7g@mail.gmail.com>
X-Mailer: Apple Mail (2.3724.0.1.1.31)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517,18.0.883 definitions=2022-06-23_03:2022-06-22,2022-06-23 signatures=0
Received-SPF: pass client-ip=17.179.253.49; envelope-from=guoye_zhang@apple.com; helo=rn-mailsvcp-ppex-lapp45.apple.com
X-W3C-Hub-DKIM-Status: validation passed: (address=guoye_zhang@apple.com domain=apple.com), signature is good
X-W3C-Hub-Spam-Status: No, score=-7.0
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.6, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1o4I3r-002zVx-VR 832a6d814885de59b260b0e811323eb2
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Draft v1 Update for Resumable Uploads
Archived-At: <https://www.w3.org/mid/2472CFBC-753A-4DD6-B25B-48C6E0F946A3@apple.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/40205
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
> On Jun 22, 2022, at 23:59, Greg Wilkins <gregw@webtide.com> wrote: > > > Guoye et al, > > I too agree with the sentiment that it would be good to avoid multipart with text boundaries. > > I think the current draft would have each part being sent in a separate HTTP message. I don't particularly mind that, but there are some latency concerns that the restriction on concurrent requests would introduce latency as you would need to wait for one part to be entirely complete before starting the next. > > Eitherway, thinking about this made me realize that the current draft needs to discuss intermediaries and how they might handle the multiple requests in a resumed upload. If a client is connected to a cluster with non-sticky bindings to back end servers, then a query for an offset or a resumed upload might end up on a different server within a cluster. > > So either intermediaries need to be sticky on upload-token or other steps must be taken to ensure that a resumed conversation is sticky. Yes, this has come up during our internal discussions. Currently, most applications have a global datastore that can be used to synchronize state, so any backend server the client talks to can still resume. For use cases that can’t rely on global state such as within a load balancer, it is possible to use the upload token as a routing hint. Since the token is a random blob, we can hash it and use a deterministic algorithm to assign a destination. Alternatively, the server can preemptively redirect so the upload targets a specific backend. However, redirection should be avoided if possible since it adds an extra roundtrip. I’m a client-side implementor so I don’t have very much to add other than summarizing the previous discussions. Let me know if you think it’s worth adding a paragraph to the draft. Guoye > > cheers > > > > > > > > On Thu, 23 Jun 2022 at 10:50, Guoye Zhang <guoye_zhang@apple.com <mailto:guoye_zhang@apple.com>> wrote: >> >> >>> On Jun 20, 2022, at 03:00, Eric J Bowman <mellowmutt@zoho.com <mailto:mellowmutt@zoho.com>> wrote: >>> >>> > >>> > Maybe >>> > https://www.ietf.org/archive/id/draft-ietf-httpbis-binary-message-05.html could >>> > be used; that would avoid the multipart parsing challenge. >>> > >>> >>> Ha, like I needed another hobby project from this thread! I get what you're saying, thx Julian. Section 3.8, Padding and Truncation -- message/bhttp as a general-purpose PATCH format for BLOBs. >>> >>> -Eric >>> >>> >> >> I’ll admit that I was confused by this exchange. I know binary message from oblivious HTTP, but I think Julian was suggesting replacing multipart part boundaries with binary message, not using it as the PATCH format. Let me explain what I understood from this discussion, please correct me if I’m wrong: >> >> (1) My initial blocker for adopting Content-Range was that we needed a open range: >> >> :method: PATCH >> upload-offset: 42 >> >> [Dynamically generated body with unknown length] >> >> This is unrepresentable by Content-Range. >> >> (2) Eric suggested multipart body with Content-Range, essentially: >> >> :method: PATCH >> content-type: multipart/sometime; boundary=“boundary" >> >> --boundary >> Content-Range: 42-50/* >> >> [8 bytes] >> --boundary >> Content-Range: 51-60/* >> >> [10 bytes] >> --boundary >> … >> >> (3) I expressed concerns about multipart overhead. >> >> (4) Julian suggested using binary message to serialize messages more efficiently, replacing plaintext headers and textual boundaries with the binary serialization format. >> >> (5) Eric suggested using binary message itself as the PATCH format to represent arbitrary binary diff. >> >> My reply to (4): If we need to invent a new format anyway, I’d avoid multipart since we don’t really need it for appending a continuous blob. >> >> My reply to (5): I don’t think this is what binary message is for, but I’m really curious what you were able to achieve with this idea. Having a general-purpose binary patching format would be great. >> >> Guoye > > > -- > Greg Wilkins <gregw@webtide.com <mailto:gregw@webtide.com>> CTO http://webtide.com <http://webtide.com/>
- Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Austin William Wright
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Martin J. Dürst
- Re: Draft v1 Update for Resumable Uploads gs-lists-ietf-http-wg
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Lucas Pardue
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Glenn Strauss
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Lucas Pardue
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Glenn Strauss
- Re: Draft v1 Update for Resumable Uploads Glenn Strauss
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Glenn Strauss
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Mark Nottingham
- Re: Draft v1 Update for Resumable Uploads Glenn Strauss
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Julian Reschke
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Julian Reschke
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Julian Reschke
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Eric J Bowman
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Greg Wilkins
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Greg Wilkins
- Re: Draft v1 Update for Resumable Uploads Poul-Henning Kamp
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang
- Re: Draft v1 Update for Resumable Uploads Greg Wilkins
- Re: Draft v1 Update for Resumable Uploads Guoye Zhang