Commit Graph

184 Commits (41bc373fe824ae395c823417c965ee24e91bf886)

Author SHA1 Message Date
kodiakhq[bot] 04b4eeb6ec
Merge branch 'main' into cn/only-read-server 2021-10-25 15:15:17 +00:00
Marco Neumann bc7244c48e chore: use Rust edition 2021 2021-10-25 10:58:20 +02:00
Carol (Nichols || Goulding) 4de7dce8ba feat: Add a 404 NotFound error to the object store errors for GET
With the object store implementations that support figuring out if a GET
request returns 404 not found. Azure doesn't have great support for
this.
2021-10-22 15:55:59 -04:00
Carol (Nichols || Goulding) 6ae42bb774 fix: Put both Debug and Display of AWS errors in error messages 2021-10-22 13:59:48 -04:00
Carol (Nichols || Goulding) a2b81cdb20 fix: Put Debug format of rusoto errors in error messages
Fixes #2942
2021-10-22 13:16:37 -04:00
Marco Neumann f7ca80e29f
test: ensure query cancellation (somewhat) works (#2931)
* feat: enable reconfiguration of in-use throttled store

This is handy for tests for which a part should run "normal" and another
one should be throttled/blocked.

* feat: keep track of the number of tasks within a `DedicatedExecutor`

* test: ensure query cancellation (somewhat) works

We cannot really test that query cancellation finishes all subtasks
because _tokio_ doesn't provide sufficient stats / inspection, at least
as long we don't want to rely heavily on _tokio_ tracing. So let's at
least check that tasks from the dedicated executors are pruned properly.

For all other regressions we need to add unit tests to the affected
components. See for example:

- https://github.com/apache/arrow-datafusion/issues/1103
- https://github.com/apache/arrow-datafusion/pull/1105
- https://github.com/apache/arrow-datafusion/pull/1112
- https://github.com/apache/arrow-datafusion/pull/1121

Closes #2027.
2021-10-21 19:10:58 +00:00
Raphael Taylor-Davies 4cc87fb184
chore: misc updates (#2886)
* chore: misc updates

* fix: don't downgrade nix

* chore: remove orphaned comment

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-10-19 11:47:27 +00:00
Carol (Nichols || Goulding) 1dda568d28 test: Add a case for a path without a filename 2021-10-18 08:46:00 -04:00
Carol (Nichols || Goulding) d5ab29711e fix: Serialize relative db object store paths to the server config
So that they can be deserialized, without parsing, to create a new
iox object store from the location listed in the server config.

Notably, the locations serialized don't start with the object storage's
prefix like "s3:" or "file:". The location is the same object storage as
the server configuration that was just read from object storage. Having
the server config on one type of object storage and the database files
on another type is not supported.
2021-10-18 08:37:36 -04:00
dependabot[bot] 44d7479db1
chore(deps): bump cloud-storage from 0.10.2 to 0.10.3
Bumps [cloud-storage](https://github.com/ThouCheese/cloud-storage-rs) from 0.10.2 to 0.10.3.
- [Release notes](https://github.com/ThouCheese/cloud-storage-rs/releases)
- [Changelog](https://github.com/ThouCheese/cloud-storage-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ThouCheese/cloud-storage-rs/commits)

---
updated-dependencies:
- dependency-name: cloud-storage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-04 01:43:09 +00:00
Carol (Nichols || Goulding) fb0e6ad5b1 docs: Document the s3_request generics and how they fit together 2021-09-29 08:19:33 -04:00
Carol (Nichols || Goulding) 2b9612a033 fix: Remove some of the futures in futures layers
I think the FuturesRetry crate needed this, but we're no longer using
the crate so we can get rid of some of the complexity.
2021-09-29 08:19:33 -04:00
Carol (Nichols || Goulding) ad1405dcdf fix: Reduce number of AWS S3 request retries from 10 to 3 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 5857edb19a fix: cloud_storage crate returns a different error type in this case 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 92583aee82 fix: Remove streaming API since we're not streaming anyway 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) edd6c12e93 fix: Add logging when retrying AWS requests 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) ea4cb9a6c1 refactor: Extract the maximum number of retries into a documented public constant 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 9cf343db08 refactor: Use loop instead of futures_retry 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 9cdccae49d fix: Actually do the exponential part of exponential backoff 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) d69472e114 refactor: Use s3_request in s3 delete 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) d05528bcfd refactor: Use s3_request for put requests
Which meant we also needed to change the byte stream to be a closure
that can generate a byte stream
2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) dd3b405727 fix: Only retry s3 requests if error is 500 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 936fba24b9 refactor: Make s3_request generic over the return type 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) 5c78b7d5ae refactor: Extract an s3_request method that handles retries 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) fd3a027ca8 refactor: Use the extracted aws list function in list_with_delimiter 2021-09-29 08:19:32 -04:00
Carol (Nichols || Goulding) a1a8bc01bf refactor: Extract a method just to stream aws list requests 2021-09-29 08:19:32 -04:00
Marco Neumann 9cdd4799c7 chore: `object_store` needs `reqwest` only for azure 2021-09-22 11:16:00 +02:00
Marco Neumann ef5ab67c77 chore: upgrade azure dependencies 2021-09-21 13:35:11 +02:00
Raphael Taylor-Davies 4382bc0b71
feat: disable Snafu futures feature (#2573)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-09-19 11:36:24 +00:00
dependabot[bot] b67610d9b9
chore(deps): bump tokio from 1.10.1 to 1.11.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.10.1...tokio-1.11.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 09:11:38 +00:00
Carol (Nichols || Goulding) fbf18813ac fix: Correct a mistaken assumption in in-memory object storage
The implementation of list_with_delimiter for the in-memory object
storage assumed that paths returned from the BTreeMap keys that sorted
greater than the prefix given to list_with_delimiter and for whom
prefix_matches returned true would also have parts after the prefix.

This didn't account for paths that started with the prefix but didn't
immediately have the delimiter after the prefix: that is,

prefix = 1/database_name

would match the in-memory paths:

1/database_name/0/rules.pb
1/database_name_and_another_thing/0/rules.pb

The first path here *would* return some parts_after_prefix, but the
second path would not and the previously existing code would panic for
the added path in the list_with_delimiter test case.
2021-09-02 14:57:27 -04:00
dependabot[bot] 37c81fb483
chore(deps): bump cloud-storage from 0.9.0 to 0.10.2
Bumps [cloud-storage](https://github.com/ThouCheese/cloud-storage-rs) from 0.9.0 to 0.10.2.
- [Release notes](https://github.com/ThouCheese/cloud-storage-rs/releases)
- [Changelog](https://github.com/ThouCheese/cloud-storage-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ThouCheese/cloud-storage-rs/commits)

---
updated-dependencies:
- dependency-name: cloud-storage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-23 11:26:28 +00:00
Andrew Lamb 063f6da7d6
docs: remove outdated comment (#2302)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-17 12:57:07 +00:00
kodiakhq[bot] 44f9f220cd
Merge branch 'main' into dependabot/cargo/rusoto_credential-0.47.0 2021-08-17 11:38:54 +00:00
Carol (Nichols || Goulding) bda4458ebd fix: Update all the rusoto crates together 2021-08-16 19:59:26 -04:00
Ning Sun c012e996ab
refactor: remove display methods, use fmt::Display instead. (#2272)
* refactor: remove display methods, use fmt::Display instead.

Signed-off-by: Ning Sun <sunng@protonmail.com>

* refactor: update a few calls from .display to .to_string()

* fix: consistently use `Path` rather than occasionally `DirsAndFileName`

* fix: fixup for merge conflicts

* fix: update test

* fix: Catch another case or two

* fix: fmt

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-16 18:00:22 +00:00
dependabot[bot] 97ed42c42f
build(deps): bump rusoto_credential from 0.46.0 to 0.47.0
Bumps [rusoto_credential](https://github.com/rusoto/rusoto) from 0.46.0 to 0.47.0.
- [Release notes](https://github.com/rusoto/rusoto/releases)
- [Changelog](https://github.com/rusoto/rusoto/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rusoto/rusoto/compare/mock-v0.46.0...rusoto-v0.47.0)

---
updated-dependencies:
- dependency-name: rusoto_credential
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-16 16:35:09 +00:00
Carol (Nichols || Goulding) ae6b0e669b refactor: Extract a database persister type that wraps object store
Connects to #2193.
2021-08-12 15:05:32 -04:00
Dom 3de6b44e23
build: use new rustdoc lint name (#2261)
* fix: nocache feature code rot

The MBChunk::snapshot code when using the "nocache" option no longer
compiles - this commit updates it to match the not(nocache) code.

* build: use updated broken_intra_doc_links name

The broken_intra_doc_links lint was renamed
rustdoc::broken_intra_doc_links

https://doc.rust-lang.org/rustdoc/lints.html
2021-08-11 19:48:51 +00:00
Ning Sun 4c4bb1a93e
feat: add fmt::Display implementation for path data structs (#2223)
Signed-off-by: Ning Sun <sunng@protonmail.com>

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-08-09 18:09:09 +00:00
Carol (Nichols || Goulding) 9d15798288 fix: Address or allow Clippy warnings new with Rust 1.54 2021-07-30 09:59:59 -04:00
Paul Dix d95b5df03e refactor: move cache to ObjectStore
Since the consumers of ObjectStore always use the concrete type rather than the ObjectStoreApi trait, it makes more sense to just change the concrete type to have a pointer to the cache. This removes the cache from the ObjectStoreApi trait and changes the ObjectStore to be a regular struct rather than a tuple around the ObjectStoreIntegration. Future work will have the server configure the cache on the ObjectStore struct when its options are set.
2021-07-21 18:27:56 -04:00
Paul Dix 47044d537c chore: make cache a type in object store trait 2021-07-21 18:27:56 -04:00
Paul Dix d0ea812041 feat: add skeleton for object store file cache 2021-07-21 18:27:56 -04:00
Jake Goulding 939d15a21f perf: Avoid clone when an error doesn't occur 2021-07-16 09:59:54 -04:00
Andrew Lamb d35b74c226
fix: Fix doc build warnings (#1945)
* fix: Fix doc build warnings

* refactor: add deny bare_urls to crates

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-13 08:03:42 +00:00
Andrew Lamb 670826daf9
refactor: make object_store construction interface consistent (#1944)
* refactor: make object_store construction interface consistent

* fix: benchmarks

* fix: doc build

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-12 12:56:36 +00:00
Andrew Lamb 1a79bf7e99
refactor: Make aws/azure/gcs optional features and stop compiling 100 dependencies during dev (#1933)
* feat: make aws, gcp, azure dependencies optional

* fix: only run object store tests if the features are enabled

* fix: clean up testing

* fix: rename step

* fix: add to list of jobs

* fix: remove test with object store

* fix: review comments
2021-07-09 11:38:30 +00:00
Andrew Lamb 3cb8f297b1
refactor: encapsulate the ObjectStore implementations in the object store crate (#1932)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-07-09 10:38:32 +00:00
Marco Neumann 24b249ad7b fix: do not silence all IO errors in disk-based LIST 2021-06-22 18:20:36 +02:00