1
0
mirror of https://github.com/apple/foundationdb.git synced 2025-06-01 18:56:00 +08:00

18164 Commits

Author SHA1 Message Date
Andrew Noyes
cbadccaad5 Reject preprocessor directives in ACTORs 2022-01-14 11:37:29 -08:00
A.J. Beamon
07e5319477
Merge pull request from sfc-gh-ajbeamon/native-api-refactor
Refactor Native API Transactions
2022-01-13 14:53:19 -08:00
A.J. Beamon
cef5d400f9 Fix issue where enabling debug transaction after the transaction has been used could cause an assertion failure. 2022-01-13 13:43:42 -08:00
A.J. Beamon
17415168b6 Make the use provisional proxies parameter be of type UseProvisionalProxies everywhere. 2022-01-13 12:41:20 -08:00
Trevor Clinkenbeard
de39293b8d
Merge pull request from sfc-gh-tclinkenbeard/testworkload-smart-pointers
Use smart pointers to manage `TestWorkload` objects
2022-01-11 23:33:48 -08:00
sfc-gh-tclinkenbeard
05b94fed03 Add virtual destructor for IWorkloadFactory 2022-01-11 17:00:43 -08:00
Markus Pilman
9757f96631
Merge pull request from sfc-gh-ajbeamon/fix-typo
Fix typo in trace event name
2022-01-11 15:46:39 -07:00
A.J. Beamon
b44ebe0c65 Fix typo in trace event name 2022-01-11 13:22:00 -08:00
Ata E Husain Bohra
0858c6b6b9
Update recovery-internals documentation ()
* Update recovery-internals documentation

Patch updates recovery-internals documentation to record changes
related to CC driving cluster-recovery state machine (earlier driven
by the master)
2022-01-11 13:20:20 -08:00
Markus Pilman
ab76312b42
Merge pull request from sfc-gh-anoyes/anoyes/java-native-headers
Build native headers for jni
2022-01-11 13:46:39 -07:00
Markus Pilman
8b77c8d79a Remove unused OpenSSL code 2022-01-11 10:34:37 -08:00
Lukas Joswiak
8a6bb8611a Update Python libfdb_c paths 2022-01-11 09:34:20 -08:00
Lukas Joswiak
bf9b4aeaab Rename libfdb_c in bindings dir 2022-01-11 09:34:20 -08:00
Lukas Joswiak
ff03fe99ff Add a copy of libfdb_c.so to lib for external client use 2022-01-11 09:34:20 -08:00
Andrew Noyes
64090dd2c0 Suppress a small leak that LSAN is reporting
I cannot seem to figure out why LSAN is reporting this, but if it is a
real leak than it's only a few bytes. Better to have the ASAN tests
actually passing IMO.
2022-01-10 13:44:09 -08:00
Jingyu Zhou
db436fb494 Remove unneeded Arena in Requests/Replies
If the Request/Reply doesn't have *Ref types, we typically don't need to have
an Arena.
2022-01-10 10:26:02 -08:00
Kao Makino
95c72bfc1b Fix malformed JSON 2022-01-10 10:19:11 -08:00
Jingyu Zhou
a71712c985 Update txnStateStore doc with new CC initiated recovery
Also explains what is "txsPoppedVersion" and how it is used in recovery.
2022-01-07 13:29:31 -08:00
Aaron Molitor
6e31821bf5 update download links in documentation 2022-01-06 17:53:35 -08:00
Andrew Noyes
21a5aebc7c Rebuild fat jar if fdbJNI.cpp changes
At least now if you change fdbJNI.cpp it rebuilds the fat jar. I'm
pretty sure there are other problems with incremental recompilation here
but at least this is an improvement.
2022-01-06 15:45:23 -08:00
Andrew Noyes
5e140bc233 Build native headers for jni
This will help ensure that native java functions are implemented with
the right type.
2022-01-06 15:45:23 -08:00
sfc-gh-tclinkenbeard
ac8979d624 Use smart pointers to manage TestWorkload objects 2022-01-06 14:31:50 -08:00
Ata E Husain Bohra
936bf5336a
Revert "Revert "Refactor: ClusterController driving cluster-recovery state machine" ()
* Revert "Revert "Refactor: ClusterController driving cluster-recovery state machine""

