[OpenAFS] GiveUpAllCallBacks callers

Derrick Brashear shadow@gmail.com
Tue, 14 Dec 2010 07:11:13 -0500


On Tue, Dec 14, 2010 at 5:19 AM, Harald Barth <haba@kth.se> wrote:
>
>> The change at http://gerrit.openafs.org/3404 would greatly increase
>> client shutdown performance as well as taking some pressure off server
>> callback
>> utilization by allowing clients to relinquish callbacks to all servers
>> in a single "multi-Rx" call. The drawback is that as there is no way
>> with current RPCs
>> to know what server version is running, sites running 1.4.0 through
>> 1.4.5 would risk host list corruption and potentially a crash.
>
> So the key question is how to get these sites to upgrade and not crash
> them in the meantime.
>
> I would not object if a client would use the version information (as
> displayed by rxdebug) to make optimizations. Or to complain loudly in
> the log that "talking to an old server, downgrading performance,
> please notify admin of xxxx to upgrade".

The version information per rxdebug is unreliable, of course. It's any
arbitrary build-time string.

> However, in absence of a parsable version number, the client should
> take the "safe path" as well.
>
>> An alternate version of 3404, patchset one, includes an
>> implementation which cheats, namely, within a few months of
>> GiveUpAllCallBacks being fixed, the GetStatistics64 RPC was
>> introduced. Its existance would be used as a sentinel that
>> GiveUpAllCallBacks was safe to issue. However, this was objected to
>> as it ties unrelated RPCs together.
>
> For the future, when noone (*) remembers 1.4.5 any more, I'd rather go
> for the version number approach and not for the "rpc exist" approach,
> even if it would be a convinient way today.

An RPC with a version vector or something more reliable than a text
string has already been discussed
and is presumably going to be in the offing.