Re: WGLC: p1 MUST NOT pipeline until connection is persistent

Alex Rousskov <rousskov@measurement-factory.com> Tue, 30 April 2013 23:23 UTC

Return-Path: <ietf-http-wg-request@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 45A8921F8415 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 30 Apr 2013 16:23:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.499
X-Spam-Level:
X-Spam-Status: No, score=-10.499 tagged_above=-999 required=5 tests=[AWL=0.100, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WbkOhz147Voc for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 30 Apr 2013 16:23:38 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id C5A9521F8411 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 30 Apr 2013 16:23:38 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UXJtI-0002tW-UC for ietf-http-wg-dist@listhub.w3.org; Tue, 30 Apr 2013 23:23:20 +0000
Resent-Date: Tue, 30 Apr 2013 23:23:20 +0000
Resent-Message-Id: <E1UXJtI-0002tW-UC@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <rousskov@measurement-factory.com>) id 1UXJt8-0002rs-Lk for ietf-http-wg@listhub.w3.org; Tue, 30 Apr 2013 23:23:10 +0000
Received: from measurement-factory.com ([209.169.10.130]) by lisa.w3.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from <rousskov@measurement-factory.com>) id 1UXJt8-00075i-4M for ietf-http-wg@w3.org; Tue, 30 Apr 2013 23:23:10 +0000
Received: from [127.0.0.1] (localhost [127.0.0.1]) (authenticated bits=0) by measurement-factory.com (8.14.3/8.14.3) with ESMTP id r3UNMlPu044646 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <ietf-http-wg@w3.org>; Tue, 30 Apr 2013 17:22:48 -0600 (MDT) (envelope-from rousskov@measurement-factory.com)
Message-ID: <5180523F.8020103@measurement-factory.com>
Date: Tue, 30 Apr 2013 17:22:39 -0600
From: Alex Rousskov <rousskov@measurement-factory.com>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130329 Thunderbird/17.0.5
MIME-Version: 1.0
To: IETF HTTP WG <ietf-http-wg@w3.org>
References: <D69329FD-7456-46C5-BE24-6E7EE7E48C39@mnot.net> <5180137E.2040603@measurement-factory.com> <20130430194016.GM22605@1wt.eu>
In-Reply-To: <20130430194016.GM22605@1wt.eu>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Received-SPF: pass client-ip=209.169.10.130; envelope-from=rousskov@measurement-factory.com; helo=measurement-factory.com
X-W3C-Hub-Spam-Status: No, score=-2.5
X-W3C-Hub-Spam-Report: RP_MATCHES_RCVD=-2.509, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UXJt8-00075i-4M 57f2288785b5f7af7e18d60443a426a6
X-Original-To: ietf-http-wg@w3.org
Subject: Re: WGLC: p1 MUST NOT pipeline until connection is persistent
Archived-At: <http://www.w3.org/mid/5180523F.8020103@measurement-factory.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17737
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: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On 04/30/2013 01:40 PM, Willy Tarreau wrote:

>>> A client [...] MUST NOT pipeline on a retry connection until it
>>> knows the connection is persistent.

>> Is it really possible to know that a connection _is_ persistent?

> Well, it's by definition until a "connection: close" response is seen.

You are right. My complains about not being able to know whether a
connection is persistent were invalid because the rules in "p1 6.3
Persistence" determine whether the connection is considered persistent.
However, there are two related problems with those rules:

a) They do not apply to connections on which no responses have been
received.

b) They do not mention that a persistent connection may close without
warning at any time.

Let's start with (a): To know that a connection "is persistent", the
client has to receive a response on that connection. This implies that
the client MUST NOT retry a failed pipelined request on a connection it
just opened. What if there are no other connections and not other
requests to send, except for the failed one? Is the proxy going to be
stuck because it is not allowed to use a new connection to retry the
failed pipeline request?

To fix this, I think we have to add a rule that declares a freshly
opened, unused connection "persistent" OR allow retries on such
connections without declaring them persistent.


As for (b), depending on the intent of this MIST NOT, it may be useful
to discourage developers from using connections that were idle for a
long time for retries because those connections are more likely to fail
when [re]used.


Thank you,

Alex.