Commit Graph

93 Commits

Author SHA1 Message Date
Syed Paymaan Raza
c3e7542cda Update end year in copyright header 2024-08-02 09:40:11 -07:00
Xiaoge Su
afc04366fb Rewrite BUGGIFY related code
This is a rewrite of BUGGIFY function/macros. Seems the performance
improved a lot during the simulation, e.g.

fdbserver -r simulation -b on -f ../CycleTest.toml -s 99438

Without this patch:

Unseed: 54646
Elapsed: 494.091327 simsec, 14.586831 real seconds

With this patch:

Unseed: 54646
Elapsed: 494.091327 simsec, 12.580612 real seconds

I expected the improvement but did not expect a ~13% improvement.
2024-06-17 11:41:06 -07:00
Markus Pilman
7c19e0d846 fix UID formatting 2023-02-27 11:44:38 -07:00
Xiaoge Su
6701abf09f Remove <regex> from Hostname.h
Wall time: 924.729
Clang time: 13005.9
2023-01-23 21:07:51 -08:00
A.J. Beamon
62604bcc28 Merge branch 'main' into expand-optional-erroror-map 2023-01-04 15:46:23 -08:00
Meng Xu
e6b2254726 Resolve review comments: No functional change 2022-12-19 15:28:01 -08:00
Meng Xu
a1d513b355 Fix:Exclusion stuck because DD cannot build new teams
Bug behavior:
When DD has zero healthy machine teams but more unhealthy machine teams
than the max machine teams DD plans to build, DD will stop building
new machine teams. Due to zero healthy machine team (and zero healthy
server team), DD cannot find a healthy destination team  to relocate data.
When data relocation stops, exclusion stops progressing and stuck.

Bug happens when we *shrink* a k-host cluster by
first adding k/2 new host;
then quickly excluding all old hosts.

Fix:
Let DD build temporary extra teams to relocate data.
The extra teams will be cleaned up later by DD's remove extra teams logic.

