Commit Graph

583 Commits

Author SHA1 Message Date
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
Jarek Kowalski
f869996a1c aligned 'ls' output 2018-06-06 21:38:32 -07:00
Jarek Kowalski
9ea74b2862 when reporting stats to GA do it asynchronously at start and do not block for more than 1s on exit 2018-06-06 21:38:08 -07:00
Jarek Kowalski
7738fa536f revamped 'object verify' to support verifying one or more sources easily 2018-06-06 21:18:44 -07:00
Jarek Kowalski
8d751cb7bf added 'k' prefix to all directory blocks and 'h' prefix to all hash-cache blocks 2018-06-06 21:15:52 -07:00
Jarek Kowalski
985980925f removed support for v0 block format 2018-06-05 20:17:21 -07:00
Jarek Kowalski
ebd8b0a943 CLI improvements 2018-06-04 22:55:57 -07:00
Jarek Kowalski
416475a092 added RewriteBlock() support which can rewrite either deleted or non-deleted block to a new pack
Added 'block gc' and 'block rewrite' command-line subcommands.
2018-06-04 22:09:10 -07:00
Jarek Kowalski
438fa4a587 whenever two blocks in index have identical times, prefer the non-deleted one 2018-06-04 22:08:58 -07:00
Jarek Kowalski
f6dcd3c155 remove old unused cached index blocks 2018-06-02 10:51:32 -07:00
Jarek Kowalski
02c5e90671 added new cli flags to 'storage list' 2018-06-02 10:46:59 -07:00
Jarek Kowalski
5ba913380e added support for soft-delete that preserves original pack ID/offset/length.
removed legacy soft-delete support without this information
2018-05-30 21:22:07 -07:00
Jarek Kowalski
53db414ff7 Added simple analytics mechanism based on Google Analytics for tracking features usage and latency.
Controlled on command line via --analytics-consent (defaults to asking user)
2018-05-30 21:22:07 -07:00
Jarek Kowalski
80a3bdfd4a fixed race condition when multiple kopia instances are downloading indexes in parallel 2018-05-20 10:45:13 -07:00
Jarek Kowalski
e36d02c59b emit per-dir incomplete reason
store entire rootEntry on snapshot nmanifest
format 'snapshot list' consistently for both root and nested items
2018-05-19 22:00:14 -07:00
Jarek Kowalski
37566b0a05 output per-directory summary when uploading 2018-05-19 07:31:06 -07:00
Jarek Kowalski
7f6c08835e changed naming of retention tags to be more explanatory 2018-05-18 20:03:50 -07:00
Jarek Kowalski
e6c8144b93 output pack block id in 'blockindex show active' 2018-05-17 23:26:43 -07:00
Jarek Kowalski
490fa6130b changed pack naming scheme to be p{random-128-bit} 2018-05-17 23:00:24 -07:00
Jarek Kowalski
96d27c2293 improved block list and index format 2018-05-17 22:41:54 -07:00
Jarek Kowalski
ec779b14c7 refactored and cleaned up policy management, added retention tags to snapshot list 2018-05-17 20:31:37 -07:00
Jarek Kowalski
c907580aaf when running 'snapshot create --all' ignore individual source error failures 2018-05-15 20:54:45 -07:00
Jarek Kowalski
d6477377f9 changed how index compaction works:
instead of having time-based naming, block manager will perform occasional compaction at startup time and delete unwanted blocks

The protocol is safe from concurrency standpoint and provides eventual consistency.
We only delete blocks after creating compacted blocks.
We retry loading index until (any) consistent index is fetched (possibly from cache) and all underlying blocks are also available, not necessarily the latest ones.

TODO - we need to periodically snapshot block index contents, so that if we have a bug somewhere in compaction code, we have a way of restoring working indexes.
2018-05-15 20:10:50 -07:00
Jarek Kowalski
7e6154f6f3 fixed progress bar 2018-05-13 21:55:00 -07:00
Jarek Kowalski
ad6330fe58 disable test caching 2018-05-09 22:26:25 -07:00
Jarek Kowalski
6f7b3b8a80 fixed stress test failures due to expiration of a context 2018-05-09 22:22:37 -07:00
Jarek Kowalski
12c28e537d simplified ObjectID code and changed it to a string 2018-05-09 22:22:37 -07:00
Jarek Kowalski
04acb44669 cleanup 2018-05-09 22:22:32 -07:00
Jarek Kowalski
0ba37c4ccb run longer stress test on travis 2018-05-09 07:42:12 -07:00
Jarek Kowalski
a30af40f7a added 1s sleep to fix flakiness in manifest_manager_test.go due to rounding timestamps down to 1s 2018-05-09 06:28:06 -07:00
Jarek Kowalski
db0fd9ed28 added packindex.IsSubset() 2018-05-06 16:37:35 -07:00
Jarek Kowalski
9c57f22c0f simplified committed index block interface, speed up block block manager test by a lot 2018-05-05 16:16:48 -07:00
Jarek Kowalski
62ce401cd6 exposed block.Manager.ListBlocks() which only returns block IDs instead of full info 2018-05-05 16:16:48 -07:00
Jarek Kowalski
3a02ef24e0 retire block.ContentID and replace with string 2018-05-05 16:16:48 -07:00
Jarek Kowalski
be3c4e725e added stress test 2018-05-05 16:14:31 -07:00
Jarek Kowalski
39aa586b80 fixed map storage data aliasing 2018-05-05 16:14:31 -07:00
Jarek Kowalski
1342fd910a switched to using custom block index designed for efficient lookup without having to parse it
the block index stores tightly packed sorted block IDs

Typically a single entry 128-bit content ID uses 37 bytes of index storage.
2018-05-05 16:14:31 -07:00
Jarek Kowalski
250ceff6fd removed support for pack index V1 2018-04-29 14:10:20 -07:00
Jarek Kowalski
3464059031 cleanup 2018-04-29 13:53:35 -07:00
Jarek Kowalski
5ede755524 added pack index v2 2018-04-29 13:44:12 -07:00
Jarek Kowalski
5912c628bb added copyPackIndex() 2018-04-29 13:44:12 -07:00
Jarek Kowalski
4428743a5b added --raw option to 'blockindex show' 2018-04-29 13:44:12 -07:00
Jarek Kowalski
726d33e0d5 added levelDB-based persistent block index 2018-04-29 13:44:12 -07:00