瀏覽代碼

docs: internals: cache feature flags

Marian Beermann 8 年之前
父節點
當前提交
f2fd6fc699
共有 1 個文件被更改,包括 30 次插入0 次删除
  1. 30 0
      docs/internals/data-structures.rst

+ 30 - 0
docs/internals/data-structures.rst

@@ -392,6 +392,36 @@ These can be locked out with manifest version 2. Thus, the only difference betwe
 manifest versions 1 and 2 is that the latter is only accepted by Borg releases
 implementing feature flags.
 
+.. rubric:: Cache feature flags
+
+`The cache`_ does not have its separate flag of feature flags. Instead, Borg stores
+which flags were used to create or modify a cache.
+
+All mandatory manifest features from all operations are gathered in one set.
+Then, two sets of features are computed;
+
+- those features that are supported by the client and mandated by the manifest
+  are added to the *mandatory_features* set,
+- the complement to *mandatory_features*, *ignored_features* comprised
+  of those features mandated by the manifest, but not supported by the client.
+
+Because the client previously checked compliance with the mandatory set of features
+required for the particular operation it is executing, the *mandatory_features* set
+will contain all necessary features required for using the cache safely.
+
+Conversely, the *ignored_features* set contains only those features which were not
+relevant to operating the cache. Otherwise, the client would not pass the feature
+set test against the manifest.
+
+When opening a cache and the *mandatory_features* set is a superset of the features
+supported by the client, the cache is wiped out and rebuilt.
+Since a client not supporting a mandatory feature that the cache was built with
+would be unable to update it correctly.
+
+When opening a cache and the intersection of *ignored_features* and the features
+supported by the client contains any elements, i.e. the client possesses features
+that the previous client did not have, the cache is wiped out and rebuilt.
+
 .. rubric:: Defined feature flags
 
 Currently no feature flags are defined.