Ticket #1506: fix-mutable-type.darcspatch

File fix-mutable-type.darcspatch, 9.4 KB (added by kevan, at 2011-09-03T19:10:31Z)
Line 
1Sat Sep  3 12:09:20 PDT 2011  Kevan Carstensen <kevan@isnotajoke.com>
2  * cli: make --mutable-type imply --mutable in 'tahoe put'
3
4New patches:
5
6[cli: make --mutable-type imply --mutable in 'tahoe put'
7Kevan Carstensen <kevan@isnotajoke.com>**20110903190920
8 Ignore-this: 23336d3c43b2a9554e40c2a11c675e93
9] {
10hunk ./src/allmydata/scripts/cli.py 196
11         if self['mutable-type'] and self['mutable-type'] not in ("sdmf", "mdmf"):
12             raise usage.UsageError("%s is an invalid format" % self['mutable-type'])
13 
14+        if self['mutable-type']:
15+            self['mutable'] = True
16+
17 
18     def getSynopsis(self):
19         return "Usage:  %s put [options] LOCAL_FILE REMOTE_FILE" % (self.command_name,)
20hunk ./src/allmydata/test/test_cli.py 1201
21         d.addCallback(self._check_sdmf_json)
22         return d
23 
24+    def test_mutable_type_implies_mutable(self):
25+        self.basedir = "cli/Put/mutable_type_implies_mutable"
26+        self.set_up_grid()
27+        data = "data" * 100000
28+        fn1 = os.path.join(self.basedir, "data")
29+        fileutil.write(fn1, data)
30+        d = self.do_cli("put", "--mutable-type=mdmf", fn1)
31+        d.addCallback(lambda (rc, cap, err):
32+            self.do_cli("ls", "--json", cap))
33+        # This will fail if an immutable file is created instead of a
34+        # mutable file.
35+        d.addCallback(self._check_mdmf_json)
36+        d.addCallback(lambda ignored:
37+            self.do_cli("put", "--mutable-type=sdmf", fn1))
38+        d.addCallback(lambda (rc, cap, err):
39+            self.do_cli("ls", "--json", cap))
40+        d.addCallback(self._check_sdmf_json)
41+        return d
42+
43     def test_put_to_mdmf_cap(self):
44         self.basedir = "cli/Put/put_to_mdmf_cap"
45         self.set_up_grid()
46}
47
48Context:
49
50[improve the storage/mutable.py asserts even more
51warner@lothar.com**20110901160543
52 Ignore-this: 5b2b13c49bc4034f96e6e3aaaa9a9946
53] 
54[storage/mutable.py: special characters in struct.foo arguments indicate standard as opposed to native sizes, we should be using these characters in these asserts
55wilcoxjg@gmail.com**20110901084144
56 Ignore-this: 28ace2b2678642e4d7269ddab8c67f30
57] 
58[docs/write_coordination.rst: fix formatting and add more specific warning about access via sshfs.
59david-sarah@jacaranda.org**20110831232148
60 Ignore-this: cd9c851d3eb4e0a1e088f337c291586c
61] 
62[test_mutable.Version: consolidate some tests, reduce runtime from 19s to 15s
63warner@lothar.com**20110831050451
64 Ignore-this: 64815284d9e536f8f3798b5f44cf580c
65] 
66[mutable/retrieve: handle the case where self._read_length is 0.
67Kevan Carstensen <kevan@isnotajoke.com>**20110830210141
68 Ignore-this: fceafbe485851ca53f2774e5a4fd8d30
69 
70 Note that the downloader will still fetch a segment for a zero-length
71 read, which is wasteful. Fixing that isn't specifically required to fix
72 #1512, but it should probably be fixed before 1.9.
73] 
74[NEWS: added summary of all changes since 1.8.2. Needs editing.
75Brian Warner <warner@lothar.com>**20110830163205
76 Ignore-this: 273899b37a899fc6919b74572454b8b2
77] 
78[test_mutable.Update: only upload the files needed for each test. refs #1500
79Brian Warner <warner@lothar.com>**20110829072717
80 Ignore-this: 4d2ab4c7523af9054af7ecca9c3d9dc7
81 
82 This first step shaves 15% off the runtime: from 139s to 119s on my laptop.
83 It also fixes a couple of places where a Deferred was being dropped, which
84 would cause two tests to run in parallel and also confuse error reporting.
85] 
86[Let Uploader retain History instead of passing it into upload(). Fixes #1079.
87Brian Warner <warner@lothar.com>**20110829063246
88 Ignore-this: 3902c58ec12bd4b2d876806248e19f17
89 
90 This consistently records all immutable uploads in the Recent Uploads And
91 Downloads page, regardless of code path. Previously, certain webapi upload
92 operations (like PUT /uri/$DIRCAP/newchildname) failed to pass the History
93 object and were left out.
94] 
95[Fix mutable publish/retrieve timing status displays. Fixes #1505.
96Brian Warner <warner@lothar.com>**20110828232221
97 Ignore-this: 4080ce065cf481b2180fd711c9772dd6
98 
99 publish:
100 * encrypt and encode times are cumulative, not just current-segment
101 
102 retrieve:
103 * same for decrypt and decode times
104 * update "current status" to include segment number
105 * set status to Finished/Failed when download is complete
106 * set progress to 1.0 when complete
107 
108 More improvements to consider:
109 * progress is currently 0% or 100%: should calculate how many segments are
110   involved (remembering retrieve can be less than the whole file) and set it
111   to a fraction
112 * "fetch" time is fuzzy: what we want is to know how much of the delay is not
113   our own fault, but since we do decode/decrypt work while waiting for more
114   shares, it's not straightforward
115] 
116[Teach 'tahoe debug catalog-shares about MDMF. Closes #1507.
117Brian Warner <warner@lothar.com>**20110828080931
118 Ignore-this: 56ef2951db1a648353d7daac6a04c7d1
119] 
120[debug.py: remove some dead comments
121Brian Warner <warner@lothar.com>**20110828074556
122 Ignore-this: 40e74040dd4d14fd2f4e4baaae506b31
123] 
124[hush pyflakes
125Brian Warner <warner@lothar.com>**20110828074254
126 Ignore-this: bef9d537a969fa82fe4decc4ba2acb09
127] 
128[MutableFileNode.set_downloader_hints: never depend upon order of dict.values()
129Brian Warner <warner@lothar.com>**20110828074103
130 Ignore-this: caaf1aa518dbdde4d797b7f335230faa
131 
132 The old code was calculating the "extension parameters" (a list) from the
133 downloader hints (a dictionary) with hints.values(), which is not stable, and
134 would result in corrupted filecaps (with the 'k' and 'segsize' hints
135 occasionally swapped). The new code always uses [k,segsize].
136] 
137[layout.py: fix MDMF share layout documentation
138Brian Warner <warner@lothar.com>**20110828073921
139 Ignore-this: 3f13366fed75b5e31b51ae895450a225
140] 
141[teach 'tahoe debug dump-share' about MDMF and offsets. refs #1507
142Brian Warner <warner@lothar.com>**20110828073834
143 Ignore-this: 3a9d2ef9c47a72bf1506ba41199a1dea
144] 
145[test_mutable.Version.test_debug: use splitlines() to fix buildslaves
146Brian Warner <warner@lothar.com>**20110828064728
147 Ignore-this: c7f6245426fc80b9d1ae901d5218246a
148 
149 Any slave running in a directory with spaces in the name was miscounting
150 shares, causing the test to fail.
151] 
152[test_mutable.Version: exercise 'tahoe debug find-shares' on MDMF. refs #1507
153Brian Warner <warner@lothar.com>**20110828005542
154 Ignore-this: cb20bea1c28bfa50a72317d70e109672
155 
156 Also changes NoNetworkGrid to put shares in storage/shares/ .
157] 
158[test_mutable.py: oops, missed a .todo
159Brian Warner <warner@lothar.com>**20110828002118
160 Ignore-this: fda09ae86481352b7a627c278d2a3940
161] 
162[test_mutable: merge davidsarah's patch with my Version refactorings
163warner@lothar.com**20110827235707
164 Ignore-this: b5aaf481c90d99e33827273b5d118fd0
165] 
166[Make the immutable/read-only constraint checking for MDMF URIs identical to that for SSK URIs. refs #393
167david-sarah@jacaranda.org**20110823012720
168 Ignore-this: e1f59d7ff2007c81dbef2aeb14abd721
169] 
170[Additional tests for MDMF URIs and for zero-length files. refs #393
171david-sarah@jacaranda.org**20110823011532
172 Ignore-this: a7cc0c09d1d2d72413f9cd227c47a9d5
173] 
174[Additional tests for zero-length partial reads and updates to mutable versions. refs #393
175david-sarah@jacaranda.org**20110822014111
176 Ignore-this: 5fc6f4d06e11910124e4a277ec8a43ea
177] 
178[test_mutable.Version: factor out some expensive uploads, save 25% runtime
179Brian Warner <warner@lothar.com>**20110827232737
180 Ignore-this: ea37383eb85ea0894b254fe4dfb45544
181] 
182[SDMF: update filenode with correct k/N after Retrieve. Fixes #1510.
183Brian Warner <warner@lothar.com>**20110827225031
184 Ignore-this: b50ae6e1045818c400079f118b4ef48
185 
186 Without this, we get a regression when modifying a mutable file that was
187 created with more shares (larger N) than our current tahoe.cfg . The
188 modification attempt creates new versions of the (0,1,..,newN-1) shares, but
189 leaves the old versions of the (newN,..,oldN-1) shares alone (and throws a
190 assertion error in SDMFSlotWriteProxy.finish_publishing in the process).
191 
192 The mixed versions that result (some shares with e.g. N=10, some with N=20,
193 such that both versions are recoverable) cause problems for the Publish code,
194 even before MDMF landed. Might be related to refs #1390 and refs #1042.
195] 
196[layout.py: annotate assertion to figure out 'tahoe backup' failure
197Brian Warner <warner@lothar.com>**20110827195253
198 Ignore-this: 9b92b954e3ed0d0f80154fff1ff674e5
199] 
200[Add 'tahoe debug dump-cap' support for MDMF, DIR2-CHK, DIR2-MDMF. refs #1507.
201Brian Warner <warner@lothar.com>**20110827195048
202 Ignore-this: 61c6af5e33fc88e0251e697a50addb2c
203 
204 This also adds tests for all those cases, and fixes an omission in uri.py
205 that broke parsing of DIR2-MDMF-Verifier and DIR2-CHK-Verifier.
206] 
207[MDMF: more writable/writeable consistentifications
208warner@lothar.com**20110827190602
209 Ignore-this: 22492a9e20c1819ddb12091062888b55
210] 
211[MDMF: s/Writable/Writeable/g, for consistency with existing SDMF code
212warner@lothar.com**20110827183357
213 Ignore-this: 9dd312acedbdb2fc2f7bef0d0fb17c0b
214] 
215[setup.cfg: remove no-longer-supported test_mac_diskimage alias. refs #1479
216david-sarah@jacaranda.org**20110826230345
217 Ignore-this: 40e908b8937322a290fb8012bfcad02a
218] 
219[test_mutable.Update: increase timeout from 120s to 400s, slaves are failing
220Brian Warner <warner@lothar.com>**20110825230140
221 Ignore-this: 101b1924a30cdbda9b2e419e95ca15ec
222] 
223[tests: fix check_memory test
224zooko@zooko.com**20110825201116
225 Ignore-this: 4d66299fa8cb61d2ca04b3f45344d835
226 fixes #1503
227] 
228[TAG allmydata-tahoe-1.9.0a1
229warner@lothar.com**20110825161122
230 Ignore-this: 3cbf49f00dbda58189f893c427f65605
231] 
232Patch bundle hash:
233624e34d4d6cfee79c2783142fd28048453857b0b