Commit Graph

1689 Commits

Author SHA1 Message Date
Jarek Kowalski
751aa3fa98 updated site for 0.8 release (#958) 2021-04-09 23:03:29 -07:00
Jarek Kowalski
f95b1c5b52 maintenance: tweaked log output (#957) v0.8.0 2021-04-09 21:43:32 -07:00
Jarek Kowalski
cbb29f4ef3 maintenance: fixed possible starvation of full blob deletion by quick maintenance (#955)
* testing: added test that simulates running auto maintenance over several weeks of time.

This ensures all maintenance tasks run with reasonable frequency.

* testing: modify time interval to 30 minutes which uncovered a bug where we're starving full blob deletion

* maintenance: fixed full rewrite logic to allow full rewrite after a quick rewrite

* maintenance: when performing quick maintenance after full maintenance we sometimes need to do full blob deletion to ensure liveness

* maintenance: refactored to improve readability
2021-04-09 19:15:03 -07:00
Jarek Kowalski
f4347886b8 logging: simplified log levels (#954)
Removed Warning, Notify and Fatal:

* `Warning` => `Error` or `Info`
* `Notify` => `Info`
* `Fatal` was never used.

Note that --log-level=warning is still supported for backwards
compatibility, but it is the same as --log-level=error.

Co-authored-by: Julio López <julio+gh@kasten.io>
2021-04-09 07:27:35 -07:00
Jarek Kowalski
4638a6a966 switched progress tracking and ETA computation to time.Now() as it causes fake clock time to run too fast (#953)
* logging: use clock.Now instead of time.Now
* timetrack: centralized computing ETAs for various tasks using real clock (time.Now)
2021-04-08 22:52:35 -07:00
Jarek Kowalski
81990b89cc improved maintenance safety (#946)
* maintenance: refactored code by introducing TaskType constants
* maintenance: added additional safety rules for DeleteUnreferencedBlobs and RewriteContents

* DeleteUnreferencedBlobs will run if now() > time(last-content-rewrite) + 1h
  (this ensures other kopia clients will have time refresh their indexes
  to the rewritten blobs before we delete them)

* RewriteContents runs only if time(last-blob-deletion) > time(last-content-rewrite)
  (this makes sure we don’t starve blob deletions if somebody runs
  maintenance too frequently)

With those two rules in place each maintenance cycle will effectively
do either RewriteContents or DeleteUnreferencedBlobs but not both
(except when --safety=none).
2021-04-08 22:31:15 -07:00
Jarek Kowalski
52220a75a9 testing: upload endurance test logs as artifacts regardless of status, don't ignore faulures 2021-04-07 14:21:05 -07:00
Jarek Kowalski
7c088338ce testing: upload endurance test logs as artifacts, run more frequently 2021-04-07 14:11:39 -07:00
dependabot[bot]
a8d7cd6775 build(deps): bump github.com/klauspost/compress from 1.11.12 to 1.11.13 (#933)
Bumps [github.com/klauspost/compress](https://github.com/klauspost/compress) from 1.11.12 to 1.11.13.
- [Release notes](https://github.com/klauspost/compress/releases)
- [Changelog](https://github.com/klauspost/compress/blob/master/.goreleaser.yml)
- [Commits](https://github.com/klauspost/compress/compare/v1.11.12...v1.11.13)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-07 09:33:09 -07:00
Jarek Kowalski
56fd511cb1 nit: fixed typo 2021-04-07 07:56:43 -07:00
Jarek Kowalski
3e438dd2b8 ci: run provider-tests as separate GH job (#952) 2021-04-06 21:46:54 -07:00
dependabot[bot]
c0bab7a70a build(deps): bump google.golang.org/api from 0.42.0 to 0.43.0 (#934)
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.42.0 to 0.43.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/master/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.42.0...v0.43.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 20:56:19 -07:00
dependabot[bot]
4b0f101f93 build(deps): bump google.golang.org/grpc from 1.36.0 to 1.36.1 (#948)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.36.0 to 1.36.1.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.36.0...v1.36.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 19:03:55 -07:00
Jarek Kowalski
f913048fef nit: regenerate server API using newer version of protoc, this removes dependency on deprecated github.com/golang/protobuf (#949) 2021-04-06 19:03:34 -07:00
Julio López
81a2783d1f cli: consistent naming for delete command and aliases (#951) 2021-04-06 18:58:10 -07:00
dependabot[bot]
48d10f95d6 build(deps): bump github.com/aws/aws-sdk-go from 1.38.12 to 1.38.13 (#947)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.38.12 to 1.38.13.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.38.12...v1.38.13)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 18:16:03 -07:00
Jarek Kowalski
bfa1a5c5fa testing: exclude rclone and webdav providers from code coverage, since they flip-flopping between high and low code coverage in non-PR and PR modes 2021-04-06 11:22:14 -07:00
dependabot[bot]
52a0d34808 build(deps-dev): bump electron-builder from 22.9.1 to 22.10.5 in /app (#928)
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.9.1 to 22.10.5.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.9.1...v22.10.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 09:11:23 -07:00
Jarek Kowalski
a5fc1f57e0 testing: allow bigger time drift between GetMetadata and ListBlobs - appears to be needed by Wasabi 2021-04-06 08:57:52 -07:00
dependabot[bot]
c175bc00db build(deps): bump github.com/aws/aws-sdk-go from 1.38.1 to 1.38.12 (#937)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.38.1 to 1.38.12.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.38.1...v1.38.12)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 08:47:34 -07:00
dependabot[bot]
2a11b2041f build(deps-dev): bump asar from 2.1.0 to 3.0.3 in /app (#932)
Bumps [asar](https://github.com/electron/asar) from 2.1.0 to 3.0.3.
- [Release notes](https://github.com/electron/asar/releases)
- [Changelog](https://github.com/electron/asar/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron/asar/compare/v2.1.0...v3.0.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 08:46:59 -07:00
dependabot[bot]
080e8067b6 build(deps): bump react-bootstrap from 1.4.3 to 1.5.2 in /htmlui (#927)
Bumps [react-bootstrap](https://github.com/react-bootstrap/react-bootstrap) from 1.4.3 to 1.5.2.
- [Release notes](https://github.com/react-bootstrap/react-bootstrap/releases)
- [Changelog](https://github.com/react-bootstrap/react-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-bootstrap/react-bootstrap/compare/v1.4.3...v1.5.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-06 08:42:24 -07:00
Jarek Kowalski
16bdf7fa8e maintenance: rewrite contents from short packs only if there is more than one pack to rewrite (#945) 2021-04-06 08:26:27 -07:00
dependabot[bot]
5e4b7757f8 build(deps): bump @testing-library/jest-dom in /htmlui (#929)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.11.9 to 5.11.10.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.11.9...v5.11.10)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-05 21:44:09 -07:00
dependabot[bot]
3308d17ea8 build(deps): bump electron-log from 4.3.1 to 4.3.2 in /app (#925)
Bumps [electron-log](https://github.com/megahertz/electron-log) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/megahertz/electron-log/releases)
- [Changelog](https://github.com/megahertz/electron-log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/megahertz/electron-log/compare/v4.3.1...v4.3.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-05 21:41:22 -07:00
Jarek Kowalski
67ae65eb56 testing: fixed TestFullMaintenance flake (#944) 2021-04-05 21:08:01 -07:00
dependabot[bot]
3239f6e703 build(deps): bump @testing-library/react from 9.5.0 to 11.2.6 in /htmlui (#923)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 9.5.0 to 11.2.6.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v9.5.0...v11.2.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-05 21:06:40 -07:00
Mark Severson
432922f6a7 Handle forbidden responses for missing directories (#943)
* Handle forbidden responses for missing directories

Some WebDAV implementations respond with 403 Forbidden when a missing
directory is encountered.

To handle this situation, any time an error is encountered while writing
a blob, we first try to create requisite directories and if that fails,
we return the error.
2021-04-05 21:05:53 -07:00
Jarek Kowalski
b8c3ae378b testing: replaced locally-defined must() with require.NoError() (#942) 2021-04-05 09:57:50 -07:00
Jarek Kowalski
49c1d08ccb cli: output usage to stdout but errors to stderr (#941)
* cli: output usage to stdout but errors to stderr

* fixed test flake
2021-04-04 12:05:27 -07:00
dependabot[bot]
723e44e08b build(deps): bump @fortawesome/free-solid-svg-icons in /htmlui (#931)
Bumps [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) from 5.15.2 to 5.15.3.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.2...5.15.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-03 23:25:56 -07:00
dependabot[bot]
dd30d53a1c build(deps): bump react and react-dom in /app (#930)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom). These dependencies needed to be updated together.

Updates `react` from 16.14.0 to 17.0.2
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v17.0.2/packages/react)

Updates `react-dom` from 16.14.0 to 17.0.2
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v17.0.2/packages/react-dom)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-03 23:25:20 -07:00
dependabot[bot]
a387b80686 build(deps-dev): bump electron-notarize from 0.2.1 to 1.0.0 in /app (#924)
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 0.2.1 to 1.0.0.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v0.2.1...v1.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-03 23:22:50 -07:00
Jarek Kowalski
76ce309589 site: upgraded hugo to 0.82.0 (#938) 2021-04-03 23:11:56 -07:00
dependabot[bot]
3e59f238bf build(deps): bump @fortawesome/fontawesome-svg-core in /htmlui (#926)
Bumps [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) from 1.2.34 to 1.2.35.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-03 22:45:54 -07:00
Jarek Kowalski
26da03e8d6 dependabot: added .github/dependabot.yml 2021-04-03 22:31:39 -07:00
Jarek Kowalski
79adef0f33 ci: run endurance test 2021-04-03 19:10:36 -07:00
Jarek Kowalski
e1daef2f4a site: fixed release notes URL 2021-04-02 22:26:56 -07:00
Jarek Kowalski
f8ba160f23 site: updated docs in preparation for 0.8.0-beta4 release 2021-04-02 22:18:44 -07:00
Jarek Kowalski
d07eb9f300 cli: added --safety=full|none flag to maintenance commands (#912)
* cli: added --safety=full|none flag to maintenance commands

This allows selection between safe, high-latency maintenance parameters
which allow concurrent access (`full`) or low-latency which may be
unsafe in certain situations when concurrent Kopia processes are
running.

This is a breaking change for advanced CLI commands, where it removes
timing parameters and replaces them with single `--safety` option.

* 'blob gc'
* 'content rewrite'
* 'snapshot gc'

* pr renames

* maintenance: fixed computation of safe time for --safety=none

* maintenance: improved logging for blob gc

* maintenance: do not rewrite truly short, densely packed packs

* mechanical: pass eventual consistency settle time via CompactOptions

* maintenance: add option to disable eventual consistency time buffers with --safety=none

* maintenance: trigger flush at the end of snapshot gc

* maintenance: reload indexes after compaction that drops deleted entries, this allows single-pass maintenance with --safety=none to delete all unused blobs

* testing: allow debugging of integration tests inside VSCode

* testing: added end-to-end maintenance test that verifies that full maintenance with --safety=none removes all data
2021-04-02 21:56:01 -07:00
Jarek Kowalski
9a128ffb9f filesystem: support ~ in repository path, require absolute paths (#922)
Fixes #918
2021-04-02 21:55:24 -07:00
Jarek Kowalski
8beb265c27 nit: output snapshot ID when --json is used (#921) 2021-04-02 19:58:17 -07:00
Jarek Kowalski
9a756c719f Enabled race detector in CI, fixed a few data races (#919)
* content: fixed data race in IterateUnreferencedBlobs

* upload: fixed data race between uploader and estimator

* testing: fixed data race in repo/blob/logging test

* makefile: run tests on CI/linux/amd64 with -race

* robustness: fixed test race

* content: fixed data race getContentDataUnlocked that triggers TestParallelWrites - looks scary but in practice very hard to trigger in real life and does not cause data corruption

* testing: reduce test complexity under race detector

* server: fixed minor race in refreshStatus()

* testing: reduced depth of sharedTestDataDir2

* ci: run race detector in separate job

* ci: run unit test race detector in parallel to integration tests
2021-04-02 18:21:04 -07:00
Julio López
c9cc16936c blob: remove s3Storage.needMD5 (#917) 2021-03-30 06:44:59 -07:00
Julio López
5ff2c85c80 blob: fix puts for object-lock-enabled S3 stores (#913)
* test: allow creating S3 buckets with object locking enabled

Split createBucket into createClient and makeBucket.
Both createClient and makeBucket will be used for testing
buckets with object locking enabled

* blob: needMD5 helper and tests

* blob: send content MD5 when object locking retention is enabled

From S3 documentation:

>
> If you configure a default retention period on a bucket, requests to
> upload objects in such a bucket must include the Content-MD5 header.
>
> The Content-MD5 header is required for any request to upload an
> object with a retention period configured using Amazon S3 Object Lock.
>

Ref:
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html#object-lock-bucket-config
- https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html

* blob: ignore errors when getting S3 bucket object-lock config

If there is an error, assume the content MD5 is not neede on PUT.

* test: split getProviderOptions and getProviderOptionsAndCleanup

* test: TestNoNeedMD5Providers

* Send MD5 when store requires Content-MD5 header

Required for writing blobs to an AWS S3 bucket with object-locking
enabled and a retention period for the blob.

* Check whether the error message contains "content-md5"

Instead of doing an exact message comparison to reduce
the impact of potential message changes.
2021-03-29 19:19:25 -07:00
Jarek Kowalski
2c2c9d52e0 nit: refactored repetitive reportesting setup code (#916) 2021-03-29 14:52:14 -07:00
Jarek Kowalski
d0f2ef53d7 blob: improved startup error handling of rclone and webdav PutBlob race (#915)
* added framework for unit testing against remote real rclone remotes,
  added google drive backend
* added parallelism to blobtesting which revealed some races during
  PutBlob with WebDAV.
2021-03-28 08:26:35 -07:00
Jarek Kowalski
b8e89c2808 s3: refactored testing to support multiple S3-compatible providers (#914)
The credentials are passed via JSON matching s3.Options struct
Fixed some verification issue with Wasabi.
2021-03-26 14:33:20 -07:00
Jarek Kowalski
74833cefcb cli: added standard --json flags to several commands (#910)
* cli: added standard --json flags to several commands

Fixes #272

* Update flag description

Co-authored-by: Julio López <julio+gh@kasten.io>
2021-03-25 17:55:18 -07:00
Jarek Kowalski
dfe2e9c65e sftp: fixed retry logic with invalid seek (#911) 2021-03-24 22:18:10 -07:00