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.
This commit is contained in:
Zooko O'Whielacronx 2008-07-30 15:51:07 -07:00
parent dbd1c2397e
commit 29255568df
3 changed files with 16 additions and 10 deletions

View File

@ -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

View File

@ -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.
"""
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.
This method is likely to change in incompatible ways until we get the
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)

View File

@ -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,