From 29255568df9a15758e5df22dda277b622035d097 Mon Sep 17 00:00:00 2001 From: Zooko O'Whielacronx Date: Wed, 30 Jul 2008 15:51:07 -0700 Subject: [PATCH] storage: make storage servers declare oldest supported version == 1.0, and storage clients declare oldest supported version == 1.0 See comments in patch for intended semantics. --- src/allmydata/client.py | 5 +++-- src/allmydata/interfaces.py | 19 +++++++++++-------- src/allmydata/storage.py | 4 +++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/allmydata/client.py b/src/allmydata/client.py index 47f4fd20..e8f5e57b 100644 --- a/src/allmydata/client.py +++ b/src/allmydata/client.py @@ -46,8 +46,9 @@ class Client(node.Node, testutil.PollMixin): NODETYPE = "client" SUICIDE_PREVENTION_HOTLINE_FILE = "suicide_prevention_hotline" - # we're pretty narrow-minded right now - OLDEST_SUPPORTED_VERSION = allmydata.__version__ + # This means that if a storage server treats me as though I were a + # 1.0.0 storage client, it will work as they expect. + OLDEST_SUPPORTED_VERSION = "1.0.0" # this is a tuple of (needed, desired, total, max_segment_size). 'needed' # is the number of shares required to reconstruct a file. 'desired' means diff --git a/src/allmydata/interfaces.py b/src/allmydata/interfaces.py index 6a8a8e0a..d5941658 100644 --- a/src/allmydata/interfaces.py +++ b/src/allmydata/interfaces.py @@ -74,14 +74,17 @@ class RIStorageServer(RemoteInterface): __remote_name__ = "RIStorageServer.tahoe.allmydata.com" def get_versions(): - """Return a tuple of (my_version, oldest_supported) strings. - Each string can be parsed by an allmydata.util.version.Version - instance, and then compared. The first goal is to make sure that - nodes are not confused by speaking to an incompatible peer. The - second goal is to enable the development of backwards-compatibility - code. - - This method is likely to change in incompatible ways until we get the + """ + Return a tuple of (my_version, oldest_supported) strings. Each string can be parsed by + a pyutil.version_class.Version instance or a distutils.version.LooseVersion instance, + and then compared. The first goal is to make sure that nodes are not confused by + speaking to an incompatible peer. The second goal is to enable the development of + backwards-compatibility code. + + The meaning of the oldest_supported element is that if you treat this storage server as + though it were of that version, then you will not be disappointed. + + The precise meaning of this method might change in incompatible ways until we get the whole compatibility scheme nailed down. """ return TupleOf(str, str) diff --git a/src/allmydata/storage.py b/src/allmydata/storage.py index eb512c3a..fda061de 100644 --- a/src/allmydata/storage.py +++ b/src/allmydata/storage.py @@ -759,7 +759,9 @@ class StorageServer(service.MultiService, Referenceable): implements(RIStorageServer, IStatsProducer) name = 'storage' - OLDEST_SUPPORTED_VERSION = LooseVersion("0.8.0") + # This means that if a client treats me as though I were a 1.0.0 storage server, they will + # not be disappointed. + OLDEST_SUPPORTED_VERSION = LooseVersion("1.0.0") def __init__(self, storedir, sizelimit=None, discard_storage=False, readonly_storage=False, -- 2.45.2