storage: make storage servers declare oldest supported version == 1.0, and storage...
authorZooko O'Whielacronx <zooko@zooko.com>
Wed, 30 Jul 2008 22:51:07 +0000 (15:51 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Wed, 30 Jul 2008 22:51:07 +0000 (15:51 -0700)
See comments in patch for intended semantics.

src/allmydata/client.py
src/allmydata/interfaces.py
src/allmydata/storage.py

index 47f4fd20e32638987e73bb83f45240b6f520fba0..e8f5e57b15082fcc19759ba2fa8d134554cd5c6c 100644 (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
index 6a8a8e0afc6b342dc977e8dbb0f8a3c3507a7ee6..d594165887324ac4183de9eeb73ef007b45b6652 100644 (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.
-
-        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)
index eb512c3a542e9cb704eb20d654368cd5c357e6ab..fda061ded39881935b0900c5060e49d417636eb6 100644 (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,