Alexander Neumann
fe565e17c3
Key: Use Save() instead of Create()
2016-01-24 17:52:44 +01:00
Alexander Neumann
782a1bf7b0
repository: remove GetDecryptReader()
2016-01-24 00:12:17 +01:00
Alexander Neumann
3191778d33
repository: Use Load() instead of GetReader()
2016-01-24 00:12:09 +01:00
Alexander Neumann
9bfa633187
repository/key: Use Load() instead of GetReader()
2016-01-23 23:48:19 +01:00
Alexander Neumann
10b03eee27
Add comment
2016-01-23 23:27:40 +01:00
Alexander Neumann
8b7bf8691d
backend: Remove Get()
...
This is the first commit that removes the (redundant) Get() method of
the backend interface. Get(x, y) is equivalent to GetReader(x, y, 0, 0).
2016-01-23 13:13:05 +01:00
Alexander Neumann
f53008d916
Allow saving duplicate blobs in the repacker
...
This adds code to the master index to allow saving duplicate blobs
within the repacker. In this mode, only the list of currently in flight
blobs is consulted, and not the index. This correct because while
repacking, a unique list of blobs is saved again to the index.
2016-01-17 21:14:55 +01:00
Alexander Neumann
34c1056efc
Merge pull request #358 from episource/iss358_pack_not_referened_add_test
...
Closes #365
Closes #358
2016-01-17 20:07:56 +01:00
Alexander Neumann
6a56d5b87b
Repo: Add more debug
2016-01-17 18:48:05 +01:00
Philipp Serr
0fde09a866
Lock MasterIndex and InFlight store together
...
fixes: #358
2015-12-28 18:40:43 +01:00
Alexander Neumann
8209bb309b
split out decryptReader and packerManager
2015-11-29 14:29:59 +01:00
Alexander Neumann
d4b873ca76
Repo: add documentation
2015-11-29 14:29:57 +01:00
Alexander Neumann
5b601f00b1
Add error checking
2015-11-29 14:25:57 +01:00
Alexander Neumann
567de35df4
Save new packs in index atomically
...
This commit fixes a situation reported by a user where two indexes
contained information about the same pack without overlap, e.g.:
Index 3e6a32 contained:
{
"id": "c02e3b",
"blobs": [
{
"id": "8114b1",
"type": "data",
"offset": 0,
"length": 530107
}
]
}
And index 62da5f contained:
{
"id": "c02e3b",
"blobs": [
{
"id": "e344f8",
"type": "data",
"offset": 1975848,
"length": 3426468
},
{
"id": "939ed9",
"type": "data",
"offset": 530107,
"length": 1445741
}
]
}
This commit adds all blobs in a pack in one atomic operation so that
intermediate such as these do not happen.
2015-11-20 22:56:56 +01:00
Alexander Neumann
96061d2a2f
Fix debug log message
2015-11-13 23:47:53 +01:00
Alexander Neumann
5776b8f01c
remove ConvertIndex
2015-11-08 22:27:13 +01:00
Alexander Neumann
6c54d3fa82
index: also mark old index as final on decode
2015-11-08 22:21:29 +01:00
Alexander Neumann
db41102bfa
Finalize repacker
2015-11-02 19:28:30 +01:00
Alexander Neumann
1fc0d78913
Refactor Index.Store() to take a PackedBlob
2015-11-02 19:07:03 +01:00
Alexander Neumann
f3f84b1544
Add ID handling for index
2015-11-02 18:52:13 +01:00
Alexander Neumann
60a34087c9
Move LoadIndexWithDecoder to index.go
2015-11-02 18:52:13 +01:00
Alexander Neumann
89a77ab2f9
Add Index.ListPack()
2015-11-02 18:52:13 +01:00
Alexander Neumann
fccde030d5
Refactor Index.Lookup() to return struct PackedBlob
2015-10-31 14:47:42 +01:00
Alexander Neumann
7711fcda69
use new index format for repository tests
2015-10-27 20:51:55 +01:00
Alexander Neumann
7717ea5cca
Add benchmark for LoadJSONPack
2015-10-27 20:51:55 +01:00
Alexander Neumann
88849c06a6
rebuild-index: Refactor a bit
2015-10-25 17:53:02 +01:00
Alexander Neumann
9074c923ea
index: add AddToSupersedes()
2015-10-25 17:06:56 +01:00
Alexander Neumann
461d54e43c
Refactor repository.SaveIndex()
2015-10-25 17:05:54 +01:00
Alexander Neumann
04614c7527
Add test for packs in duplicate indexes
2015-10-25 15:35:33 +01:00
Alexander Neumann
f7ff5b766c
Mark written indexes as finalized
2015-10-25 15:35:18 +01:00
Alexander Neumann
d9f9b77d68
Add Index.Packs() and IDSet.Equals()
2015-10-25 15:28:01 +01:00
Alexander Neumann
4b1a2caea7
Allow overwriting the IndexFull function for tests
2015-10-25 15:05:22 +01:00
Alexander Neumann
af0d6f58b9
Remove unneeded pointer to pack id
2015-10-25 14:35:08 +01:00
Alexander Neumann
2710d6399a
Cleanup index code
...
The selectFn wasn't used any more, so remove it from generatePackList().
2015-10-25 14:26:04 +01:00
Alexander Neumann
1dd731fdb8
Handle concurrent access to the inFlight list
2015-10-14 20:50:54 +02:00
Alexander Neumann
6fa4be5af2
Regularly save intermediate indexes
2015-10-12 23:59:17 +02:00
Alexander Neumann
941b7025b6
Delete Index.Remove()
2015-10-12 22:51:11 +02:00
Alexander Neumann
4b2a4b03ec
Remove Index.StoreInProgress()
2015-10-12 22:49:31 +02:00
Alexander Neumann
86fcd170f6
Add and use MasterIndex
2015-10-12 22:34:12 +02:00
Alexander Neumann
64fa89d406
Add error checks
2015-10-12 22:07:56 +02:00
Alexander Neumann
eb73182fcf
Rework index decode and handling old format
2015-10-12 20:53:07 +02:00
Alexander Neumann
356bb62243
Add CreateEncryptedBlob and GetDecryptReader
2015-10-12 20:53:07 +02:00
Alexander Neumann
96f2165067
Allow loading index with old format
2015-10-12 20:53:07 +02:00
Alexander Neumann
7944e8e323
Update index format
2015-10-12 20:53:07 +02:00
Alexander Neumann
cc7acba02b
Return the original backend ID on duplicate entries
2015-10-11 20:45:50 +02:00
Alexander Neumann
f188cf81dc
Add more panic() calls for invalid conditions
2015-10-11 20:45:42 +02:00
Alexander Neumann
7db2369081
Shorten error message for tree errors
2015-10-11 20:22:52 +02:00
Philipp Serr
7b11660f4f
Prevent concurrent processing of same blob
...
... by first adding a preliminary index entry and making this fail if
an index entry for the same blob already exists.
A preliminary index entry is characterized by not yet being associated
with a pack. Until now, these entries where added to the index just
like final index entries using index.Store, which silently overwrites
existing index entries.
This commit adds a new method index.StoreInProgress which refuses to
overwrite existing index entries and allows for creating preliminary
index entries only. The existing method index.Store has not been
changed and continues to silently overwrite existing index entries.
This distinction is important, as otherwise, it would be impossible to
update a preliminary index entry after the blob has been written to a
pack.
Resolves: restic#292
2015-09-27 16:56:49 +02:00
Alexander Neumann
d42ff509ba
Small refactorings
...
* use uint instead of uint32 in packs/indexes
* use ID.Str() for debug messages
* add ParallelIDWorkFunc
2015-09-05 18:41:58 +02:00
Alexander Neumann
681d7851aa
index: use backend.ID instead of string for maps
2015-09-05 18:41:58 +02:00