Major changes includes:
1. Re-revert Sequencer refactor commits listed below (in listed order):
1.a. This reverts commit bb17e194d9c9888e203421290959bd7f2c075d7f.
1.b. This reverts commit d174bb2e06bff01157d16c652073536c54d17f7f.
1.c. This reverts commit 30b05b469c87d9b526b427751c211fb5cf7ff9cd.

2. Update Status.actor to track ClusterController interface to track
   recovery status.
3. Introduce a ServerKnob to define "cluster recovery trace event"
   prefix; for now keeping it as "Master", however, it should allow
   smooth transition to "Cluster" prefix as it seems more appropriate.
2022-01-06 12:15:51 -08:00
Jon Fu
5c3f6d13af
Merge pull request from sfc-gh-jfu/jfu-ignore-test
Ignore RocksDB unit test
2022-01-06 14:46:32 -05:00
Jon Fu
5757e2c93c Ignore RocksDB unit test 2022-01-06 13:34:50 -05:00
Andrew Noyes
e5f943de08
Merge pull request from sfc-gh-anoyes/anoyes/test-generated-go-up-to-date
Update generated.go, and test to keep it up to date
2022-01-06 09:58:33 -08:00
Jon Fu
a7bfebdd22
Merge pull request from sfc-gh-jfu/jfu-disable-rocksdb-unit-test
Ignore RocksDB unit test by default because correctness breaks when RocksDB is not included
2022-01-05 23:02:52 -05:00
Jon Fu
93c5efc918 Check RocksDB flag in CMakeLists 2022-01-05 21:48:49 -05:00
Jon Fu
e5f7883f63 Ignore RocksDB unit test by default because correctness breaks when RocksDB is not included 2022-01-05 21:47:05 -05:00
Andrew Noyes
a3f37df94a
Merge pull request from sfc-gh-anoyes/anoyes/delete-non-virtual-destructor
Enable -Wdelete-non-virtual-dtor for clang build
2022-01-05 15:41:59 -08:00
A.J. Beamon
d3c88040fc
Merge pull request from sfc-gh-ajbeamon/fix-trace-event
Fix duplicate trace field
2022-01-05 13:30:23 -08:00
A.J. Beamon
59503a397e Fix duplicate trace field. 2022-01-05 11:30:21 -08:00
A.J. Beamon
138932c12f Fixed a memory bug in the watch map. A few other formatting tweaks, etc. 2022-01-05 11:26:43 -08:00
A.J. Beamon
431d3de43b Fix some small bugs 2022-01-04 14:23:00 -08:00
He Liu
30b3789316
Merge pull request from liquid-helium/range-deletion-to-single-deletion
Implement single deletion in RocksDB.
2022-01-04 12:55:58 -08:00
Andrew Noyes
e4bbfe468e
Merge pull request from sfc-gh-anoyes/anoyes/fix-asan-ctest
Fix ctest under ASAN
2022-01-04 10:40:39 -08:00
He Liu
1c2c2783ea Implement single deletion in RocksDB.
If the target deletion range contains a single key, convert it into a
single deletion, to avoid extra cost in RocksDB due to range deletion.
2022-01-04 09:59:40 -08:00
Aaron Molitor
30b05b469c Revert "Refactor: ClusterController driving cluster-recovery state machine"
This reverts commit dfe9d184ff5dd66bdbbc5b984688ac3ebb15b901.
2021-12-24 11:25:51 -08:00
Aaron Molitor
d174bb2e06 Revert "Refactor: ClusterController driving cluster-recovery state machine"
This reverts commit abd2959702b0027ab23b8d42d8082b79c3b197f3.
2021-12-24 11:25:51 -08:00
Aaron Molitor
bb17e194d9 Revert "Refactor: ClusterController driving cluster-recovery state machine"
This reverts commit 1520390bc50614ae7583638c07c033739f40dbfb.
2021-12-24 11:25:51 -08:00
Andrew Noyes
32ebdc6da2 Log status json if cluster is unavailable in fdbcli tests 2021-12-22 15:23:05 -08:00
Andrew Noyes
38a97a2e8f Increase default timeout to 5 minutes for add_fdbclient_test 2021-12-22 15:23:05 -08:00
Andrew Noyes
9ca514401d Suppress known asan stderr message 2021-12-22 15:04:30 -08:00
Andrew Noyes
28971c5181 Fix memory leak. Closes 2021-12-22 15:04:00 -08:00
Andrew Noyes
6fdbd9ae30 Fail test if there's a sev40 in the logs, and output logs if test fails 2021-12-22 15:03:37 -08:00
Andrew Noyes
ebb570422b Format tmp_cluster.py with black 2021-12-22 15:01:54 -08:00
Ata E Husain Bohra
1520390bc5 Refactor: ClusterController driving cluster-recovery state machine
diff-1: Address Jingyu's review comments
 diff-2: Introduce ClusterRecovery actor to seperate out
         cluster recovery code

