Commit Graph

625 Commits

Author SHA1 Message Date
Jarek Kowalski
6af6914b40 reject invalid offset/length in map storage 2018-07-19 15:01:53 -08:00
Jarek Kowalski
a91c46e9b4 added block cache tests 2018-07-19 15:01:17 -08:00
Jarek Kowalski
b2b34c1dea reacted to a change in gometalinter that failed the build 2018-07-10 06:19:22 -07:00
Jarek Kowalski
09c80ed0e9 disabled repository stress 2018-07-09 22:17:11 -07:00
Jarek Kowalski
a299bdb6f9 fixed linter errors 2018-07-09 21:51:24 -07:00
Jarek Kowalski
ec66349eeb Fixed nasty bug where if the storage fails to write a block we would clobber pending block data in memory by encrypting it in place. This was happening a lot when backing up to cloud and closing the laptop whihle the upload was going on. Added regression test and a rudimentary mechanism for fault injection in storage. 2018-07-09 21:28:12 -07:00
Jarek Kowalski
801b6eb5eb cleaned up block manager to make enforcement of invariants easier 2018-07-09 21:28:12 -07:00
Jarek Kowalski
f44234ef3a improved logging 2018-07-09 21:28:12 -07:00
Jarek Kowalski
2cd426eba0 additional logging for block manager 2018-07-09 21:28:12 -07:00
Jarek Kowalski
c57531b751 switched Go logging library to github.com/op/go-logging which lets us override log levels per module 2018-07-09 21:28:12 -07:00
Jarek Kowalski
1c99dae4b1 added new type of stress test that utilizes multiple repository features 2018-07-09 21:28:12 -07:00
Jarek Kowalski
4a11ca5f07 increase the number of log files to retain 2018-07-09 21:28:12 -07:00
Jarek Kowalski
32b83be0b4 additional logging for block manager 2018-07-09 21:28:12 -07:00
Jarek Kowalski
bd7fa874b0 write list cache file atomically 2018-07-02 20:38:48 -07:00
Jarek Kowalski
fe52c87a58 better error reporting on data corruption 2018-07-01 13:17:23 -07:00
Jarek Kowalski
00db1abb35 added --html option to 'kopia server' which allows colocating HTML apps on the same port 2018-07-01 13:16:58 -07:00
Jarek Kowalski
75da8f3f31 removed dead code 2018-06-24 15:04:58 -07:00
Jarek Kowalski
cbcdfa2eb6 switched coverage to native go test 2018-06-23 16:32:47 -07:00
Jarek Kowalski
94965997e8 switched storage logging to be on by default 2018-06-23 13:50:11 -07:00
Jarek Kowalski
ba6419339a refactored storage.ListBlocks() to be callback based which simplifies usage significantly 2018-06-23 13:47:43 -07:00
Jarek Kowalski
83036f1a0d upload progress 2018-06-23 13:10:54 -07:00
Jarek Kowalski
91c51f4807 refactored 'block gc' subcommand 2018-06-23 13:05:40 -07:00
Jarek Kowalski
f4424bd79c parallelized 'block rewrite' 2018-06-23 12:30:59 -07:00
Jarek Kowalski
1defc18300 refactored command_snapshot_expire 2018-06-23 12:30:45 -07:00
Jarek Kowalski
c7d898a674 fixed block manager lock which triggered asserts during parallel read/write 2018-06-23 12:30:19 -07:00
Jarek Kowalski
173c5613c1 fixed aliasing of read buffers in block manager 2018-06-18 19:16:13 -07:00
Jarek Kowalski
85b4bb7cd9 better fix for aliasing issue 2018-06-18 18:23:37 -07:00
Jarek Kowalski
23318a461d fixed rare data corruption bug due to buffer aliasing 2018-06-18 18:02:36 -07:00
Jarek Kowalski
2f1cf8129b added skeleton of CLI actions for manipulating server sources 2018-06-18 18:02:36 -07:00
Jarek Kowalski
4faf3cd9d0 finalized CLI to manipulate policies 2018-06-16 12:17:58 -07:00
Jarek Kowalski
70ecebb769 added HTTP API to list policies 2018-06-16 08:46:56 -07:00
Jarek Kowalski
a6f2e8c3f3 added option to disable block manager flush to ensure that a sequence of writes/deletes is atomically observable 2018-06-14 17:11:00 -07:00
Jarek Kowalski
5333a9cfc1 reorganized dynamic splitter logic to be slightly faster and ignore hash value of zero, which introduced blocks smaller than expected on average 2018-06-13 22:56:17 -07:00
Jarek Kowalski
6b79ab79d0 fixed --no-list-caching 2018-06-13 22:37:45 -07:00
Jarek Kowalski
d3cf01fc45 present legacy object IDs without the 'D' 2018-06-13 22:35:46 -07:00
Jarek Kowalski
7dea2359c2 removed 'D' prefix from direct objects 2018-06-12 20:39:53 -07:00
Jarek Kowalski
e21a5ce650 refactored committed block index to separate cache from the lookup 2018-06-12 20:22:37 -07:00
Jarek Kowalski
df3129682c Added repo.Repository.Refresh{,Periodically} 2018-06-12 18:03:25 -07:00
Jarek Kowalski
2be6041d96 rewrote manifest manager to use distinct committed and pending layers 2018-06-10 21:35:59 -07:00
Jarek Kowalski
22b0766570 API server, work in progress 2018-06-10 20:59:49 -07:00
Jarek Kowalski
4313d5f6ab added block.Manager.Refresh method 2018-06-10 20:59:49 -07:00
Jarek Kowalski
b105cca96c added 'kopia server' which runs simple daemon with simple HTTP API server, which will be used to build a web UI 2018-06-10 17:24:42 -07:00
Jarek Kowalski
e9c11ea106 refactored block cache and list cache 2018-06-10 16:09:47 -07:00
Jarek Kowalski
846a46b879 changed how caching is controlled in block manager by using context instead of options 2018-06-10 10:20:52 -07:00
Jarek Kowalski
9a17179615 reorganized local cache to have 256 shards instead of tens of thousands, this improves scan speed and startup time with lots of cached items 2018-06-10 08:15:07 -07:00
Jarek Kowalski
6838d820c8 revamped object verification to be parallelized, added option to randomly verify a percentage of object contents 2018-06-09 22:15:36 -07:00
Jarek Kowalski
19dcda1f47 removed lock while loading a block that made block manager unnecessarily single-threaded 2018-06-09 18:36:59 -07:00
Jarek Kowalski
e5e5577cfd fixed linter warnings 2018-06-09 14:06:43 -07:00
Jarek Kowalski
fc618b0c66 changed block.PhysicalBlockID to a string 2018-06-07 18:42:22 -07:00
Jarek Kowalski
6ee5c81e21 renamed 'pack block ID' to 'pack file' everywhere 2018-06-07 07:52:17 -07:00