Commit Graph

701 Commits

Author SHA1 Message Date
Vishesh Yadav f14baf2af8 clang-format changes 2022-05-09 14:54:51 -07:00
Vishesh Yadav 9173e2e19b Move GlobalConfig to DatabaseContext 2022-05-09 14:54:51 -07:00
Vishesh Yadav 7578d5ebc7 Create GlobalConfig object for each database instance
Currently, GlobalConfig is a singleton that means for each process there is only
one GlobalConfig object. This is bug from clients perspective as a client can
keep connections to several databases. This patch tracks GlobalConfig for each
database using an unordered_map in flowGlobals.

We discovered this bug while testing multi-version client, where the client got
stuck. This was lucky, as normally it'd just write down config to the wrong
database.
2022-05-09 14:54:51 -07:00
Xiaoxi Wang 992ff59bfb Merge branch 'main' of https://github.com/apple/foundationdb into readaware 2022-05-05 09:57:22 -07:00
Trevor Clinkenbeard 0069ce51a5
Merge pull request #7054 from sfc-gh-tclinkenbeard/remove-non-tls-support
Remove `DISABLE_TLS` CMake option
2022-05-03 22:13:07 -07:00
Xiaoxi Wang 7c37d172b9 solve some comments 2022-05-03 17:21:08 -07:00
Xiaoxi Wang 269d85daa8 Merge branch 'main' of https://github.com/apple/foundationdb into readaware 2022-05-03 13:37:56 -07:00
sfc-gh-tclinkenbeard 225146176d Apply clang-format to fdbcli.actor.cpp and Net2.actor.cpp 2022-05-03 12:13:09 -07:00
sfc-gh-tclinkenbeard 06825775db Fix formatting of lines with TLS_OPTION_FLAGS 2022-05-02 22:56:06 -07:00
sfc-gh-tclinkenbeard 7f05221cfe Removed TLS_DISABLED macro 2022-05-02 22:15:27 -07:00
Xiaoxi Wang 69985ba251 Merge branch 'main' of https://github.com/apple/foundationdb into readaware 2022-05-02 10:53:22 -07:00
A.J. Beamon 43c2ca35a5 Move fdbcli command and hint generators into the files implementing the command. 2022-05-02 08:39:59 -07:00
Renxuan Wang c69a07a858
Check in the new Hostname logic. (#6926)
* Revert #6655.

20220407-031010-renxuan-c101052c21da8346           compressed=True data_size=31004844 duration=4310801 ended=100000 fail_fast=10 max_runs=100000 pass=100000 priority=100 remaining=0 runtime=1:04:15 sanity=False started=100047 stopped=20220407-041425 submitted=20220407-031010 timeout=5400 username=renxuan

* Revert #6271.

20220407-051532-renxuan-470f0fe6aac1c217           compressed=True data_size=30982370 duration=3491067 ended=100002 fail_fast=10 max_runs=100000 pass=100002 priority=100 remaining=0 runtime=0:59:57 sanity=False started=100141 stopped=20220407-061529 submitted=20220407-051532 timeout=5400 username=renxuan

* Revert #6266.

Remove resolving-related functionalities in connection string. Connection string will be used for storing purpose only, and non-mutable.

20220407-175119-renxuan-55d30ee1a4b42c2f           compressed=True data_size=30970443 duration=5437659 ended=100000 fail_fast=10 max_runs=100000 pass=100000 priority=100 remaining=0 runtime=0:59:31 sanity=False started=100154 stopped=20220407-185050 submitted=20220407-175119 timeout=5400 username=renxuan

* Add hostname to coordinator interfaces.

* Turn on the new hostname logic.

* Add the corresponding change in config txns.

The most notable change is before calling basicLoadBalance(), we need to call tryInitializeRequestStream() to initialize request streams first.

Passed correctness tests.

* Return error when hostnames cannot be resolved in coordinators command.

* Minor fixes.
2022-04-27 21:54:13 -07:00
Xiaoxi Wang 0639810b66 merge upstream/main 2022-04-22 11:09:15 -07:00
Zhe Wang 6c9ff6ee5e
Add sharded rocksdb type (#6862)
* add-sharded-rocksdb-type

* address comments

Co-authored-by: Zhe Wang <zhewang@Zhes-MacBook-Pro.local>
2022-04-21 22:53:14 -04:00
Xiaoxi Wang d17b36acf8 Merge branch 'main' of https://github.com/apple/foundationdb into readaware 2022-04-15 11:10:09 -07:00
Andrew Noyes 29cf5f1fbf
Fix an ASSERT when an fdbcli command times out (#6857)
* Re-throw operation_cancelled

There's a few places in fdbcli where we don't rethrow operation
cancelled but wait on a future. It's very unusual that you don't want to
rethrow operation_cancelled.

* Update ASSERT

It's possible to get error_code_broken_promise here if the network has
already shutdown.
2022-04-14 12:09:25 -07:00
Xiaoxi Wang 8d3f851495 merge upstream/mainA 2022-04-12 17:03:09 -07:00
Xiaoxi Wang ed97a35dc0 Merge branch 'main' into readaware 2022-04-12 16:47:15 -07:00
Xiaoxi Wang 61a1f7683b fix dd command line read special key space error 2022-04-11 22:49:21 -07:00
Aaron Molitor cbaef8f03b update version to 7.2.0 2022-04-11 23:23:27 -05:00
Xiaoxi Wang 6c841cd32b merge readaware-better 2022-04-11 17:09:39 -07:00
Xiaoxi Wang 82e5859e03 allow safeThreadFutureToFuture 2022-04-11 14:35:12 -07:00
Lukas Joswiak 73a7c32982
Add fdbcli command to read/write version epoch (#6480)
* Initialize cluster version at wall-clock time

Previously, new clusters would begin at version 0. After this change,
clusters will initialize at a version matching wall-clock time. Instead
of using the Unix epoch (or Windows epoch), FDB clusters will use a new
epoch, defaulting to January 1, 2010, 01:00:00+00:00. In the future,
this base epoch will be modifiable through fdbcli, allowing
administrators to advance the cluster version.

Basing the version off of time allows different FDB clusters to share
data without running into version issues.

* Send version epoch to master

* Cleanup

* Update fdbserver/storageserver.actor.cpp

Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>

* Jump directly to expected version if possible

* Fix initial version issue on storage servers

* Add random recovery offset to start version in simulation

* Type fixes

* Disable reference time by default

Enable on a cluster using the fdbcli command `versionepoch add 0`.

* Use correct recoveryTransactionVersion when recovering

* Allow version epoch to be adjusted forwards (to decrease the version)

* Set version epoch in simulation

* Add quiet database check to ensure small version offset

* Fix initial version issue on storage servers

* Disable reference time by default

Enable on a cluster using the fdbcli command `versionepoch add 0`.

* Add fdbcli command to read/write version epoch

* Cause recovery when version epoch is set

* Handle optional version epoch key

* Add ability to clear the version epoch

This causes version advancement to revert to the old methodology whereas
versions attempt to advance by about a million versions per second,
instead of trying to match the clock.

* Update transaction access

* Modify version epoch to use microseconds instead of seconds

* Modify fdbcli version target API

Move commands from `versionepoch` to `targetversion` top level command.

* Add fdbcli tests for

* Temporarily disable targetversion cli tests

* Fix version epoch fetch issue

* Fix Arena issue

* Reduce max version jump in simulation to 1,000,000

* Rework fdbcli API

It now requires two commands to fully switch a cluster to using the
version epoch. First, enable the version epoch with `versionepoch
enable` or `versionepoch set <versionepoch>`. At this point, versions
will be given out at a faster or slower rate in an attempt to reach the
expected version. Then, run `versionepoch commit` to perform a one time
jump to the expected version. This is essentially irreversible.

* Temporarily disable old targetversion tests

* Cleanup

* Move version epoch buggify to sequencer

This will cause some issues with the QuietDatabase check for the version
offset - namely, it won't do anything, since the version epoch is not
being written to the txnStateStore in simulation. This will get fixed in
the future.

Co-authored-by: A.J. Beamon <aj.beamon@snowflake.com>
2022-04-08 12:33:19 -07:00
Xiaoxi Wang 5113277e9a Merge branch 'main' into readaware 2022-04-08 11:50:01 -07:00
Xiaoxi Wang 411550580e merge 2022-04-08 11:49:33 -07:00
neethuhaneesha 5311d93c72
Merge pull request #6783 from neethuhaneesha/rocksdbEngineType
Adding warning on configuring rocksdb storage until production tested.
2022-04-07 13:29:12 -07:00
Xiaoxi Wang 150b4318aa refactor datadistribution command; try dual-mode code 2022-04-06 22:10:23 -07:00
Yi Wu 994b8c92f8
Add option to limit resident memory and remove default memory limit (#6719)
Changing `memory` option to limit resident memory instead of virtual memory, in config file and fdbserver/fdbbackup/fdbcli command-line argument. Since `rlimit` doesn't support limiting virtual memory, the current implementation have both of fdbmonitor and the fdbserver/fdbbackup process checking process RSS periodically and kill and restart the process if the limit is exceeded.

Adding a new `memory_vsize` option to limit virtual memory, if backward-compatible behavior is desired.

closes #6671, closes #6672
2022-04-06 20:06:24 -07:00
Neethu Haneesha Bingi 5d3981821e Adding warning on configuring rocksdb storage until production tested. 2022-04-06 13:24:57 -07:00
Xiaoxi Wang aba9d85560 merge main 2022-04-06 09:57:52 -07:00
Jingyu Zhou f68fd28d73 Refactor duplicated code into IKnobCollection::setupKnobs() 2022-04-05 02:06:38 -07:00
Xiaoxi Wang d6d4596c35
Merge pull request #6709 from sfc-gh-ajbeamon/fix-fdbcli-bugs
Fix issues with command completion for exclude and storage_migration_type
2022-03-30 19:53:49 -07:00
Andrew Noyes d727e7648e Fix a few memory issues found by ASAN 2022-03-29 12:39:12 -07:00
A.J. Beamon 23fcd8c076 Fix issues with command completion for exclude and storage_migration_type. Add missing documentation for tenant_mode in one spot. 2022-03-29 09:07:33 -07:00
Xiaoxi Wang d93b57dd88 conflict solving 2022-03-24 20:45:51 -07:00
Xiaoxi Wang 1b631a9263 solve conflict with main 2022-03-24 16:29:11 -07:00
Josh Slocum f27475e2f4 Merge branch 'main' into blob_integration 2022-03-22 11:41:58 -05:00
sfc-gh-tclinkenbeard a71099471b Update copyright header dates 2022-03-21 13:36:23 -07:00
A.J. Beamon fd81ef99c0
Merge pull request #6561 from sfc-gh-ajbeamon/fdb-tenant-fdbcli
Add fdbcli support for tenants
2022-03-21 11:26:10 -07:00
sfc-gh-tclinkenbeard be875e040d Prevent infinite loop on invalid input to 'throttle off' command 2022-03-18 20:22:49 -07:00
sfc-gh-tclinkenbeard 004e73b2f1 Add TagSet::toString method 2022-03-18 20:10:56 -07:00
sfc-gh-tclinkenbeard fdab73d7b3 Rename TagSet variables in throttleCommandActor.
Previously these were named "tags", conflicting with a state variable,
and creating confusing issues when they go out of scope after a wait
statement.
2022-03-18 19:20:25 -07:00
sfc-gh-tclinkenbeard 6eaa20078f Add ContainsRecommended boolean parameter 2022-03-18 18:12:50 -07:00
sfc-gh-tclinkenbeard 63ec6d5f5b Add static defaultThrottleListLimit in ThrottleCommand.actor.cpp 2022-03-18 17:14:34 -07:00
Josh Slocum 37e7c80f26 Merge branch 'main' into blob_integration 2022-03-17 18:45:42 -05:00
A.J. Beamon a23add6bc4 Add fdbcli test for tenants. Add documentation for new fdbcli tenant commands. Various output cleanup. Fix limit parsing bug in listtenants command. Update gettenant output format. 2022-03-17 12:10:39 -07:00
A.J. Beamon bd64781ad9 Use special keys to manage tenants 2022-03-17 12:10:39 -07:00
A.J. Beamon 4aa053d342 Update tenant mode options in fdbcli 2022-03-17 12:10:39 -07:00
A.J. Beamon f8cddd3842 Add fdbcli support for tenants 2022-03-17 12:10:39 -07:00
Xiaoxi Wang d38b827906 fix DD ignore bug 2022-03-13 23:47:07 -07:00
sfc-gh-tclinkenbeard 8dcac2f76d Fix typos 2022-03-13 10:02:11 -03:00
Renxuan Wang 92ce0de404 When storing coordinators string, we should concatenate by comma.
We are splitting by comma (402fa4dd9e/fdbclient/SpecialKeySpace.actor.cpp (L1686)). So when we concatenating, if we use ", ", there will be an extra space, causing hostname parsing error. NetworkAddress happens not to have the same issue because it uses sscanf (402fa4dd9e/flow/network.cpp (L119)).
2022-03-09 14:28:22 -08:00
Josh Slocum e71b3533f9 Merge branch 'main' into blob_integration 2022-03-09 08:59:56 -06:00
Jingyu Zhou 1a5bf25b5c Update code base to use fmt 8.1.1 2022-03-04 15:52:06 -08:00
Xiaoxi Wang 01c347d45c format code; special key space notice update 2022-03-03 15:38:28 -08:00
Xiaoxi Wang a28b0f4361 Merge branch 'main' of https://github.com/apple/foundationdb into readaware 2022-03-03 11:15:18 -08:00
Xiaoxi Wang 887d5a25cb add storage wiggle to status 2022-03-02 11:31:55 -08:00
Xiaoxi Wang e73c0a31e6 add wiggle_server_ids and wiggle_server_addresses in status json 2022-03-02 10:03:23 -08:00
Renxuan Wang fa2eee8279 Use PRId64 and PRIu64 to replace lld and llu.
This fixes https://github.com/apple/foundationdb/pull/6148#issuecomment-1054575608.
2022-02-28 21:30:14 -08:00
Renxuan Wang 233c918ffb Replace printf() and fprintf() with fmt::print(). 2022-02-25 19:06:57 -08:00
Renxuan Wang f7eb66441d Try eliminating warnings in macOS and Windows CI builds.
MacOS warnings are format warnings, e.g., `format specifies type 'long' but the argument has type 'Version' (aka 'long long')`.
Windows warnings are `ACTOR does not contain a wait() statement`.
2022-02-25 19:06:57 -08:00
Xiaoxi Wang 40a1f562a7 temporary change special key for data distributor 2022-02-25 11:01:23 -08:00
Renxuan Wang 06b1d06d38 Support hostname in coordinators commands. 2022-02-24 23:02:29 -08:00
A.J. Beamon 250a88e682 Enforce that trace event suppression calls happen first when using trace event call chaining. Fix various instances where we weren't following this requirement. 2022-02-24 12:25:52 -08:00
Renxuan Wang 622d89b552 Rebase on main.
Since we changed ClusterConnectionString's status flag from boolean to enum in #6422, we need to update this PR correspondingly.
2022-02-22 16:29:59 -08:00
Renxuan Wang 481587a8c6 Turn on hostname logic. 2022-02-22 16:29:59 -08:00
Xiaoxi Wang 59ac1dffb4 change storage_migration_mode to storage_migration_type 2022-02-22 09:36:30 -08:00
Josh Slocum 38a75a8b89 Merge branch 'main' into blob_integration 2022-02-17 17:47:38 -06:00
A.J. Beamon 5e7982fdd7
Merge pull request #6350 from sfc-gh-ajbeamon/improve-exclude-help
Improve the help for fdbcli exclude
2022-02-11 13:41:59 -08:00
Renxuan Wang e962d8184c Remove the deprecated code.
They were deleted in #5593 but accidentally added back in #5589.
2022-02-08 17:01:29 -08:00
A.J. Beamon 2973130443 Improve the help for fdbcli exclude. 2022-02-07 10:14:42 -08:00
Xiaoxi Wang 6dc5921575
createdTime based storage wiggler (#6219)
* add storagemetadata

* add StorageWiggler;

* fix serverMetadataKey bug

* add metadata tracker in storage tracker

* finish StorageWiggler

* update next storage ID

* change pid to server id

* write metadata when seed SS

* add status json fields

* remove pid based ppw iteration

* fix time expression

* fix tss metadata nonexistence; fix transaction retry when retrieving metadata

* fix checkMetadata bug when store type is wrong

* fix remove storage status json

* format code

* refactor updateNextWigglingStoragePID

* seperate storage metadata tracker and store type tracker

* rename pid

* wiggler stats

* fix completion between waitServerListChange and storageRecruiter

* solve review comments

* rename system key

* fix database lock timeout by adding lock_aware

* format code

* status json

* resolve code format/naming comments

* delete expireNow; change PerpetualStorageWiggleID's value to KeyBackedObjectMap<UID, StorageWiggleValue>

* fix omit start rount

* format code

* status json reset

* solve status json format

* improve status json latency; replace binarywriter/reader to objectwriter/reader; refactor storagewigglerstats transactions

* status timestamp
2022-02-04 15:04:30 -08:00
Ray Jenkins dd45805312
Merge branch 'apple:main' into threadname-issue-6064 2022-02-01 17:40:07 -06:00
A.J. Beamon 65f2c14f31
Merge pull request #6320 from johscheuer/add-fdbcli-loggroup
Add LogGroup support to fdbcli
2022-02-01 09:13:18 -08:00
A.J. Beamon 6ca8f08da8
Merge pull request #6293 from sfc-gh-ajbeamon/fdbcli-print-at-col-stream
Support other output streams in fdbcli printAtCol
2022-01-31 13:16:27 -08:00
Johannes M. Scheuermann 3b0feebd5d Add LogGroup support to fdbcli 2022-01-31 17:47:39 +00:00
Ray Jenkins 783cbb0aea Merge branch 'main' into threadname-issue-6064 2022-01-27 09:57:11 -06:00
A.J. Beamon 2a83e99d6f Support other output streams in fdbcli printAtCol 2022-01-26 14:50:23 -08:00
A.J. Beamon 7989b83450 Use printable when formatting change feed ranges 2022-01-26 14:41:47 -08:00
Ray Jenkins 2c41c4841d Rename linenoise thread name. 2022-01-25 13:21:14 -06:00
Ray Jenkins e9e0d26867 Add thread name for FlowLineNoise. 2022-01-24 19:43:40 -06:00
Ray Jenkins ff0d1e5efa add back special_keys_api_failure error check 2022-01-24 13:32:44 -08:00
Ray Jenkins d3055cc59a Use single transaction for setProcessClass and add fdbcli unit test. 2022-01-24 13:32:44 -08:00
Ray Jenkins d1fe48ce84 Format fix. 2022-01-24 13:32:44 -08:00
Ray Jenkins 9f577a8675 Add state prefix to ThreadFuture. 2022-01-24 13:32:44 -08:00
Ray Jenkins 234760f516 Verify process network address filter before attempting setclass. Provide error message if no matching process addresses found 2022-01-24 13:32:44 -08:00
Johannes M. Scheuermann 2b7990102e Fix typo in comment 2022-01-17 06:08:24 +00:00
A.J. Beamon ff1cb58174 Convert hyphens to underscores for all prefix-based arguments (e.g. --knob-, --locality-) 2021-12-14 12:01:44 -08:00
A.J. Beamon f29f487823
Unify flags (#25)
* Unify flags implementation and change help text in backup.actor.cpp
Description

Testing

* Keep LOG_GROUP unchanged

Description

Testing

* Transfer the hyphens to underscores for internal options and user's input, EXCEPT leading hyphens

Description

Testing

* Use a deep copy of the user's input flag to do the match

Description

Testing

* Convert the _ to - in Option arrays of backup.actor.cpp

Description

Testing

* Transter _ to - for files:
        TLSConfig.actor.h, fdbcli.actor.cpp, fdbserver.actor.cpp, FileConverter.h, FileConverter.cpp

Description

Testing

* Change another way to unify flag: using SO_O_ICASE_HYPHEN_AND_UNDERSCORE to determine whether we do the conversion in function IsEqual

Description

Testing

* Change the config command's name from SO_O_ICASE_HYPHEN_AND_UNDERSCORE to SO_O_HYPHEN_TO_UNDERSCORE

Description

Testing

* Update the comment for the SO_O_HYPHEN_TO_UNDERSCORE

Description

Testing

* Fix left underscore in SOption arrays

Description

Testing

* Convert _ to - in several files for commands

Description

Testing

* Make the FDBService and fdbmonitor backward compatible

Description

Testing

* Fix bugs about pointers

Description

Testing

* Check underscore and hyphen at the same time for --knob_, --localily_ and --test_
And fix bugs in fdbmonitor and FDBService
Description

Testing

* Simplify the function in fdbmonitor and FDBService about retrieving arguments.
And fix some documents in masterserver.actor.cpp

Description

Testing

* Convert _ to - for knob in the setKnob functions

Description

Testing

* Convert - to _ in the setKnob functions

Description
Since key in the knob related maps only contain _

Testing

* Rename varialbe name in the fdbmonitor and FDBService for clarification

Description

Testing

Co-authored-by: Chang Liu <chang.liu@snowflake.com>
2021-12-14 08:44:39 -08:00
Suraj Gupta cb568bbd55 Add watch on config key. 2021-12-10 14:00:34 -06:00
Suraj Gupta fc3376fe8f Move client knob to database config for blob granules. 2021-12-10 14:00:34 -06:00
sfc-gh-tclinkenbeard ec64890ac1 Remove some usages of PRId64 by using fmt library 2021-11-30 23:35:36 -08:00
Trevor Clinkenbeard 3d0ed2083c
Merge pull request #6000 from sfc-gh-tclinkenbeard/setup-flow-knobs
Setup global flow knobs in `setupNetwork`
2021-11-18 19:30:26 -08:00
sfc-gh-tclinkenbeard 2613ec7561 Expand use of fmt to get rid of %ld usage 2021-11-17 17:03:32 -08:00
sfc-gh-tclinkenbeard 07349869d9 Use fmt to address -Wformat warnings 2021-11-17 14:45:48 -08:00
sfc-gh-tclinkenbeard 766a05d33c Merge remote-tracking branch 'origin/master' into add-format-warning 2021-11-17 12:14:01 -08:00
sfc-gh-tclinkenbeard 3b1ae39403 Add CLIOptions::setupKnobs method 2021-11-16 10:39:22 -08:00
sfc-gh-tclinkenbeard deb0eb85e8 Initialize global flow knobs in setupNetwork 2021-11-16 00:41:34 -08:00
Evan Tschannen 6909754b21 changefeeds now have a whenAtLeast function for efficiently learning when the version has updated but no mutations have been committed 2021-11-14 19:08:46 -08:00