At present, cluster recovery process consists of following steps:
1. ClusterController clusterWatchDatabase actor recruits
   master/sequencer process.
2. Sequencer process implements the cluster recovery state machine,
   responsible to recruit all other processes as well restore the
   cluster state.

Patch proposes a scheme where the cluster recovery state machine
is implemented and driven by the ClusterController process instead
of the Sequencer process.

Advantages of the scheme could be:
1. Simplified design where ClusterController recruits "sequencer"
   process like other worker processes compared to current scheme
   where "sequencer" process gets special treatment. In newer scheme
   sequencer is responsible for maintaining/providing
   "committed version" (as expected).
2. ClusterController is responsible for worker processes recruitment,
   the sequencer though orchestrating the recovery state machine, it
   need to reachout to the ClusterController for recruiting worker
   processes etc.

NOTE:
Patch has moved the recovery state machine code from
'sequencer' -> 'cluster-controller' process, however, necessary
updates were done for both functionality as well as performance
improvement reasons.

Next Steps:
Cluster recovery documentation will be updated in near future.
2021-12-22 14:06:27 -08:00
Ata E Husain Bohra
abd2959702 Refactor: ClusterController driving cluster-recovery state machine
diff-1: Address Jingyu's review comments

At present, cluster recovery process consists of following steps:
1. ClusterController clusterWatchDatabase actor recruits
   master/sequencer process.
2. Sequencer process implements the cluster recovery state machine,
   responsible to recruit all other processes as well restore the
   cluster state.

Patch proposes a scheme where the cluster recovery state machine
is implemented and driven by the ClusterController process instead
of the Sequencer process.

Advantages of the scheme could be:
1. Simplified design where ClusterController recruits "sequencer"
   process like other worker processes compared to current scheme
   where "sequencer" process gets special treatment. In newer scheme
   sequencer is responsible for maintaining/providing
   "committed version" (as expected).
2. ClusterController is responsible for worker processes recruitment,
   the sequencer though orchestrating the recovery state machine, it
   need to reachout to the ClusterController for recruiting worker
   processes etc.

NOTE:
Patch has moved the recovery state machine code from
'sequencer' -> 'cluster-controller' process, however, necessary
updates were done for both functionality as well as performance
improvement reasons.

Next Steps:
Cluster recovery documentation will be updated in near future.
2021-12-22 14:06:27 -08:00
Ata E Husain Bohra
dfe9d184ff Refactor: ClusterController driving cluster-recovery state machine
At present, cluster recovery process consists of following steps:
1. ClusterController clusterWatchDatabase actor recruits
   master/sequencer process.
2. Sequencer process implements the cluster recovery state machine,
   responsible to recruit all other processes as well restore the
   cluster state.

Patch proposes a scheme where the cluster recovery state machine
is implemented and driven by the ClusterController process instead
of the Sequencer process.

Advantages of the scheme could be:
1. Simplified design where ClusterController recruits "sequencer"
   process like other worker processes compared to current scheme
   where "sequencer" process gets special treatment. In newer scheme
   sequencer is responsible for maintaining/providing
   "committed version" (as expected).
2. ClusterController is responsible for worker processes recruitment,
   the sequencer though orchestrating the recovery state machine, it
   need to reachout to the ClusterController for recruiting worker
   processes etc.

NOTE:
Patch has moved the recovery state machine code from
'sequencer' -> 'cluster-controller' process, however, necessary
updates were done for both functionality as well as performance
improvement reasons.

Next Steps:
Cluster recovery documentation will be updated in near future.
2021-12-22 14:06:27 -08:00
neethuhaneesha
3086941c12
Merge pull request from neethuhaneesha/rocksdbHistograms
KeyValueStoreRocksDB histograms to track latencies
2021-12-22 11:28:36 -08:00