From 15da6e89c0436bb962e82ca0824ae79b97a37d7f Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Tue, 12 May 2026 15:19:44 +0200 Subject: [PATCH 01/16] Upgrade RocksDB to v11.1.1 --- cmake/BundledRocksDB.cmake | 10 ++++------ extensions/rocksdb-repos/database/RocksDbInstance.cpp | 4 ++-- extensions/rocksdb-repos/tests/RocksDBTests.cpp | 4 ++-- .../all/patches/dboptions_equality_operator.patch | 6 +++--- 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/cmake/BundledRocksDB.cmake b/cmake/BundledRocksDB.cmake index 9d1f4644cc..9e433643c3 100644 --- a/cmake/BundledRocksDB.cmake +++ b/cmake/BundledRocksDB.cmake @@ -23,12 +23,10 @@ function(use_bundled_rocksdb SOURCE_DIR BINARY_DIR) include(LZ4) endif() - set(PATCH_FILE_1 "${SOURCE_DIR}/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch") - set(PATCH_FILE_2 "${SOURCE_DIR}/thirdparty/rocksdb/all/patches/c++23_fixes.patch") + set(PATCH_FILE "${SOURCE_DIR}/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch") set(PC ${Bash_EXECUTABLE} -c "set -x &&\ - (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE_1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE_1}\") &&\ - (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE_2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE_2}\") ") + (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE}\") ") # Define byproducts @@ -71,8 +69,8 @@ function(use_bundled_rocksdb SOURCE_DIR BINARY_DIR) # Build project ExternalProject_Add( rocksdb-external - URL "https://github.com/facebook/rocksdb/archive/refs/tags/v10.2.1.tar.gz" - URL_HASH "SHA256=d1ddfd3551e649f7e2d180d5a6a006d90cfde56dcfe1e548c58d95b7f1c87049" + URL "https://github.com/facebook/rocksdb/archive/refs/tags/v11.1.1.tar.gz" + URL_HASH "SHA256=63f11183fe40725a0e89a9e392f2c86c94b90064f1d95f5173a02cfe40de13f7" SOURCE_DIR "${BINARY_DIR}/thirdparty/rocksdb-src" CMAKE_ARGS ${ROCKSDB_CMAKE_ARGS} PATCH_COMMAND ${PC} diff --git a/extensions/rocksdb-repos/database/RocksDbInstance.cpp b/extensions/rocksdb-repos/database/RocksDbInstance.cpp index 9601bd46fe..3c6de0c03b 100644 --- a/extensions/rocksdb-repos/database/RocksDbInstance.cpp +++ b/extensions/rocksdb-repos/database/RocksDbInstance.cpp @@ -102,7 +102,7 @@ std::optional RocksDbInstance::open(const std::string& column) { if (!impl_) { gsl_Expects(columns_.empty()); // database needs to be (re)opened - rocksdb::DB* db_instance = nullptr; + std::unique_ptr db_instance; rocksdb::Status result; std::vector dbo_patches; @@ -202,7 +202,7 @@ std::optional RocksDbInstance::open(const std::string& column) { gsl_Expects(db_instance); // the patches could have internal resources that we need to keep alive // as long as the database is open (e.g. custom environment) - impl_ = std::make_shared(std::unique_ptr(db_instance), std::move(dbo_patches)); + impl_ = std::make_shared(std::move(db_instance), std::move(dbo_patches)); for (size_t cf_idx{0}; cf_idx < column_handles.size(); ++cf_idx) { ColumnFamilyOptionsPatch cfo_patch; if (auto it = column_configs_.find(column_handles[cf_idx]->GetName()); it != column_configs_.end()) { diff --git a/extensions/rocksdb-repos/tests/RocksDBTests.cpp b/extensions/rocksdb-repos/tests/RocksDBTests.cpp index 7991e1eef7..750bf099fb 100644 --- a/extensions/rocksdb-repos/tests/RocksDBTests.cpp +++ b/extensions/rocksdb-repos/tests/RocksDBTests.cpp @@ -44,7 +44,7 @@ struct RocksDBTest : TestController { } [[nodiscard]] OpenDatabase openDB(const std::vector& cf_names) const { - rocksdb::DB* db_ptr = nullptr; + std::unique_ptr db_ptr; std::vector cf_handle_ptrs; std::vector cf_descs; cf_descs.reserve(cf_names.size()); @@ -57,7 +57,7 @@ struct RocksDBTest : TestController { for (auto cf_ptr : cf_handle_ptrs) { cf_handles[cf_ptr->GetName()].reset(cf_ptr); } - return {std::unique_ptr(db_ptr), std::move(cf_handles)}; + return {std::move(db_ptr), std::move(cf_handles)}; } std::string db_dir; diff --git a/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch b/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch index 2efb91ea0e..f3dd48bddd 100644 --- a/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch +++ b/thirdparty/rocksdb/all/patches/dboptions_equality_operator.patch @@ -1,8 +1,8 @@ diff --git a/include/rocksdb/options.h b/include/rocksdb/options.h -index ae5ed2c26..0038c6bff 100644 +index e99e85c77..e31b374da 100644 --- a/include/rocksdb/options.h +++ b/include/rocksdb/options.h -@@ -397,6 +397,7 @@ struct DbPath { +@@ -456,6 +456,7 @@ struct DbPath { DbPath() : target_size(0) {} DbPath(const std::string& p, uint64_t t) : path(p), target_size(t) {} @@ -10,7 +10,7 @@ index ae5ed2c26..0038c6bff 100644 }; extern const char* kHostnameForDbHostId; -@@ -1008,6 +1009,8 @@ struct DBOptions { +@@ -1214,6 +1215,8 @@ struct DBOptions { // Create DBOptions from Options explicit DBOptions(const Options& options); From 24f690b597831f4b816237e451276841ec147992 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Tue, 12 May 2026 16:53:40 +0200 Subject: [PATCH 02/16] Upgrade date library to v3.0.4 --- cmake/Date.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/Date.cmake b/cmake/Date.cmake index a3d690e9ca..ad0ae665e1 100644 --- a/cmake/Date.cmake +++ b/cmake/Date.cmake @@ -20,8 +20,8 @@ include(FetchContent) if (WIN32) # tzdata and windowsZones.xml from unicode cldr-common are required to be installed for date-tz operation on Windows FetchContent_Declare(tzdata - URL https://data.iana.org/time-zones/releases/tzdata2020e.tar.gz - URL_HASH SHA256=0be1ba329eae29ae1b54057c3547b3e672f73b3ae7643aa87dac85122bec037e + URL https://data.iana.org/time-zones/releases/tzdata2026b.tar.gz + URL_HASH SHA256=114543d9f19a6bfeb5bca43686aea173d38755a3db1f2eec112647ae92c6f544 SYSTEM ) FetchContent_GetProperties(tzdata) @@ -47,8 +47,8 @@ if (WIN32) endif() FetchContent_Declare(date_src - URL https://github.com/HowardHinnant/date/archive/1ead6715dec030d340a316c927c877a3c4e5a00c.tar.gz # master as of 2024-06-28 - URL_HASH SHA256=8b4096b7b49e06d756f4aa0949151863ab7b812679a1646039fab6e821d3c049 + URL https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.4.tar.gz + URL_HASH SHA256=56e05531ee8994124eeb498d0e6a5e1c3b9d4fccbecdf555fe266631368fb55f SYSTEM ) FetchContent_GetProperties(date_src) From cba1261ea5c8c9a7cc3bdfb92d5478784d8db21e Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 11:25:52 +0200 Subject: [PATCH 03/16] Upgrade libarchive to v3.8.7 --- cmake/BundledLibArchive.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/BundledLibArchive.cmake b/cmake/BundledLibArchive.cmake index ccaeb60414..ac8919d242 100644 --- a/cmake/BundledLibArchive.cmake +++ b/cmake/BundledLibArchive.cmake @@ -68,8 +68,8 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR) ExternalProject_Add( libarchive-external - URL "https://github.com/libarchive/libarchive/releases/download/v3.8.1/libarchive-3.8.1.tar.gz" - URL_HASH "SHA256=bde832a5e3344dc723cfe9cc37f8e54bde04565bfe6f136bc1bd31ab352e9fab" + URL "https://github.com/libarchive/libarchive/archive/refs/tags/v3.8.7.tar.gz" + URL_HASH "SHA256=bc942030fe7cb30e04eed31bd5f63c38cdfd712315b303e91b64e58f05db2346" SOURCE_DIR "${BINARY_DIR}/thirdparty/libarchive-src" LIST_SEPARATOR % # This is needed for passing semicolon-separated lists CMAKE_ARGS ${LIBARCHIVE_CMAKE_ARGS} From d66661e8af6045458e7c11b6cf1eb165678e96ab Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 11:40:07 +0200 Subject: [PATCH 04/16] Upgrade asio library to v1.38.0 --- cmake/Asio.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Asio.cmake b/cmake/Asio.cmake index 4c351dc8b3..0d03f6e882 100644 --- a/cmake/Asio.cmake +++ b/cmake/Asio.cmake @@ -18,15 +18,15 @@ include(FetchContent) FetchContent_Declare(asio - URL https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-1-34-2.tar.gz - URL_HASH SHA256=f3bac015305fbb700545bd2959fbc52d75a1ec2e05f9c7f695801273ceb78cf5 + URL https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-1-38-0.tar.gz + URL_HASH SHA256=5cf78ede456fd13b95fe692711f4f689be26c826f1f5541c7a1df3aa32bd9dbd SYSTEM) FetchContent_GetProperties(asio) if(NOT asio_POPULATED) FetchContent_Populate(asio) add_library(asio INTERFACE) - target_include_directories(asio SYSTEM INTERFACE ${asio_SOURCE_DIR}/asio/include) + target_include_directories(asio SYSTEM INTERFACE ${asio_SOURCE_DIR}/include) find_package(Threads) target_link_libraries(asio INTERFACE Threads::Threads OpenSSL::SSL OpenSSL::Crypto) endif() From 564751fe2a345c8879f404704a4562fdc0f2691a Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 11:55:31 +0200 Subject: [PATCH 05/16] Upgrade azure sdk and wil library to latest version --- cmake/AzureSdkCpp.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/AzureSdkCpp.cmake b/cmake/AzureSdkCpp.cmake index d7d616e880..c910261487 100644 --- a/cmake/AzureSdkCpp.cmake +++ b/cmake/AzureSdkCpp.cmake @@ -22,8 +22,8 @@ if (WIN32) FetchContent_Declare( wil - URL https://github.com/microsoft/wil/archive/refs/tags/v1.0.250325.1.tar.gz - URL_HASH SHA256=c9e667d5f86ded43d17b5669d243e95ca7b437e3a167c170805ffd4aa8a9a786 + URL https://github.com/microsoft/wil/archive/refs/tags/v1.0.260126.7.tar.gz + URL_HASH SHA256=de9e03b38ff0ff8d22048f00b111cb631d21c550328f12530ccba71c05c9e361 SYSTEM ) FetchContent_MakeAvailable(wil) @@ -54,8 +54,8 @@ set(PC ${Bash_EXECUTABLE} -c "set -x &&\ (\\\"${Patch_EXECUTABLE}\\\" -p1 -R -s -f --dry-run -i \\\"${PATCH_FILE_4}\\\" || \\\"${Patch_EXECUTABLE}\\\" -p1 -N -i \\\"${PATCH_FILE_4}\\\")") FetchContent_Declare(asdkext - URL https://github.com/Azure/azure-sdk-for-cpp/archive/refs/tags/azure-identity_1.13.0.tar.gz - URL_HASH "SHA256=a18ce70f8da11266b6a1aec3c02233ca889ea6137471a9f633131f00dfd386c0" + URL https://github.com/Azure/azure-sdk-for-cpp/archive/refs/tags/azure-storage-queues_12.7.0.tar.gz + URL_HASH "SHA256=a2d52cf30a36c1000cd6ee87fa60d5e3aa8d5b01a1716e5bc684dd5a507d76d5" PATCH_COMMAND "${PC}" SYSTEM ) From 068e7bbb46f31ffc7ea02bf8a50dda4e6187717f Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 12:30:44 +0200 Subject: [PATCH 06/16] Upgrade catch2 library to v3.15.0 --- cmake/Catch2.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Catch2.cmake b/cmake/Catch2.cmake index 0ff92766f5..9f6f242cf0 100644 --- a/cmake/Catch2.cmake +++ b/cmake/Catch2.cmake @@ -20,8 +20,8 @@ include(FetchContent) FetchContent_Declare( Catch2 - URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.9.1.tar.gz - URL_HASH SHA256=a215c2a723bd7483efd236dc86066842a389cb4e344c61119c978acdf24d39be + URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.15.0.tar.gz + URL_HASH SHA256=9650c55e497759cc39b977e45524bc8acb15256061c112080916ab6cb0b1ea66 SYSTEM ) FetchContent_MakeAvailable(Catch2) From 0c9ab82243d00b321c8536ed09ac72c97678cc49 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 13:10:12 +0200 Subject: [PATCH 07/16] Upgrade lixml2 to v2.15.3 --- cmake/LibXml2.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/LibXml2.cmake b/cmake/LibXml2.cmake index 0e3f5d0175..285f9ca476 100644 --- a/cmake/LibXml2.cmake +++ b/cmake/LibXml2.cmake @@ -26,8 +26,8 @@ set(LIBXML2_WITH_ICU OFF CACHE BOOL "" FORCE) include(FetchContent) FetchContent_Declare( libxml2 - URL https://github.com/GNOME/libxml2/archive/refs/tags/v2.15.0.tar.gz - URL_HASH SHA256=e24bd5209afefe390e704ebc55649c7ae240e1f157cefd433ccc86c610d20aac + URL https://github.com/GNOME/libxml2/archive/refs/tags/v2.15.3.tar.gz + URL_HASH SHA256=5c6060277173270356c3f1c321a640ab629bdabc5e5ba9095b99e00759ba0c39 SYSTEM ) FetchContent_MakeAvailable(libxml2) From 6a35f09bdcf0c4af891746e131e66ac34ce0d850 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 13:19:34 +0200 Subject: [PATCH 08/16] Upgrade spdlog library to v1.17.0 --- cmake/Spdlog.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Spdlog.cmake b/cmake/Spdlog.cmake index 6fa3716741..f70d47a276 100644 --- a/cmake/Spdlog.cmake +++ b/cmake/Spdlog.cmake @@ -22,8 +22,8 @@ set(SPDLOG_FMT_EXTERNAL ON CACHE STRING "" FORCE) set(SPDLOG_SYSTEM_INCLUDES ON CACHE STRING "" FORCE) FetchContent_Declare(Spdlog - URL https://github.com/gabime/spdlog/archive/refs/tags/v1.15.3.tar.gz - URL_HASH SHA256=15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67 + URL https://github.com/gabime/spdlog/archive/refs/tags/v1.17.0.tar.gz + URL_HASH SHA256=d8862955c6d74e5846b3f580b1605d2428b11d97a410d86e2fb13e857cd3a744 OVERRIDE_FIND_PACKAGE SYSTEM ) From 3abe9fd73c1988466c59254c95e77ef98ae1ed9a Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Thu, 14 May 2026 11:28:27 +0200 Subject: [PATCH 09/16] Upgrade curl to v8.20.0 --- cmake/FetchLibcURL.cmake | 4 ++-- thirdparty/curl/module-path.patch | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cmake/FetchLibcURL.cmake b/cmake/FetchLibcURL.cmake index 3b3637f3de..0ee08ba791 100644 --- a/cmake/FetchLibcURL.cmake +++ b/cmake/FetchLibcURL.cmake @@ -26,8 +26,8 @@ set(PC "${Patch_EXECUTABLE}" -p1 -i "${PATCH_FILE}") FetchContent_Declare( curl - URL "https://github.com/curl/curl/releases/download/curl-8_19_0/curl-8.19.0.tar.gz" - URL_HASH "SHA256=2a2c11db4c122691aa23b4363befda1bfd801770bfebf41e1d21cee4f2ab0f71" + URL "https://github.com/curl/curl/archive/refs/tags/curl-8_20_0.tar.gz" + URL_HASH "SHA256=738fe8ae973a6f171b4e7cf7146edd19894e19f09cd45a3b673ebdba3549a435" PATCH_COMMAND ${PC} SYSTEM OVERRIDE_FIND_PACKAGE diff --git a/thirdparty/curl/module-path.patch b/thirdparty/curl/module-path.patch index f141cc38fe..16c6775dea 100644 --- a/thirdparty/curl/module-path.patch +++ b/thirdparty/curl/module-path.patch @@ -1,11 +1,12 @@ -diff -rupN a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt 2026-01-07 07:57:50.000000000 +0100 -+++ b/CMakeLists.txt 2026-02-06 16:52:59.927109936 +0100 -@@ -45,7 +45,7 @@ if(NOT "$ENV{CURL_BUILDINFO}$ENV{CURL_CI +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5dd9c7aa70..d92ca3ae78 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -45,7 +45,7 @@ if(NOT "$ENV{CURL_BUILDINFO}$ENV{CURL_CI}$ENV{CI}" STREQUAL "") endforeach() endif() - --set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) + +-list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") include(Utilities) include(Macros) From 34def5fb9d9050252ca2d6a57bfe51c76f0e69a8 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Wed, 13 May 2026 16:55:55 +0200 Subject: [PATCH 10/16] Upgrade libsodium to v1.0.22 --- cmake/BundledLibSodium.cmake | 8 +- thirdparty/libsodium/libsodium.patch | 213 ++++++++++++++++----------- 2 files changed, 129 insertions(+), 92 deletions(-) diff --git a/cmake/BundledLibSodium.cmake b/cmake/BundledLibSodium.cmake index 001a90dad5..b7678aebfb 100644 --- a/cmake/BundledLibSodium.cmake +++ b/cmake/BundledLibSodium.cmake @@ -40,10 +40,10 @@ function(use_bundled_libsodium SOURCE_DIR BINARY_DIR) endif() # Build project - set(LIBSODIUM_OFFICIAL_MIRROR_URL https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz) - set(LIBSODIUM_GITHUB_MIRROR_URL https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz) - set(LIBSODIUM_GENTOO_MIRROR_URL https://gentoo.osuosl.org/distfiles/libsodium-1.0.18.tar.gz) - set(LIBSODIUM_URL_HASH "SHA256=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1") + set(LIBSODIUM_OFFICIAL_MIRROR_URL https://download.libsodium.org/libsodium/releases/libsodium-1.0.22.tar.gz) + set(LIBSODIUM_GITHUB_MIRROR_URL https://github.com/jedisct1/libsodium/releases/download/1.0.22-RELEASE/libsodium-1.0.22.tar.gz) + set(LIBSODIUM_GENTOO_MIRROR_URL https://gentoo.osuosl.org/distfiles/libsodium-1.0.22.tar.gz) + set(LIBSODIUM_URL_HASH "SHA256=adbdd8f16149e81ac6078a03aca6fc03b592b89ef7b5ed83841c086191be3349") if (WIN32) ExternalProject_Add( diff --git a/thirdparty/libsodium/libsodium.patch b/thirdparty/libsodium/libsodium.patch index 5ac1b7cac6..f0ac789643 100644 --- a/thirdparty/libsodium/libsodium.patch +++ b/thirdparty/libsodium/libsodium.patch @@ -2,120 +2,157 @@ We can't run the configure script on Windows, and the only thing libsodium provi for Windows are msbuild files which do not integrate well into our CMake build system, so we create a Windows-specific CMakeLists.txt for the project. -diff -rupN original/CMakeLists.txt patched/CMakeLists.txt ---- original/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ patched/CMakeLists.txt 2020-09-24 13:32:12.368714100 +0200 -@@ -0,0 +1,146 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 00000000..a59da828 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,181 @@ +cmake_minimum_required(VERSION 3.7) + +project(libsodium) + -+set(SOURCES src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c -+ src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c -+ src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c -+ src/libsodium/crypto_auth/crypto_auth.c -+ src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c -+ src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c -+ src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c ++set(SOURCES src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c ++ src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c ++ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c ++ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c ++ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c ++ src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c ++ src/libsodium/crypto_generichash/blake2b/generichash_blake2.c ++ src/libsodium/crypto_generichash/crypto_generichash.c ++ src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c ++ src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c ++ src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c ++ src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c ++ src/libsodium/crypto_shorthash/crypto_shorthash.c ++ src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c ++ src/libsodium/crypto_core/hchacha20/core_hchacha20.c ++ src/libsodium/crypto_core/softaes/softaes.c ++ src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c ++ src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c ++ src/libsodium/crypto_core/keccak1600/keccak1600.c ++ src/libsodium/crypto_core/keccak1600/ref/keccak1600_ref.c ++ src/libsodium/crypto_core/keccak1600/armsha3/keccak1600_armsha3.c ++ src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c ++ src/libsodium/crypto_core/ed25519/core_ed25519.c ++ src/libsodium/crypto_core/ed25519/core_ristretto255.c ++ src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c ++ src/libsodium/crypto_aead/chacha20poly1305/aead_chacha20poly1305.c ++ src/libsodium/crypto_aead/aegis128l/aegis128l_aesni.c ++ src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c ++ src/libsodium/crypto_aead/aegis128l/aegis128l_soft.c ++ src/libsodium/crypto_aead/aegis128l/aead_aegis128l.c ++ src/libsodium/crypto_aead/xchacha20poly1305/aead_xchacha20poly1305.c ++ src/libsodium/crypto_aead/aes256gcm/aead_aes256gcm.c ++ src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c ++ src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c ++ src/libsodium/crypto_aead/aegis256/aead_aegis256.c ++ src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c ++ src/libsodium/crypto_aead/aegis256/aegis256_aesni.c ++ src/libsodium/crypto_aead/aegis256/aegis256_soft.c ++ src/libsodium/crypto_box/crypto_box_seal.c + src/libsodium/crypto_box/crypto_box.c + src/libsodium/crypto_box/crypto_box_easy.c -+ src/libsodium/crypto_box/crypto_box_seal.c + src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c + src/libsodium/crypto_box/curve25519xchacha20poly1305/box_seal_curve25519xchacha20poly1305.c + src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305.c -+ src/libsodium/crypto_core/ed25519/core_ed25519.c -+ src/libsodium/crypto_core/ed25519/core_ristretto255.c -+ src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c -+ src/libsodium/crypto_core/hchacha20/core_hchacha20.c -+ src/libsodium/crypto_core/hsalsa20/core_hsalsa20.c -+ src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20_ref2.c -+ src/libsodium/crypto_core/salsa/ref/core_salsa_ref.c -+ src/libsodium/crypto_generichash/blake2b/generichash_blake2.c -+ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-avx2.c -+ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ref.c -+ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-sse41.c -+ src/libsodium/crypto_generichash/blake2b/ref/blake2b-compress-ssse3.c -+ src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c -+ src/libsodium/crypto_generichash/blake2b/ref/generichash_blake2b.c -+ src/libsodium/crypto_generichash/crypto_generichash.c -+ src/libsodium/crypto_hash/crypto_hash.c -+ src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c -+ src/libsodium/crypto_hash/sha256/hash_sha256.c + src/libsodium/crypto_hash/sha512/cp/hash_sha512_cp.c + src/libsodium/crypto_hash/sha512/hash_sha512.c ++ src/libsodium/crypto_hash/crypto_hash.c ++ src/libsodium/crypto_hash/sha256/hash_sha256.c ++ src/libsodium/crypto_hash/sha256/cp/hash_sha256_cp.c ++ src/libsodium/crypto_hash/sha3/hash_sha3.c ++ src/libsodium/crypto_sign/ed25519/ref10/open.c ++ src/libsodium/crypto_sign/ed25519/ref10/sign.c ++ src/libsodium/crypto_sign/ed25519/ref10/obsolete.c ++ src/libsodium/crypto_sign/ed25519/ref10/keypair.c ++ src/libsodium/crypto_sign/ed25519/sign_ed25519.c ++ src/libsodium/crypto_sign/crypto_sign.c ++ src/libsodium/crypto_secretbox/crypto_secretbox_easy.c ++ src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c ++ src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c ++ src/libsodium/crypto_secretbox/crypto_secretbox.c ++ src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c ++ src/libsodium/crypto_auth/crypto_auth.c ++ src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c ++ src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256.c ++ src/libsodium/crypto_ipcrypt/crypto_ipcrypt.c ++ src/libsodium/crypto_ipcrypt/ipcrypt_armcrypto.c ++ src/libsodium/crypto_ipcrypt/ipcrypt_aesni.c ++ src/libsodium/crypto_ipcrypt/ipcrypt_soft.c ++ src/libsodium/sodium/version.c ++ src/libsodium/sodium/codecs.c ++ src/libsodium/sodium/core.c ++ src/libsodium/sodium/utils.c ++ src/libsodium/sodium/runtime.c ++ src/libsodium/crypto_kx/crypto_kx.c ++ src/libsodium/crypto_kem/mlkem768/ref/kem_mlkem768_ref.c ++ src/libsodium/crypto_kem/mlkem768/kem_mlkem768.c ++ src/libsodium/crypto_kem/xwing/kem_xwing.c ++ src/libsodium/crypto_kem/crypto_kem.c + src/libsodium/crypto_kdf/blake2b/kdf_blake2b.c + src/libsodium/crypto_kdf/crypto_kdf.c -+ src/libsodium/crypto_kx/crypto_kx.c ++ src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha256.c ++ src/libsodium/crypto_kdf/hkdf/kdf_hkdf_sha512.c ++ src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c ++ src/libsodium/crypto_stream/salsa20/stream_salsa20.c ++ src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c ++ src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c ++ src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c ++ src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c ++ src/libsodium/crypto_stream/salsa208/stream_salsa208.c ++ src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c ++ src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c ++ src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c ++ src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c ++ src/libsodium/crypto_stream/crypto_stream.c ++ src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c ++ src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c ++ src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c ++ src/libsodium/crypto_stream/chacha20/stream_chacha20.c ++ src/libsodium/crypto_verify/verify.c + src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c -+ src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c -+ src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c + src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c -+ src/libsodium/crypto_pwhash/argon2/argon2-core.c -+ src/libsodium/crypto_pwhash/argon2/argon2-encoding.c ++ src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c ++ src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c ++ src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c ++ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-wasm32.c + src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx2.c -+ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c + src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ref.c -+ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c ++ src/libsodium/crypto_pwhash/argon2/argon2-core.c ++ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-neon.c + src/libsodium/crypto_pwhash/argon2/argon2.c -+ src/libsodium/crypto_pwhash/argon2/blake2b-long.c ++ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-ssse3.c ++ src/libsodium/crypto_pwhash/argon2/argon2-fill-block-avx512f.c + src/libsodium/crypto_pwhash/argon2/pwhash_argon2i.c + src/libsodium/crypto_pwhash/argon2/pwhash_argon2id.c ++ src/libsodium/crypto_pwhash/argon2/argon2-encoding.c ++ src/libsodium/crypto_pwhash/argon2/blake2b-long.c + src/libsodium/crypto_pwhash/crypto_pwhash.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt-common.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse/pwhash_scryptsalsa208sha256_nosse.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/scrypt_platform.c -+ src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse/pwhash_scryptsalsa208sha256_sse.c -+ src/libsodium/crypto_scalarmult/crypto_scalarmult.c -+ src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c ++ src/libsodium/crypto_xof/shake256/ref/shake256_ref.c ++ src/libsodium/crypto_xof/shake256/xof_shake256.c ++ src/libsodium/crypto_xof/turboshake256/ref/turboshake256_ref.c ++ src/libsodium/crypto_xof/turboshake256/xof_turboshake256.c ++ src/libsodium/crypto_xof/shake128/ref/shake128_ref.c ++ src/libsodium/crypto_xof/shake128/xof_shake128.c ++ src/libsodium/crypto_xof/turboshake128/ref/turboshake128_ref.c ++ src/libsodium/crypto_xof/turboshake128/xof_turboshake128.c ++ src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c ++ src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c + src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c -+ src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c + src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c -+ src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c ++ src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c ++ src/libsodium/crypto_scalarmult/curve25519/ref10/x25519_ref10.c + src/libsodium/crypto_scalarmult/ed25519/ref10/scalarmult_ed25519_ref10.c -+ src/libsodium/crypto_scalarmult/ristretto255/ref10/scalarmult_ristretto255_ref10.c -+ src/libsodium/crypto_secretbox/crypto_secretbox.c -+ src/libsodium/crypto_secretbox/crypto_secretbox_easy.c -+ src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c -+ src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305.c -+ src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c -+ src/libsodium/crypto_shorthash/crypto_shorthash.c -+ src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c -+ src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c -+ src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24.c -+ src/libsodium/crypto_shorthash/siphash24/shorthash_siphashx24.c -+ src/libsodium/crypto_sign/crypto_sign.c -+ src/libsodium/crypto_sign/ed25519/ref10/keypair.c -+ src/libsodium/crypto_sign/ed25519/ref10/obsolete.c -+ src/libsodium/crypto_sign/ed25519/ref10/open.c -+ src/libsodium/crypto_sign/ed25519/ref10/sign.c -+ src/libsodium/crypto_sign/ed25519/sign_ed25519.c -+ src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx2.c -+ src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-ssse3.c -+ src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c -+ src/libsodium/crypto_stream/chacha20/stream_chacha20.c -+ src/libsodium/crypto_stream/crypto_stream.c -+ src/libsodium/crypto_stream/salsa20/ref/salsa20_ref.c -+ src/libsodium/crypto_stream/salsa20/stream_salsa20.c -+ src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6.c -+ src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx2.c -+ src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-sse2.c -+ src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012_ref.c -+ src/libsodium/crypto_stream/salsa2012/stream_salsa2012.c -+ src/libsodium/crypto_stream/salsa208/ref/stream_salsa208_ref.c -+ src/libsodium/crypto_stream/salsa208/stream_salsa208.c -+ src/libsodium/crypto_stream/xchacha20/stream_xchacha20.c -+ src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20.c -+ src/libsodium/crypto_verify/sodium/verify.c -+ src/libsodium/randombytes/internal/randombytes_internal_random.c ++ src/libsodium/crypto_scalarmult/crypto_scalarmult.c + src/libsodium/randombytes/randombytes.c + src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c -+ src/libsodium/sodium/codecs.c -+ src/libsodium/sodium/core.c -+ src/libsodium/sodium/runtime.c -+ src/libsodium/sodium/utils.c -+ src/libsodium/sodium/version.c) ++ src/libsodium/randombytes/internal/randombytes_internal_random.c) + +if(WIN32) + configure_file(builds/msvc/version.h version.h COPYONLY) From c6826c8dc992049e30bcba1b125aaa956ee9c5f8 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Thu, 14 May 2026 13:13:35 +0200 Subject: [PATCH 11/16] Upgrade gcp library to v2.47.1 --- cmake/GoogleCloudCpp.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/GoogleCloudCpp.cmake b/cmake/GoogleCloudCpp.cmake index 0d34e78568..4042cb0ae6 100644 --- a/cmake/GoogleCloudCpp.cmake +++ b/cmake/GoogleCloudCpp.cmake @@ -49,8 +49,8 @@ set(GOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK OFF CACHE INTERNAL macos-openssl set(BUILD_TESTING OFF CACHE INTERNAL testing-off) set(GOOGLE_CLOUD_CPP_ENABLE_WERROR OFF CACHE INTERNAL warnings-off) FetchContent_Declare(google-cloud-cpp - URL https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.45.0.tar.gz - URL_HASH SHA256=3d1b5eb696832f9071bf7ef0b3f0c9fd27c1a39d5edcb8a9976c65193319fd01 + URL https://github.com/googleapis/google-cloud-cpp/archive/refs/tags/v2.47.1.tar.gz + URL_HASH SHA256=8863056af88460e449264a976f64a0c9f4f3d98477cdad7770c2dca353fea68c PATCH_COMMAND "${PC}" SYSTEM) if (WIN32) From 2b1cd7d02e381e17532c67a6488826186451f4d0 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Fri, 15 May 2026 10:21:15 +0200 Subject: [PATCH 12/16] Upgrade openssl lib to v3.6.2 --- cmake/BundledOpenSSL.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/BundledOpenSSL.cmake b/cmake/BundledOpenSSL.cmake index cc83b5c173..fdc1afc610 100644 --- a/cmake/BundledOpenSSL.cmake +++ b/cmake/BundledOpenSSL.cmake @@ -84,7 +84,7 @@ function(use_openssl SOURCE_DIR BINARY_DIR) "-DCMAKE_VISIBILITY_INLINES_HIDDEN=ON" ) - set(OPENSSL_VERSION "3.3.6" CACHE STRING "" FORCE) + set(OPENSSL_VERSION "3.6.2" CACHE STRING "" FORCE) if (WIN32) find_program(JOM_EXECUTABLE_PATH @@ -104,7 +104,7 @@ function(use_openssl SOURCE_DIR BINARY_DIR) ExternalProject_Add( openssl-external URL "https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz" - URL_HASH "SHA256=22db04f3c8f9a808c9795dcf7d2713ff40c12c410ea2d1f6435c6c9c8558958b" + URL_HASH "SHA256=aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f" SOURCE_DIR "${BINARY_DIR}/thirdparty/openssl-src" BUILD_IN_SOURCE true CONFIGURE_COMMAND perl Configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${OPENSSL_C_FLAGS} ${OPENSSL_WINDOWS_COMPILE_FLAGS}" "CXXFLAGS=${PASSTHROUGH_CMAKE_CXX_FLAGS} ${OPENSSL_WINDOWS_COMPILE_FLAGS}" ${OPENSSL_SHARED_FLAG} ${OPENSSL_EXTRA_FLAGS} "--prefix=${OPENSSL_BIN_DIR}" "--openssldir=${OPENSSL_BIN_DIR}" @@ -119,7 +119,7 @@ function(use_openssl SOURCE_DIR BINARY_DIR) ExternalProject_Add( openssl-external URL "https://github.com/openssl/openssl/releases/download/openssl-${OPENSSL_VERSION}/openssl-${OPENSSL_VERSION}.tar.gz" - URL_HASH "SHA256=22db04f3c8f9a808c9795dcf7d2713ff40c12c410ea2d1f6435c6c9c8558958b" + URL_HASH "SHA256=aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f" SOURCE_DIR "${BINARY_DIR}/thirdparty/openssl-src" BUILD_IN_SOURCE true CONFIGURE_COMMAND ./Configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${OPENSSL_C_FLAGS} -fPIC" "CXXFLAGS=${PASSTHROUGH_CMAKE_CXX_FLAGS} -fPIC" ${OPENSSL_SHARED_FLAG} ${OPENSSL_EXTRA_FLAGS} "--prefix=${OPENSSL_BIN_DIR}" "--openssldir=${OPENSSL_BIN_DIR}" From d51523b5c2aabe516885cdc2d8f50bc2be6be998 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Fri, 15 May 2026 10:34:48 +0200 Subject: [PATCH 13/16] Upgrade AWS SDK to v1.11.807 --- cmake/BundledAwsSdkCpp.cmake | 2 +- .../azure/tests/features/containers/azure_server_container.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/BundledAwsSdkCpp.cmake b/cmake/BundledAwsSdkCpp.cmake index 1b41cee1e1..cdcb613d5e 100644 --- a/cmake/BundledAwsSdkCpp.cmake +++ b/cmake/BundledAwsSdkCpp.cmake @@ -109,7 +109,7 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR) ExternalProject_Add( aws-sdk-cpp-external GIT_REPOSITORY "https://github.com/aws/aws-sdk-cpp.git" - GIT_TAG "1.11.771" + GIT_TAG "1.11.807" UPDATE_COMMAND git submodule update --init --recursive SOURCE_DIR "${BINARY_DIR}/thirdparty/aws-sdk-cpp-src" INSTALL_DIR "${BINARY_DIR}/thirdparty/libaws-install" diff --git a/extensions/azure/tests/features/containers/azure_server_container.py b/extensions/azure/tests/features/containers/azure_server_container.py index 72d7d686be..7d99ae912e 100644 --- a/extensions/azure/tests/features/containers/azure_server_container.py +++ b/extensions/azure/tests/features/containers/azure_server_container.py @@ -34,6 +34,7 @@ def __init__(self, test_context: MinifiTestContext): azure_storage_hostname = f"azure-storage-server-{test_context.scenario_id}" self.azure_connection_string = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;" \ f"BlobEndpoint=http://{azure_storage_hostname}:10000/devstoreaccount1;QueueEndpoint=http://{azure_storage_hostname}:10001/devstoreaccount1;" + self.command = ["azurite", "-l", "/data", "--blobHost", "0.0.0.0", "--queueHost", "0.0.0.0", "--tableHost", "0.0.0.0", "--skipApiVersionCheck"] def deploy(self, context: MinifiTestContext | None) -> bool: super().deploy(context) From 12e4c5191a7afc13f750cf29178e4c763860ff1e Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Fri, 15 May 2026 10:35:52 +0200 Subject: [PATCH 14/16] Remove RTIMULib --- cmake/BundledRTIMULib.cmake | 51 ------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 cmake/BundledRTIMULib.cmake diff --git a/cmake/BundledRTIMULib.cmake b/cmake/BundledRTIMULib.cmake deleted file mode 100644 index 6b0cdd82b4..0000000000 --- a/cmake/BundledRTIMULib.cmake +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -function(use_bundled_rtimulib SOURCE_DIR BINARY_DIR) - # Define byproducts - if (WIN32) - set(BYPRODUCT "RTIMULib.lib") - else() - set(BYPRODUCT "libRTIMULib.a") - endif() - - # Build project - ExternalProject_Add( - rtimulib-external - SOURCE_DIR "${SOURCE_DIR}/thirdparty/RTIMULib/RTIMULib" - BINARY_DIR "${BINARY_DIR}/thirdparty/RTIMULib/RTIMULib" - CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS} - INSTALL_COMMAND "" - BUILD_BYPRODUCTS "${BINARY_DIR}/thirdparty/RTIMULib/RTIMULib/${BYPRODUCT}" - EXCLUDE_FROM_ALL TRUE - DOWNLOAD_NO_PROGRESS TRUE - TLS_VERIFY TRUE - ) - - # Set variables - set(RTIMULib_FOUND "YES" CACHE STRING "" FORCE) - set(RTIMULib_INCLUDE_DIRS "${SOURCE_DIR}/thirdparty/RTIMULib/RTIMULib" CACHE STRING "" FORCE) - set(RTIMULib_LIBRARY "${BINARY_DIR}/thirdparty/RTIMULib/RTIMULib/${BYPRODUCT}" CACHE STRING "" FORCE) - set(RTIMULib_LIBRARIES ${RTIMULib_LIBRARY} CACHE STRING "" FORCE) - - # Create imported targets - add_library(RTIMULib::RTIMULib STATIC IMPORTED) - set_target_properties(RTIMULib::RTIMULib PROPERTIES IMPORTED_LOCATION "${RTIMULib_LIBRARY}") - add_dependencies(RTIMULib::RTIMULib rtimulib-external) - set_property(TARGET RTIMULib::RTIMULib APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${RTIMULib_INCLUDE_DIRS}) - set_property(TARGET RTIMULib::RTIMULib APPEND PROPERTY INTERFACE_LINK_LIBRARIES Threads::Threads) -endfunction(use_bundled_rtimulib) From d6dbca3b9c80d04c761e820efedcb47f0b6def7c Mon Sep 17 00:00:00 2001 From: Ferenc Gerlits Date: Tue, 19 May 2026 13:03:00 +0200 Subject: [PATCH 15/16] add #include to one more file --- .../include-cinttypes-for-uint8_t-gcc15-fix.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/thirdparty/azure-sdk-cpp/include-cinttypes-for-uint8_t-gcc15-fix.patch b/thirdparty/azure-sdk-cpp/include-cinttypes-for-uint8_t-gcc15-fix.patch index a8ec23c1fc..851026db65 100644 --- a/thirdparty/azure-sdk-cpp/include-cinttypes-for-uint8_t-gcc15-fix.patch +++ b/thirdparty/azure-sdk-cpp/include-cinttypes-for-uint8_t-gcc15-fix.patch @@ -22,3 +22,13 @@ index 9a98f204e..95260d243 100644 -- 2.50.1 +--- a/sdk/storage/azure-storage-common/inc/azure/storage/common/internal/structured_message_helper.hpp 2026-05-12 12:38:20.000000000 +0200 ++++ b/sdk/storage/azure-storage-common/inc/azure/storage/common/internal/structured_message_helper.hpp 2026-05-19 12:56:55.877826558 +0200 +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + namespace Azure { namespace Storage { namespace _internal { + From e1aec399666023f6e970384ff1eef99bbea44181 Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Tue, 19 May 2026 13:43:04 +0200 Subject: [PATCH 16/16] Review update --- .../rocksdb/all/patches/c++23_fixes.patch | 641 ------------------ 1 file changed, 641 deletions(-) delete mode 100644 thirdparty/rocksdb/all/patches/c++23_fixes.patch diff --git a/thirdparty/rocksdb/all/patches/c++23_fixes.patch b/thirdparty/rocksdb/all/patches/c++23_fixes.patch deleted file mode 100644 index a3349c8fcb..0000000000 --- a/thirdparty/rocksdb/all/patches/c++23_fixes.patch +++ /dev/null @@ -1,641 +0,0 @@ -Subject: [PATCH] C++23 fixes ---- -Index: table/block_based/block_based_table_builder.cc -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/table/block_based/block_based_table_builder.cc b/table/block_based/block_based_table_builder.cc ---- a/table/block_based/block_based_table_builder.cc (revision 4b2122578e475cb88aef4dcf152cccd5dbf51060) -+++ b/table/block_based/block_based_table_builder.cc (date 1747822597282) -@@ -268,6 +268,315 @@ - bool decoupled_partitioned_filters_; - }; - -+struct BlockBasedTableBuilder::ParallelCompressionRep { -+ // TODO: consider replacing with autovector or similar -+ // Keys is a wrapper of vector of strings avoiding -+ // releasing string memories during vector clear() -+ // in order to save memory allocation overhead -+ class Keys { -+ public: -+ Keys() : keys_(kKeysInitSize), size_(0) {} -+ void PushBack(const Slice& key) { -+ if (size_ == keys_.size()) { -+ keys_.emplace_back(key.data(), key.size()); -+ } else { -+ keys_[size_].assign(key.data(), key.size()); -+ } -+ size_++; -+ } -+ void SwapAssign(std::vector& keys) { -+ size_ = keys.size(); -+ std::swap(keys_, keys); -+ } -+ void Clear() { size_ = 0; } -+ size_t Size() { return size_; } -+ std::string& Back() { return keys_[size_ - 1]; } -+ std::string& operator[](size_t idx) { -+ assert(idx < size_); -+ return keys_[idx]; -+ } -+ -+ private: -+ const size_t kKeysInitSize = 32; -+ std::vector keys_; -+ size_t size_; -+ }; -+ std::unique_ptr curr_block_keys; -+ -+ class BlockRepSlot; -+ -+ // BlockRep instances are fetched from and recycled to -+ // block_rep_pool during parallel compression. -+ struct BlockRep { -+ Slice contents; -+ Slice compressed_contents; -+ std::unique_ptr data; -+ std::unique_ptr compressed_data; -+ CompressionType compression_type; -+ std::unique_ptr first_key_in_next_block; -+ std::unique_ptr keys; -+ std::unique_ptr slot; -+ Status status; -+ }; -+ // Use a vector of BlockRep as a buffer for a determined number -+ // of BlockRep structures. All data referenced by pointers in -+ // BlockRep will be freed when this vector is destructed. -+ using BlockRepBuffer = std::vector; -+ BlockRepBuffer block_rep_buf; -+ // Use a thread-safe queue for concurrent access from block -+ // building thread and writer thread. -+ using BlockRepPool = WorkQueue; -+ BlockRepPool block_rep_pool; -+ -+ // Use BlockRepSlot to keep block order in write thread. -+ // slot_ will pass references to BlockRep -+ class BlockRepSlot { -+ public: -+ BlockRepSlot() : slot_(1) {} -+ template -+ void Fill(T&& rep) { -+ slot_.push(std::forward(rep)); -+ } -+ void Take(BlockRep*& rep) { slot_.pop(rep); } -+ -+ private: -+ // slot_ will pass references to BlockRep in block_rep_buf, -+ // and those references are always valid before the destruction of -+ // block_rep_buf. -+ WorkQueue slot_; -+ }; -+ -+ // Compression queue will pass references to BlockRep in block_rep_buf, -+ // and those references are always valid before the destruction of -+ // block_rep_buf. -+ using CompressQueue = WorkQueue; -+ CompressQueue compress_queue; -+ std::vector compress_thread_pool; -+ -+ // Write queue will pass references to BlockRep::slot in block_rep_buf, -+ // and those references are always valid before the corresponding -+ // BlockRep::slot is destructed, which is before the destruction of -+ // block_rep_buf. -+ using WriteQueue = WorkQueue; -+ WriteQueue write_queue; -+ std::unique_ptr write_thread; -+ -+ // Estimate output file size when parallel compression is enabled. This is -+ // necessary because compression & flush are no longer synchronized, -+ // and BlockBasedTableBuilder::FileSize() is no longer accurate. -+ // memory_order_relaxed suffices because accurate statistics is not required. -+ class FileSizeEstimator { -+ public: -+ explicit FileSizeEstimator() -+ : uncomp_bytes_compressed(0), -+ uncomp_bytes_curr_block(0), -+ uncomp_bytes_curr_block_set(false), -+ uncomp_bytes_inflight(0), -+ blocks_inflight(0), -+ curr_compression_ratio(0), -+ estimated_file_size(0) {} -+ -+ // Estimate file size when a block is about to be emitted to -+ // compression thread -+ void EmitBlock(uint64_t uncomp_block_size, uint64_t curr_file_size) { -+ uint64_t new_uncomp_bytes_inflight = -+ uncomp_bytes_inflight.fetch_add(uncomp_block_size, -+ std::memory_order_relaxed) + -+ uncomp_block_size; -+ -+ uint64_t new_blocks_inflight = -+ blocks_inflight.fetch_add(1, std::memory_order_relaxed) + 1; -+ -+ estimated_file_size.store( -+ curr_file_size + -+ static_cast( -+ static_cast(new_uncomp_bytes_inflight) * -+ curr_compression_ratio.load(std::memory_order_relaxed)) + -+ new_blocks_inflight * kBlockTrailerSize, -+ std::memory_order_relaxed); -+ } -+ -+ // Estimate file size when a block is already reaped from -+ // compression thread -+ void ReapBlock(uint64_t compressed_block_size, uint64_t curr_file_size) { -+ assert(uncomp_bytes_curr_block_set); -+ -+ uint64_t new_uncomp_bytes_compressed = -+ uncomp_bytes_compressed + uncomp_bytes_curr_block; -+ assert(new_uncomp_bytes_compressed > 0); -+ -+ curr_compression_ratio.store( -+ (curr_compression_ratio.load(std::memory_order_relaxed) * -+ uncomp_bytes_compressed + -+ compressed_block_size) / -+ static_cast(new_uncomp_bytes_compressed), -+ std::memory_order_relaxed); -+ uncomp_bytes_compressed = new_uncomp_bytes_compressed; -+ -+ uint64_t new_uncomp_bytes_inflight = -+ uncomp_bytes_inflight.fetch_sub(uncomp_bytes_curr_block, -+ std::memory_order_relaxed) - -+ uncomp_bytes_curr_block; -+ -+ uint64_t new_blocks_inflight = -+ blocks_inflight.fetch_sub(1, std::memory_order_relaxed) - 1; -+ -+ estimated_file_size.store( -+ curr_file_size + -+ static_cast( -+ static_cast(new_uncomp_bytes_inflight) * -+ curr_compression_ratio.load(std::memory_order_relaxed)) + -+ new_blocks_inflight * kBlockTrailerSize, -+ std::memory_order_relaxed); -+ -+ uncomp_bytes_curr_block_set = false; -+ } -+ -+ void SetEstimatedFileSize(uint64_t size) { -+ estimated_file_size.store(size, std::memory_order_relaxed); -+ } -+ -+ uint64_t GetEstimatedFileSize() { -+ return estimated_file_size.load(std::memory_order_relaxed); -+ } -+ -+ void SetCurrBlockUncompSize(uint64_t size) { -+ uncomp_bytes_curr_block = size; -+ uncomp_bytes_curr_block_set = true; -+ } -+ -+ private: -+ // Input bytes compressed so far. -+ uint64_t uncomp_bytes_compressed; -+ // Size of current block being appended. -+ uint64_t uncomp_bytes_curr_block; -+ // Whether uncomp_bytes_curr_block has been set for next -+ // ReapBlock call. -+ bool uncomp_bytes_curr_block_set; -+ // Input bytes under compression and not appended yet. -+ std::atomic uncomp_bytes_inflight; -+ // Number of blocks under compression and not appended yet. -+ std::atomic blocks_inflight; -+ // Current compression ratio, maintained by BGWorkWriteMaybeCompressedBlock. -+ std::atomic curr_compression_ratio; -+ // Estimated SST file size. -+ std::atomic estimated_file_size; -+ }; -+ FileSizeEstimator file_size_estimator; -+ -+ // Facilities used for waiting first block completion. Need to Wait for -+ // the completion of first block compression and flush to get a non-zero -+ // compression ratio. -+ std::atomic first_block_processed; -+ std::condition_variable first_block_cond; -+ std::mutex first_block_mutex; -+ -+ explicit ParallelCompressionRep(uint32_t parallel_threads) -+ : curr_block_keys(new Keys()), -+ block_rep_buf(parallel_threads), -+ block_rep_pool(parallel_threads), -+ compress_queue(parallel_threads), -+ write_queue(parallel_threads), -+ first_block_processed(false) { -+ for (uint32_t i = 0; i < parallel_threads; i++) { -+ block_rep_buf[i].contents = Slice(); -+ block_rep_buf[i].compressed_contents = Slice(); -+ block_rep_buf[i].data.reset(new std::string()); -+ block_rep_buf[i].compressed_data.reset(new std::string()); -+ block_rep_buf[i].compression_type = CompressionType(); -+ block_rep_buf[i].first_key_in_next_block.reset(new std::string()); -+ block_rep_buf[i].keys.reset(new Keys()); -+ block_rep_buf[i].slot.reset(new BlockRepSlot()); -+ block_rep_buf[i].status = Status::OK(); -+ block_rep_pool.push(&block_rep_buf[i]); -+ } -+ } -+ -+ ~ParallelCompressionRep() { block_rep_pool.finish(); } -+ -+ // Make a block prepared to be emitted to compression thread -+ // Used in non-buffered mode -+ BlockRep* PrepareBlock(CompressionType compression_type, -+ const Slice* first_key_in_next_block, -+ BlockBuilder* data_block) { -+ BlockRep* block_rep = -+ PrepareBlockInternal(compression_type, first_key_in_next_block); -+ assert(block_rep != nullptr); -+ data_block->SwapAndReset(*(block_rep->data)); -+ block_rep->contents = *(block_rep->data); -+ std::swap(block_rep->keys, curr_block_keys); -+ curr_block_keys->Clear(); -+ return block_rep; -+ } -+ -+ // Used in EnterUnbuffered -+ BlockRep* PrepareBlock(CompressionType compression_type, -+ const Slice* first_key_in_next_block, -+ std::string* data_block, -+ std::vector* keys) { -+ BlockRep* block_rep = -+ PrepareBlockInternal(compression_type, first_key_in_next_block); -+ assert(block_rep != nullptr); -+ std::swap(*(block_rep->data), *data_block); -+ block_rep->contents = *(block_rep->data); -+ block_rep->keys->SwapAssign(*keys); -+ return block_rep; -+ } -+ -+ // Emit a block to compression thread -+ void EmitBlock(BlockRep* block_rep) { -+ assert(block_rep != nullptr); -+ assert(block_rep->status.ok()); -+ if (!write_queue.push(block_rep->slot.get())) { -+ return; -+ } -+ if (!compress_queue.push(block_rep)) { -+ return; -+ } -+ -+ if (!first_block_processed.load(std::memory_order_relaxed)) { -+ std::unique_lock lock(first_block_mutex); -+ first_block_cond.wait(lock, [this] { -+ return first_block_processed.load(std::memory_order_relaxed); -+ }); -+ } -+ } -+ -+ // Reap a block from compression thread -+ void ReapBlock(BlockRep* block_rep) { -+ assert(block_rep != nullptr); -+ block_rep->compressed_data->clear(); -+ block_rep_pool.push(block_rep); -+ -+ if (!first_block_processed.load(std::memory_order_relaxed)) { -+ std::lock_guard lock(first_block_mutex); -+ first_block_processed.store(true, std::memory_order_relaxed); -+ first_block_cond.notify_one(); -+ } -+ } -+ -+ private: -+ BlockRep* PrepareBlockInternal(CompressionType compression_type, -+ const Slice* first_key_in_next_block) { -+ BlockRep* block_rep = nullptr; -+ block_rep_pool.pop(block_rep); -+ assert(block_rep != nullptr); -+ -+ assert(block_rep->data); -+ -+ block_rep->compression_type = compression_type; -+ -+ if (first_key_in_next_block == nullptr) { -+ block_rep->first_key_in_next_block.reset(nullptr); -+ } else { -+ block_rep->first_key_in_next_block->assign( -+ first_key_in_next_block->data(), first_key_in_next_block->size()); -+ } -+ -+ return block_rep; -+ } -+}; -+ - struct BlockBasedTableBuilder::Rep { - const ImmutableOptions ioptions; - // BEGIN from MutableCFOptions -@@ -667,314 +976,6 @@ - IOStatus io_status; - }; - --struct BlockBasedTableBuilder::ParallelCompressionRep { -- // TODO: consider replacing with autovector or similar -- // Keys is a wrapper of vector of strings avoiding -- // releasing string memories during vector clear() -- // in order to save memory allocation overhead -- class Keys { -- public: -- Keys() : keys_(kKeysInitSize), size_(0) {} -- void PushBack(const Slice& key) { -- if (size_ == keys_.size()) { -- keys_.emplace_back(key.data(), key.size()); -- } else { -- keys_[size_].assign(key.data(), key.size()); -- } -- size_++; -- } -- void SwapAssign(std::vector& keys) { -- size_ = keys.size(); -- std::swap(keys_, keys); -- } -- void Clear() { size_ = 0; } -- size_t Size() { return size_; } -- std::string& Back() { return keys_[size_ - 1]; } -- std::string& operator[](size_t idx) { -- assert(idx < size_); -- return keys_[idx]; -- } -- -- private: -- const size_t kKeysInitSize = 32; -- std::vector keys_; -- size_t size_; -- }; -- std::unique_ptr curr_block_keys; -- -- class BlockRepSlot; -- -- // BlockRep instances are fetched from and recycled to -- // block_rep_pool during parallel compression. -- struct BlockRep { -- Slice contents; -- Slice compressed_contents; -- std::unique_ptr data; -- std::unique_ptr compressed_data; -- CompressionType compression_type; -- std::unique_ptr first_key_in_next_block; -- std::unique_ptr keys; -- std::unique_ptr slot; -- Status status; -- }; -- // Use a vector of BlockRep as a buffer for a determined number -- // of BlockRep structures. All data referenced by pointers in -- // BlockRep will be freed when this vector is destructed. -- using BlockRepBuffer = std::vector; -- BlockRepBuffer block_rep_buf; -- // Use a thread-safe queue for concurrent access from block -- // building thread and writer thread. -- using BlockRepPool = WorkQueue; -- BlockRepPool block_rep_pool; -- -- // Use BlockRepSlot to keep block order in write thread. -- // slot_ will pass references to BlockRep -- class BlockRepSlot { -- public: -- BlockRepSlot() : slot_(1) {} -- template -- void Fill(T&& rep) { -- slot_.push(std::forward(rep)); -- } -- void Take(BlockRep*& rep) { slot_.pop(rep); } -- -- private: -- // slot_ will pass references to BlockRep in block_rep_buf, -- // and those references are always valid before the destruction of -- // block_rep_buf. -- WorkQueue slot_; -- }; -- -- // Compression queue will pass references to BlockRep in block_rep_buf, -- // and those references are always valid before the destruction of -- // block_rep_buf. -- using CompressQueue = WorkQueue; -- CompressQueue compress_queue; -- std::vector compress_thread_pool; -- -- // Write queue will pass references to BlockRep::slot in block_rep_buf, -- // and those references are always valid before the corresponding -- // BlockRep::slot is destructed, which is before the destruction of -- // block_rep_buf. -- using WriteQueue = WorkQueue; -- WriteQueue write_queue; -- std::unique_ptr write_thread; -- -- // Estimate output file size when parallel compression is enabled. This is -- // necessary because compression & flush are no longer synchronized, -- // and BlockBasedTableBuilder::FileSize() is no longer accurate. -- // memory_order_relaxed suffices because accurate statistics is not required. -- class FileSizeEstimator { -- public: -- explicit FileSizeEstimator() -- : uncomp_bytes_compressed(0), -- uncomp_bytes_curr_block(0), -- uncomp_bytes_curr_block_set(false), -- uncomp_bytes_inflight(0), -- blocks_inflight(0), -- curr_compression_ratio(0), -- estimated_file_size(0) {} -- -- // Estimate file size when a block is about to be emitted to -- // compression thread -- void EmitBlock(uint64_t uncomp_block_size, uint64_t curr_file_size) { -- uint64_t new_uncomp_bytes_inflight = -- uncomp_bytes_inflight.fetch_add(uncomp_block_size, -- std::memory_order_relaxed) + -- uncomp_block_size; -- -- uint64_t new_blocks_inflight = -- blocks_inflight.fetch_add(1, std::memory_order_relaxed) + 1; -- -- estimated_file_size.store( -- curr_file_size + -- static_cast( -- static_cast(new_uncomp_bytes_inflight) * -- curr_compression_ratio.load(std::memory_order_relaxed)) + -- new_blocks_inflight * kBlockTrailerSize, -- std::memory_order_relaxed); -- } -- -- // Estimate file size when a block is already reaped from -- // compression thread -- void ReapBlock(uint64_t compressed_block_size, uint64_t curr_file_size) { -- assert(uncomp_bytes_curr_block_set); -- -- uint64_t new_uncomp_bytes_compressed = -- uncomp_bytes_compressed + uncomp_bytes_curr_block; -- assert(new_uncomp_bytes_compressed > 0); -- -- curr_compression_ratio.store( -- (curr_compression_ratio.load(std::memory_order_relaxed) * -- uncomp_bytes_compressed + -- compressed_block_size) / -- static_cast(new_uncomp_bytes_compressed), -- std::memory_order_relaxed); -- uncomp_bytes_compressed = new_uncomp_bytes_compressed; -- -- uint64_t new_uncomp_bytes_inflight = -- uncomp_bytes_inflight.fetch_sub(uncomp_bytes_curr_block, -- std::memory_order_relaxed) - -- uncomp_bytes_curr_block; -- -- uint64_t new_blocks_inflight = -- blocks_inflight.fetch_sub(1, std::memory_order_relaxed) - 1; -- -- estimated_file_size.store( -- curr_file_size + -- static_cast( -- static_cast(new_uncomp_bytes_inflight) * -- curr_compression_ratio.load(std::memory_order_relaxed)) + -- new_blocks_inflight * kBlockTrailerSize, -- std::memory_order_relaxed); -- -- uncomp_bytes_curr_block_set = false; -- } -- -- void SetEstimatedFileSize(uint64_t size) { -- estimated_file_size.store(size, std::memory_order_relaxed); -- } -- -- uint64_t GetEstimatedFileSize() { -- return estimated_file_size.load(std::memory_order_relaxed); -- } -- -- void SetCurrBlockUncompSize(uint64_t size) { -- uncomp_bytes_curr_block = size; -- uncomp_bytes_curr_block_set = true; -- } -- -- private: -- // Input bytes compressed so far. -- uint64_t uncomp_bytes_compressed; -- // Size of current block being appended. -- uint64_t uncomp_bytes_curr_block; -- // Whether uncomp_bytes_curr_block has been set for next -- // ReapBlock call. -- bool uncomp_bytes_curr_block_set; -- // Input bytes under compression and not appended yet. -- std::atomic uncomp_bytes_inflight; -- // Number of blocks under compression and not appended yet. -- std::atomic blocks_inflight; -- // Current compression ratio, maintained by BGWorkWriteMaybeCompressedBlock. -- std::atomic curr_compression_ratio; -- // Estimated SST file size. -- std::atomic estimated_file_size; -- }; -- FileSizeEstimator file_size_estimator; -- -- // Facilities used for waiting first block completion. Need to Wait for -- // the completion of first block compression and flush to get a non-zero -- // compression ratio. -- std::atomic first_block_processed; -- std::condition_variable first_block_cond; -- std::mutex first_block_mutex; -- -- explicit ParallelCompressionRep(uint32_t parallel_threads) -- : curr_block_keys(new Keys()), -- block_rep_buf(parallel_threads), -- block_rep_pool(parallel_threads), -- compress_queue(parallel_threads), -- write_queue(parallel_threads), -- first_block_processed(false) { -- for (uint32_t i = 0; i < parallel_threads; i++) { -- block_rep_buf[i].contents = Slice(); -- block_rep_buf[i].compressed_contents = Slice(); -- block_rep_buf[i].data.reset(new std::string()); -- block_rep_buf[i].compressed_data.reset(new std::string()); -- block_rep_buf[i].compression_type = CompressionType(); -- block_rep_buf[i].first_key_in_next_block.reset(new std::string()); -- block_rep_buf[i].keys.reset(new Keys()); -- block_rep_buf[i].slot.reset(new BlockRepSlot()); -- block_rep_buf[i].status = Status::OK(); -- block_rep_pool.push(&block_rep_buf[i]); -- } -- } -- -- ~ParallelCompressionRep() { block_rep_pool.finish(); } -- -- // Make a block prepared to be emitted to compression thread -- // Used in non-buffered mode -- BlockRep* PrepareBlock(CompressionType compression_type, -- const Slice* first_key_in_next_block, -- BlockBuilder* data_block) { -- BlockRep* block_rep = -- PrepareBlockInternal(compression_type, first_key_in_next_block); -- assert(block_rep != nullptr); -- data_block->SwapAndReset(*(block_rep->data)); -- block_rep->contents = *(block_rep->data); -- std::swap(block_rep->keys, curr_block_keys); -- curr_block_keys->Clear(); -- return block_rep; -- } -- -- // Used in EnterUnbuffered -- BlockRep* PrepareBlock(CompressionType compression_type, -- const Slice* first_key_in_next_block, -- std::string* data_block, -- std::vector* keys) { -- BlockRep* block_rep = -- PrepareBlockInternal(compression_type, first_key_in_next_block); -- assert(block_rep != nullptr); -- std::swap(*(block_rep->data), *data_block); -- block_rep->contents = *(block_rep->data); -- block_rep->keys->SwapAssign(*keys); -- return block_rep; -- } -- -- // Emit a block to compression thread -- void EmitBlock(BlockRep* block_rep) { -- assert(block_rep != nullptr); -- assert(block_rep->status.ok()); -- if (!write_queue.push(block_rep->slot.get())) { -- return; -- } -- if (!compress_queue.push(block_rep)) { -- return; -- } -- -- if (!first_block_processed.load(std::memory_order_relaxed)) { -- std::unique_lock lock(first_block_mutex); -- first_block_cond.wait(lock, [this] { -- return first_block_processed.load(std::memory_order_relaxed); -- }); -- } -- } -- -- // Reap a block from compression thread -- void ReapBlock(BlockRep* block_rep) { -- assert(block_rep != nullptr); -- block_rep->compressed_data->clear(); -- block_rep_pool.push(block_rep); -- -- if (!first_block_processed.load(std::memory_order_relaxed)) { -- std::lock_guard lock(first_block_mutex); -- first_block_processed.store(true, std::memory_order_relaxed); -- first_block_cond.notify_one(); -- } -- } -- -- private: -- BlockRep* PrepareBlockInternal(CompressionType compression_type, -- const Slice* first_key_in_next_block) { -- BlockRep* block_rep = nullptr; -- block_rep_pool.pop(block_rep); -- assert(block_rep != nullptr); -- -- assert(block_rep->data); -- -- block_rep->compression_type = compression_type; -- -- if (first_key_in_next_block == nullptr) { -- block_rep->first_key_in_next_block.reset(nullptr); -- } else { -- block_rep->first_key_in_next_block->assign( -- first_key_in_next_block->data(), first_key_in_next_block->size()); -- } -- -- return block_rep; -- } --}; - - BlockBasedTableBuilder::BlockBasedTableBuilder( - const BlockBasedTableOptions& table_options, const TableBuilderOptions& tbo,