Simulation test:
There is no simulation test to cover cluster expansion scnenario.
To most closely simulate this behavior, we intentionally overbuild all possible
machine teams to trigger the condition that unhealthy teams is larger than
the maximum teams DD wants to build later.
2022-12-19 15:28:01 -08:00
A.J. Beamon
985bbe66d4 Add support for flatMap in optional and erroror. Allow calling map with a lambda without specifying the return type template parameter. 2022-12-15 15:32:02 -08:00
A.J. Beamon
f1c5eb55ba Add overloads of the Optional::map and ErrorOr::map functions that allow you to more easily convert to a value's members. Add a similar mapRef function if the wrapped type is a pointer-type. 2022-12-14 15:22:54 -08:00
A.J. Beamon
4fd64630e8 Convert literal string ref instances to use _sr suffix 2022-09-19 11:35:58 -07:00
Junhyun Shim
1e83d7e1ab Apply code review suggestions 2022-07-28 00:47:14 +02:00
Junhyun Shim
d5f7294bd2 Fix failing Mac/BoringSSL build 2022-07-27 01:05:56 +02:00
Junhyun Shim
e2a3fedfc7 Merge branch 'main' into features/authz 2022-07-27 00:08:57 +02:00
Junhyun Shim
908b8faa88 Fix unmatched signatures for BoringSSL 2022-07-21 15:17:34 +02:00
Junhyun Shim
97880880cd Defer Simulation check in OSSL-IRandom binding until g_network is set 2022-07-21 14:52:02 +02:00
Junhyun Shim
f76021fe7b Apply Clang format 2022-07-21 12:12:48 +02:00
Junhyun Shim
e6fe4a62b4 Ensure DeterministicRandom gets used by OpenSSL exclusively in Simulation 2022-07-21 12:11:33 +02:00
Junhyun Shim
b521dc2f58 Bind DeterministicRandom to OpenSSL RNG 2022-07-20 16:03:09 +02:00
Markus Pilman
1de37afd52 Make TEST macros C++ only (#7558)
* proof of concept

* use code-probe instead of test

* code probe working on gcc

* code probe implemented

* renamed TestProbe to CodeProbe

* fixed refactoring typo

* support filtered output

* print probes at end of simulation

* fix missed probes print

* fix deduplication

* Fix refactoring issues

* revert bad refactor

* make sure file paths are relative

* fix more wrong refactor changes
2022-07-19 13:15:51 -07:00
Markus Pilman
03d913a1de Flow compiling 2022-06-27 17:05:55 -06:00
Ata E Husain Bohra
a7cd61c5cf Enable debugId tracing for encryption requests (#7111)
* Enable debugId tracing for encryption requests

Description

   diff-1: Minor fixes, address review comment

Proposed changes include:
1. Update EncryptKeyProxy API to embded Optional<UID> for debugging
   request execution.
2. Encryption participant FDB processes can set 'debugId' enabling
   tracing requests within FDB cluster processes and beyond.
3. The 'debugId' if available is embedded as part of 'request_json_payload'
   by RESTKmsConnector, enabling tracing request between FDB <--> KMS.
4. Fix EncryptKeyProxyTest which got broken due to recent changes.

Testing

Updated following test:
1. EncryptKeyProxy simulation test.
2. RESTKmsConnector simulation test.

Description

Testing
2022-05-11 13:23:27 -07:00
sfc-gh-tclinkenbeard
a71099471b Update copyright header dates 2022-03-21 13:36:23 -07:00
Markus Pilman
a61dd41b45 Add an empty test to make sure noSim tests succeed 2022-02-25 15:38:16 -08:00
Andrew Noyes
7a9217a392 Add contrib/debug_determinism (#6389)
* Add contrib/debug_determinism

Add an instrumentation-based technique for debugging unseen mismatches. Also guard a few existing sources of nondeterminism that don't affect unseen with the DEBUG_DETERMINISM macro.

Also change the simulated run loop to not run as the only task inside the real run loop, since that was a source of nondeterminism.

Also fix nondeterminism from calling timer_int

* Add StorageMetadataType::currentTime

Basically a deterministic-in-simulation version of timer_int that we can
use instead of timer_int for StorageMetadataType::createdTime
2022-02-25 12:54:31 -08:00
sfc-gh-tclinkenbeard
ec64890ac1 Remove some usages of PRId64 by using fmt library 2021-11-30 23:35:36 -08:00
Lukas Joswiak
4cd642be7a Fix some common sampling crashes at high sampling frequencies 2021-09-30 17:25:09 -07:00
Lukas Joswiak
d606392c68 Disable more ALP work when sampling disabled 2021-08-01 20:11:50 -07:00
Lukas Joswiak
4faf83bcb5 Attempt to fix gcc link issue 2021-07-27 11:26:18 -07:00
Lukas Joswiak
59d535149e Merge branch 'master' into fixes/alp6 2021-07-27 10:07:18 -07:00
Lukas Joswiak
e9a1679467 Disable sampling everywhere except fdbserver 2021-07-27 09:53:23 -07:00
Lukas Joswiak
2d248a5926 Collect actors waiting on disk and network 2021-06-17 16:50:34 -07:00
Lukas Joswiak
805c4200ce Add collector to get running actor name 2021-06-16 18:08:51 -07:00
Lukas Joswiak
f938ed6a7e More cleanup 2021-06-15 15:08:17 -07:00
Lukas Joswiak
eb3fb811d4 Cleanup 2021-06-15 15:03:44 -07:00
Lukas Joswiak
4eca095644 Remove scoped lineage 2021-06-15 11:08:57 -07:00
Lukas Joswiak
7753f38053 ThreadSafe, remove getCurrentLineage work 2021-06-14 18:11:37 -07:00
Lukas Joswiak
0ff041222a Add removals back 2021-06-13 18:23:59 -07:00
Lukas Joswiak
112be7a763 Remove most work 2021-06-13 16:19:02 -07:00
Lukas Joswiak
23f4aec641 Remove bad line 2021-06-12 22:38:22 -07:00
Lukas Joswiak
0301072690 Refactor 2021-06-11 13:01:32 -07:00
sfc-gh-tclinkenbeard
399c2c96f0 Remove unnecessary std::string copies from flow 2021-06-09 11:40:01 -07:00
Lukas Joswiak
e9fdbb9c86 Enable sampling 2021-06-07 18:01:14 -07:00
Lukas Joswiak
eb4c4886b2 Remove sample call 2021-06-04 15:01:18 -07:00
Lukas Joswiak
042aa60336 Temporary fix for ld linking issue 2021-06-04 15:01:18 -07:00
Lukas Joswiak
c62e100dfb Attempt gcc compilation fix 2021-06-04 15:01:18 -07:00
Lukas Joswiak
486a04659f Lazy inititialization 2021-06-04 15:01:18 -07:00
Lukas Joswiak
ca79b8eaab Various ALP fixes 2021-06-04 15:01:18 -07:00
Lukas Joswiak
153de33f57 Revert "Merge pull request #4802 from sfc-gh-ljoswiak/revert/actor-lineage"
This reverts commit 6499fa178e, reversing
changes made to 1512631957.
2021-06-04 13:31:55 -07:00
Lukas Joswiak
4ea760b2a9 Revert "Merge pull request #4136 from sfc-gh-mpilman/features/actor-lineage"
This reverts commit da41534618, reversing
changes made to e6300905d6.
2021-05-10 20:26:12 -07:00
Lukas Joswiak
cf4218dfd1 Fixes simulation failures
Fixes the following issues:

1. Use the right index when initializing the WriteOnlySet's vector of
   atomics. Also switch to std::atomic_init to initialize each atomic in
   the vector (cannot default construct the atomics in the vector
   because std::atomic does not have a copy constructor).
2. Add failure check for when items cannot be inserted into the
   WriteOnlySet due to capacity constraints. This situation occurs when
   `copy` is not called on the WriteOnlySet, such as when sampling is
   disabled. The `copy` function is what clears the WriteOnlySet.
3. Remove a global config feature I added to update the ClientDBInfo
   object used by the global config listener function. This needs more
   investigation, but the effect of this change could be that global
   config changes are not correctly recognized on fdbserver processes.
4. Add various ASSERTs to verify data in WriteOnlySet.
2021-05-01 15:26:28 -07:00