Re: [nfsv4] persistent sessions and compound atomicity

bfields@fieldses.org Wed, 09 December 2020 14:49 UTC

Return-Path: <bfields@fieldses.org>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 777923A0D94 for <nfsv4@ietfa.amsl.com>; Wed, 9 Dec 2020 06:49:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 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, 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=fieldses.org
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 mBZifzJvqzTF for <nfsv4@ietfa.amsl.com>; Wed, 9 Dec 2020 06:49:29 -0800 (PST)
Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 4D1E73A0D93 for <nfsv4@ietf.org>; Wed, 9 Dec 2020 06:49:29 -0800 (PST)
Received: by fieldses.org (Postfix, from userid 2815) id 98F616F4A; Wed, 9 Dec 2020 09:49:27 -0500 (EST)
DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org 98F616F4A
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fieldses.org; s=default; t=1607525367; bh=cUWmJeJgS4+RRnH2eDmzxYxGI9rm81RVRGW0zOuh2g8=; h=Date:To:Cc:Subject:References:In-Reply-To:From:From; b=mV4IDLkuLbps7HVAajHvOABZnzxd/EDTPeX5t6GZ6UiMpm/+mtQKAf+vX7sE6ezCu lqsgvZxXH7P15tw6f4vpI7jUuXiIssaGi56XpGkYBzQKwrInyVHxJhHRNP0ssTn02L 04v8Mqnh78Zi+ec7ycOeUDh8JzctZ0YHS9prQAQ4=
Date: Wed, 09 Dec 2020 09:49:27 -0500
To: Tom Talpey <tom@talpey.com>
Cc: nfsv4@ietf.org
Message-ID: <20201209144927.GB23889@fieldses.org>
References: <20201209002639.GC16661@fieldses.org> <93d4e52e-23e6-cf5f-4b0f-50060f4c6151@talpey.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <93d4e52e-23e6-cf5f-4b0f-50060f4c6151@talpey.com>
User-Agent: Mutt/1.5.21 (2010-09-15)
From: bfields@fieldses.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/ZqBVa8wsvbtxFZkox-q8FxlLmi4>
Subject: Re: [nfsv4] persistent sessions and compound atomicity
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 09 Dec 2020 14:49:32 -0000

On Wed, Dec 09, 2020 at 08:55:03AM -0500, Tom Talpey wrote:
> On 12/8/2020 7:26 PM, J. Bruce Fields wrote:
> >I hadn't given much thought to this language in RFC 5661, and now that I
> >do, it surprises me.  If you have any pointers to discussion I forgot or
> >overlooked, I'd be interested:
> >
> >	https://tools.ietf.org/html/rfc5661#section-2.10.6.5
> >
> >	The execution of the sequence of operations (starting with
> >	SEQUENCE) and placement of its results in the persistent cache
> >	MUST be atomic.  If a client retries a sequence of operations
> >	that was previously executed on the server, the only acceptable
> >	outcomes are either the original cached reply or an indication
> >	that the client ID or session has been lost (indicating a
> >	catastrophic loss of the reply cache or a session that has been
> >	deleted because the client failed to use the session for an
> >	extended period of time).
> >
> >	A server could fail and restart in the middle of a COMPOUND
> >	procedure that contains one or more non-idempotent or
> >	idempotent-but-modifying operations. This creates an even higher
> >	challenge for atomic execution and placement of results in the
> >	reply cache....
> >
> >And I don't see why that MUST is necessary.  Why can't the server, on
> >encountering a nonidempotent operation, store partial compound results
> >in its reply cache together with whatever compound state (current
> >filehandles, etc.) it needs to resume processing on restart?
> 
> I think the atomicity is referring to the building of the response,
> not the execution of the COMPOUND itself (which would be impossible,
> generally).
> 
> The main issue it's protecting is the server's response never changing.
> The operation must always have one result. If the client were to replay
> a request while the server is still executing the compound, and get a
> partial answer, followed by the final answer, that would be very bad
> indeed.

Got it, thanks.

> >Or, why not allow it to return the result so far and then DEADSESSION on
> >any following operation?
> 
> "So far"? That only makes sense if the compound were totally complete.
> At which point, there is one and only one result.

Hm, I'm not sure what you mean.  The server comes up from a crash and
determines that it was in the middle of processing a compound, and that
the last thing it does was succesfully execute a nonidempotent op in the
middle of the compound.  it has to decide what it's going to use as the
final reply for that compound.

--b.

> 
> Tom.
> 
> >One problem is that a create operation followed by a GETATTR really
> >shouldn't fail in between the two--that'd make it hard to implement
> >O_CREAT, for example.
> >
> >But it seems like a server should be able to avoid that without making
> >every sa_cachethis operation completely atomic.
> >
> >Am I missing some reason for that MUST?
> >
> >--b.
> >
> >_______________________________________________
> >nfsv4 mailing list
> >nfsv4@ietf.org
> >https://www.ietf.org/mailman/listinfo/nfsv4
> >
> 
> _______________________________________________
> nfsv4 mailing list
> nfsv4@ietf.org
> https://www.ietf.org/mailman/listinfo/nfsv4