summaryrefslogtreecommitdiff
path: root/bugs/restore_from_gzip__39__d_repo_gives_confusing_error_message.mdwn
blob: 50c50165b9a8104a391d608f6bcdfb9e457cf9da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Create repository using:
obnam --compress-with=gzip --repository --repository /tmp/backup/ backup "$HOME/"

Try to restore:
obnam restore --repository /tmp/backup/ --to=/tmp/restore "$HOME/test"

Error message:
ERROR: Invalid repository format version ('x\x9c3\xe5\x02\x00\x00v\x00@') -- forgot encryption?

Either the compression used should be autodetected (maybe saved with metadata?) or the error message should be adjusted (using obnam 0.25)

--xeen

---

I confirm that I see the bug. And I agree that Obnam should automatically detect
when compression has been used and that the error message is awful.

---


Proposed solution (involving re-formatting the repository, for fun and profit)

1. Alter the metadata store to not be filtered
   * Alter Repository to not use encryption filter in the metadata files
   * Alter HookedFS to allow you to ask that data filters be bypassed
   * Alter Repository to ask for bypass on metadata files (format)
2. Alter the data filtering hooks to work as follows:
   * When filtering for write, the output data format should always be filtername\0data.  This chains for each write filter.
   * When filtering for read, we read the filter name, apply its inverse on the data and then repeat, chaining until we read \0data (an empty filter name)

Side effects:

* Ordering of filters can change at will, because reading data is always deterministic on the stored data.
* Data is leaked about (at best) the top level filter (which might be encryption).
  * Note:  Encrypted repositories are obvious anyway so this should not be considered a blocker
* All files increase in size by some number of (at minimum 1) bytes.
* Repository metadata is now not affected by filters, so we can always guarantee to be able to read it and produce useful warnings/errors in case of format mismatches.

---

Should be fixed in repository format 6

[[done]]