* Don't build fdb c shim with ubsan
This avoids duplicate symbols when linking. It doesn't really make sense
to assemble files with -fsanitize=undefined anyway, since it won't
insert instrumentation.
* Consolidate boost_asan with boost_target
* Fix ASAN build
Description
-diff-2: Fix Mac build issues
-diff-1: Address review comments
Patch addresses the issue where ASAN build failed after introducing
BlobGranule compression.
Testing
ASAN build
* REST KmsConnector implementation
Description
diff-1: Address review comments.
Add utility interface to Platform namespace to
create and operate on tmpfile
diff-2: Address review comments
Link Boost::filesystem to CMake build process
Major changes includes:
1. Implement REST based KmsConnector implementation.
2. Salient features of the connector:
2.1. Two required configuration are:
a. Discovery KMS URLs - enable KMS discovery on bootstrap
b. Endpoint path configuration to construct URI to fetch/refresh
encryption keys
c. Configuration to provide "validationTokens" to connect with
external KMS. Patch implements file-based token validation scheme.
2.2. On startup, RESTKmsConnector discovers KMS Urls and caches
them in-memory. Extracts "validationTokens" based on input config.
2.3. Expose endpoints to allow fetch/refresh of encryption keys.
2.4. Defines JSON format to interact with external KMS - request &
response payload format.
3. Extend Platform namespace with an interface to create and operate on
tmp files.
4. Update Platform 'readFileBytes' and 'writeFileBytes' to leverage
fstream supported implementation.
NOTE: KMS URLs fetched after initial discovery will be persisted using
DynamicKnobs. It is TODO at the moment and shall be completed
once DynamicKnobs is feature complete
Testing
Unit test to validation following:
1. Parsing on "validation tokens" logic.
2. Construction and parsing of REST JSON request and response strings.
add Finduring, and include into fdbserver
add BOOST asio/uring settings to fdbserver compile
move portable rocks, liburing up to be configurable at build time.
For boost::context, clang abi and gcc abi are not compatible. In docker
environment, we have different builds, which are located at
gcc version: /opt/boost_1_72_0
clang version: /opt/boost_1_72_0_clang
In this patch, when clang compiler is detected, the clang version of
boost::context is used.
This fixes the "client switching stacks?" warning that valgrind is
currently issuing.
Also fix a memory error that currently doesn't manifest because of the
way FastAllocator works (if you free a small buffer and then immediately
allocate the same size buffer in FastAllocator you always get the same
buffer back). You can see it if you set FDB_VALGRIND_PRECISE= (causes
FastAllocator to use malloc)
Also minor refactoring and cleanup of CoroFlow.actor.cpp
Also (probably) fix the other sanitizer builds, although I didn't test
that
This takes forever on Windows and we want to only
support docker anyways. Currently boost compilation
on Windows doesn't work properly and it's probably
not worth fixing this
- Moved some larger sections in CMakeLists.txt into separate files
- Fixed an include issue on OS X
- Fixed boost version
- Use PROJECT_VERSION by default instead of using versions.target