* Add multiparting to s3client.
Fix boost::urls::parse_uri 's dislike of credentialed blobstore urls.
* fdbclient/BulkLoading.cpp
Add blobstore regex to extract credentials before feeding the boost
parse_uri.
* fdbclient/include/fdbclient/S3BlobStore.h
* fdbclient/S3BlobStore.actor.cpp
Add cleanup of failed multipart -- abortMultiPartUpload l(s3 will do
this in the background eventually but lets clean up after ourselves).
Also add getObjectRangeMD5 so can do multipart checksumming.
* fdbclient/S3Client.actor.cpp
Change upload file and download file to do multipart always.
Retry too.
* fdbclient/S3Client_cli.actor.cpp
Add command line to trace rather than output.
* Address Zhe review
* More logging around part upload and download
* Undo assert that proved incorrect; restore the old length math
doing copy in readObject.
Cleanup around TraceEvents in HTTTP.actor.
* Undo commented out cleanup -- for debugging
* formatting
---------
Co-authored-by: stack <stack@duboce.com>
* improve bulkload code
* address CI
* disable audit storage replica check and distributed consistency check in bulkload and bulkdump simulation test
* fix ci
* disable waitForQuiescence in bulkload and bulkdump tests
* bulkload support general engine and fix bugs
* add comments
* improve test coverage and fix bug
* nits and address comments
* nit
* nits
* fix data inconsistency bug due to bulkload metadata
* fix ss bulkload task metadata bugs
* nit and fix CI issue
* fix bugs of restore ss bulkload metadata
* use ssBulkLoadMetadata for fetchKey and general kv engine
* cleanup bulkload file for fetchkey
* fix CI issue
* fix simulation stuck due to repeated re-recruitment of unfit dd
* randomly do available space check when finding the dest team for bulkload in simulation
* address conflict
* code clean up
* update BulkDumping.toml same to BulkLoading.toml
* consolidate ss fetchkey and fetchshard failed to read bulkload task metadata
* fix DD bulkload job busy loop bug which causes segfault and test terminate unexpectedly in joshua test
* nit
* fix ss busy loop for bulkload in fetchkey
* use sqlite for bulkload ctest
* fix bulkload ctest stuck issue due to merge and change storage engine to ssd
* fix comments for CC recruit DD
* address comments
* address comments
* add comments
* fix ci format issue
* address comments
* add comments
* New restore consolidated commit
This change adds RestoreDispatchPartitionedTaskFunc to restore
from partitioned-format backup.
* ArenaBlock::totalSize parameter pass by ref
* Fix format issues identified by CI
It was disabled until we made it so the SS could
talk to s3, included in this PR.
Also finished the bulkload test. It only had the
bulkdump portion. bulkload support was recentlty
added so finish off the test here by adding bulkload
of the bulkdump and then verifying all data present.
Added passing knobs to the fdb cluster so available to the
fdbserver when it goes to talk to s3. Also added passing
SS count to start in fdb cluster.
* fdbclient/tests/fdb_cluster_fixture.sh
Add ability to pass multiple knobs to fdb cluster
and to specify more than just one SS.
* fdbserver/fdbserver.actor.cpp
Add --blob-server option and processing of FDB_BLOB_CREDENTIALS
if present (hijacked the unused, unadvertised --
blob-credentials-file).
* tests/loopback_cluster/run_custom_cluster.sh
Allow passing more than just one knob.
* fdbclient/BulkLoading.cpp
* fdbclient/include/fdbclient/BulkLoading.h
Added getPath
* fdbclient/S3BlobStore.actor.cpp
Fix bug where we were doubling up the first '/' on a path if
it had a root '/' already (s3 treats /a/b as distinct from
/a//b).
* fdbclient/S3Client.actor.cpp
Fix up of traceevent Types.
* fdbclient/tests/bulkload_test.sh
Enable being able to use s3 if available.
Pick up jobid when bulkdumping. Feed it to new bulkload
method. Add verification all data present post-bulkload.
* fdbserver/BulkLoadUtil.actor.cpp
Add support for blobstore.
* tests/loopback_cluster/run_custom_cluster.sh
Bug fix -- we were only able to pass in one knob. Allow
passing multiple.
been using an old directory left over which caused start of weed
to fail.
* fdbbackup/tests/s3_backup_test.sh
Remove unused S3_RESOURCE
* fdbclient/tests/aws_fixture.sh
* fdbclient/tests/seaweedfs_fixture.sh
Mix in process id into tmp dir name.
* fdbclient/tests/bulkload_test.sh
Add in (disabled) use s3 code if it available.
Refactor to go against s3 if available.
* fdbclient/tests/aws_fixture.sh
Add aws_setup utility shared by scripts going against s3.
* fdbclient/tests/bulkload_test.sh
Comment out verification for now.
Redo of how we use seaweed (less code).
* fdbclient/tests/fdb_cluster_fixture.sh
Take knobs when starting backup_agent.
* fdbclient/tests/s3client_test.sh
Explain the OKTETO_NAMESPACE variable.
Add logging of whether we are going against s3 or seaweed.
We don't know certificate and key talking to s3.
Move common setup code out to aws and weed fixtures.
* fdbclient/tests/seaweedfs_fixture.sh
Make it so less methods to call running seaweed.
Fix compile fail.
* fdbclient/tests/aws_fixture.sh
* fdbclient/tests/seaweedfs_fixture.sh
* fdbclient/tests/tests_common.sh
Rename of local variable so they don't clash
w/ varibles set by the caller.
* fdbclient/tests/bulkload_test.sh
Refactoring in preparation for this test to go against s3.
Currently only works against seaweed.
(Will do in a follow-on PR. I need to do a bit of work first
to make this possible).
* fdbclient/tests/s3client_test.sh
Refactor removing duplicated code.
Added a test to prove s3 works using old md5 hash; i.e.
disabled integrity check.
Fix object integrity check; original approach doesn't work when
serverside encryption is enabled (awz:kms).
* contrib/SimpleOpt/include/SimpleOpt/SimpleOpt.h
Address sanitizer was complaining about how SimpleOpt manipulates the
array of options. While memcpy inside a buffer is 'odd', it seems fine.
Its old code. Leaving it.
* fdbbackup/tests/s3_backup_test.sh
Pass in weed_dir rather than rely on fixture global (the latter didn't
work).
* fdbclient/ClientKnobs.cpp
* fdbclient/include/fdbclient/ClientKnobs.h
* fdbclient/include/fdbclient/S3BlobStore.h
Add a knob to ask for object integrity check on download from s3.
BLOBSTORE_ENABLE_OBJECT_INTEGRITY_CHECK replaces BLOBSTORE_ENABLE_ETAG_ON_GET
which doesn't work when serverside encodes content (found in testing).
* fdbclient/S3BlobStore.actor.cpp
Implement object integrity check on download. If
enable_object_integrity_check is set, we use sha256 in place of md5
as our hash. Removed a redundant 'verify' of md5 check.
* fdbclient/S3Client.actor.cpp
Remove unhelpful comments.
* fdbclient/S3Client_cli.actor.cpp
Add support for enable_object_integrity_check. This knob replaces
enable_etag_on_get which didn't work when awz:kms serverside
encryption was enabled.
Add error code on exit when exception.
* fdbclient/include/fdbclient/S3Client.actor.h
Move an include (address a review comment from previous commit).
* fdbclient/tests/aws_fixture.sh
Add an aws fixture of utility that can be shared.
* fdbclient/tests/bulkload_test.sh
Use imported log_test_result
* fdbclient/tests/s3client_test.sh
Add using s3 if available; otherwise, do seaweedfs.
* fdbclient/tests/seaweedfs_fixture.sh
WEED_DIR global doesn't work so have caller pass it in for each method
instead.
* add bulkload job framework and fix bugs
* add BulkLoadChecksum, fix CI issue
* nits
* nits
* address comments
* mitigate perpetual wiggle to make sure DD can select a valid team to inject data
* fix submitBulkDumpJob and submitBulkLoadJob
* change remoteRoot to jobRoot
* add comments
* documentation/sphinx/source/backups.rst
Minor edit. Add more examples making it clearer how to do S3
backup URLs in particular. Explain the 'trick' for omitting
key, secret, and token from URL instead picking them up from
the credentils file.
* fdbclient/S3Client_cli.actor.cpp
Minor cleanup of usage.
* fdbclient/ClientKnobs.cpp
* fdbclient/include/fdbclient/ClientKnobs.h
Add knob BLOBSTORE_ENABLE_ETAG_ON_GET
* fdbclient/S3BlobStore.actor.cpp
Optionally check etag (md5) volunteered by s3 against the
content we have downloaded and fail if not equal (TODO:
check the checksum after we've saved the content to the
filesystem -- would require good bit of a refactoring).
* fdbclient/S3Client.actor.cpp
Add deleteResource support.
* fdbclient/S3Client_cli.actor.cpp
Add COMMAND support; currently either 'cp' or 'rm'.
Set the knob blobstore_enable_etag_on_get to true by
default for s3client.
* fdbclient/tests/s3client_test.sh
Add clean up of resources written up to s3 at end of test.
(Awkward in bash)
* Improve BulkLoad/Dump implementation
* make bulkload test data folder inside simfdb folder
* simplify code
* use manifest in bulkdump metadata
* use manifest in bulkload
* apply bulkload fileset to bulkload and fix bugs of bytesampling value generation
* remove BulkDumpFileFullPathSet
* address comments
* address comments
* address comments
Variables before "wait()" are temporary ones that will be destructed in the
actor compiled code. So adding "state" to keep them live while executing the
"wait()" calls.
This is found by ASAN.
* init
* Add bulkdump to blobstore:// (s3)
* cmake/CompileBoost.cmake
Add boost url. Needed parsing blobstore:// urls.
* documentation/sphinx/source/bulkdump.rst
Minor edit to allow addition of blobstore target.
* fdbcli/BulkDumpCommand.actor.cpp
* fdbclient/BulkDumping.cpp
s/blobstore/s3/ -- more generic and aligns with
how backup/restore refers to "s3" thingies.
* fdbclient/include/fdbclient/S3Client.actor.h
* fdbclient/S3Client.actor.cpp
Add batch upload handler.
* fdbclient/tests/seaweedfs_fixture.sh
Add run seaweed method. Also look for
weed and if installed use it else download.
* fdbserver/BulkDumpUtil.actor.cpp
appendToPath does the right thing when passed an URL
Add bulkDumpTransportBlobstore_impl.
Add upload to blobstore.
* tests/loopback_cluster/run_custom_cluster.sh
Complain if unrecognized arguments.
* Add ctest for bulkload with simple bulkdump test for now.
* Add new test to ctest list
* fix bugs
* nit
* nits
* nits
---------
Co-authored-by: stack <stack@duboce.com>