Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
ce29c91
Set not null: KQP (#44067)
flown4qqqq Jul 28, 2026
ccad027
YDB-3355 Set 1M max query text size in yandex query (#42596)
kardymonds Jul 28, 2026
c489fd1
iam credentials provider: error propagation (#44723)
yumkam Jul 28, 2026
324e524
LOGBROKER-10406 Fixed memory leak in sdk & fixed mirrorer test (#45159)
kuzin57 Jul 28, 2026
523823f
LOGBROKER-10206 Change abort to exception & add describe retries (#45…
kuzin57 Jul 28, 2026
7e2be4b
fix topic sdk setup (#45282)
kuzin57 Jul 28, 2026
4281433
create a dependency leak check helper (#45139)
Shfdis Jul 28, 2026
9a110ea
Rename SetColumnConstraint in public api (#45409)
flown4qqqq Jul 28, 2026
7f75422
KIKIMR-25851: Support roles in Maintenance ListNodes Response (#44342)
stanislav-shchetinin Jul 28, 2026
2b5805a
fix: too early provider lock can keep it alive on grpc thread (#45164)
Shfdis Jul 28, 2026
96c5c88
LOGBROKER-10406 Add batch logic to compactification topics (#45458)
kuzin57 Jul 28, 2026
0a7eaaf
fix locking of TDbDriverState (#45069)
yumkam Jul 28, 2026
20be3ba
implement GetClientIdentity for several CredentialProviders (#45173)
yumkam Jul 28, 2026
d51a9cb
added deferred session creation support to the query client (#45019)
Shfdis Jul 28, 2026
3b8b99f
destroy the driver on a detached thread (#45273)
Shfdis Jul 28, 2026
3f635ec
sdk: Move first query result chunk into buffer (#39472)
zinal Jul 28, 2026
810367e
Add canonical Topic/Kafka transaction wire with legacy dual-write. (#…
Alek5andr-Kotov Jul 28, 2026
bf17aad
[Console, ConfigsDispatcher, YDB CLI] Implement database yaml config …
nisqatsi Jul 28, 2026
6551e40
Refactor grpc, sdk and cli for test shard scheme object (#45361)
mregrock Jul 28, 2026
e651f3e
Fix driver uaf (#45962)
Shfdis Jul 28, 2026
dc67f84
Multi-column statistics: KQP & SDK (#46118)
azevaykin Jul 28, 2026
079dda8
fix the mute by gracefully closing in table client (#46158)
Shfdis Jul 28, 2026
a8fd990
Remove legacy pgwire support from ydbd (#45922)
asmyasnikov Jul 28, 2026
7e70353
Export to S3 in Parquet (#40202)
diseaz Jul 28, 2026
8014266
Distributed mutex based off of coordination service (#43658)
Shfdis Jul 28, 2026
6781fdc
Implement deferred topic publish (staging, finalize, E2E tests) (#46290)
Alek5andr-Kotov Jul 28, 2026
eca15e8
Set not null: public api (SDK, CLI) (#46394)
flown4qqqq Jul 28, 2026
fbee3fc
Add delete session to SDK and experimental YDB CLI (#46598)
pnv1 Jul 28, 2026
b04ec2f
Leak CloseInternal session settings to fix use-after-dtor (#46591)
makxenov Jul 28, 2026
6e961ba
reuse equivalent IAM credentials providers (#46593)
Shfdis Jul 28, 2026
22bf6af
LOGBROKER-10550 Fix verify on shutdown in sdk (#46840)
kuzin57 Jul 28, 2026
27fca2d
LOGBROKER-10550 Fix memory leak (#46748)
kuzin57 Jul 28, 2026
660c1cc
async provider initialisation (#46135)
Shfdis Jul 28, 2026
ea0d805
Fix createsession metric (#47132)
Shfdis Jul 28, 2026
ef770c9
Implement simplified UAX#29 Standard tokenizer with Elasticsearch-com…
vitalif Jul 28, 2026
3a4fea0
implemented tracing and metrics observability headers (#46668)
Shfdis Jul 28, 2026
9d9db74
[YDB_LOG] Migrate ydb/core/kafka_proxy (#43285)
kseleznyov Jul 28, 2026
673386c
Make StreamWrite ext_publication_id optional (#47344)
Alek5andr-Kotov Jul 28, 2026
344d3c4
StrictSerializable: return commit timestamp (#46795)
nikvas0 Jul 28, 2026
3536eab
implement async provider methods with retries and refactor (#47249)
Shfdis Jul 28, 2026
079cd6e
Set not null state rejected (#46759)
flown4qqqq Jul 28, 2026
13d8eb9
Fix some problems with new test shard api (#47463)
mregrock Jul 28, 2026
7f1a19f
Fix tokenizer autoreview issues (#47453)
BlazingPhoenix Jul 28, 2026
958b228
Fix ASAN leak in PersQueue read session teardown (#47727)
nshestakov Jul 28, 2026
ed1393f
Fix flaky BasicUsage.Producer_WriteManyMessages (UAF in read helper) …
Alek5andr-Kotov Jul 28, 2026
88fbd0c
MakeFuture singletone teardown fix (#47909)
Shfdis Jul 28, 2026
42c86fc
Fix invalid root certificate false positive (#47930)
Shfdis Jul 28, 2026
ee904c5
release sdk v3.21.0 (#48074)
Shfdis Jul 28, 2026
ae8fb61
Update import generation: 44
github-actions[bot] Jul 28, 2026
b5467e3
update vendored grpc versions
Jul 28, 2026
7dbb49b
fix cpp20 clang support
Jul 28, 2026
32f35a5
fix slo build
Jul 28, 2026
05d8bc2
fix docs
Jul 29, 2026
ec3a40b
fix tests and update versions
Jul 29, 2026
bee88fa
fix ci
Jul 30, 2026
533527a
Fix libc++ formatter and span includes
Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 4 additions & 3 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,18 @@ RUN wget -O abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz https://github.com/abseil/ab
cmake --install . --config Release --prefix ${ABSEIL_CPP_INSTALL_DIR}

# Install protobuf
ENV PROTOBUF_VERSION=3.21.12
ENV PROTOBUF_VERSION=25.0
ENV PROTOBUF_INSTALL_DIR=~/ydb_deps/protobuf
RUN wget -O protobuf-${PROTOBUF_VERSION}.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PROTOBUF_VERSION}.tar.gz && \
tar -xvzf protobuf-${PROTOBUF_VERSION}.tar.gz && cd protobuf-${PROTOBUF_VERSION} && \
mkdir build && cd build && \
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON -Dprotobuf_ABSL_PROVIDER=package .. && \
cmake -G Ninja -DCMAKE_PREFIX_PATH="${ABSEIL_CPP_INSTALL_DIR}" \
-DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON -Dprotobuf_ABSL_PROVIDER=package .. && \
cmake --build . --config Release && \
cmake --install . --config Release --prefix ${PROTOBUF_INSTALL_DIR}

# Install grpc
ENV GRPC_VERSION=1.54.3
ENV GRPC_VERSION=1.60.2
ENV GRPC_INSTALL_DIR=~/ydb_deps/grpc
RUN wget -O grpc-${GRPC_VERSION}.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v${GRPC_VERSION}.tar.gz && \
tar -xvzf grpc-${GRPC_VERSION}.tar.gz && cd grpc-${GRPC_VERSION} && \
Expand Down
25 changes: 13 additions & 12 deletions .github/actions/prepare_vm/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ runs:

wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 16
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-16 10000
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-16 10000
sudo ./llvm.sh 18
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 10000
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 10000

# Install abseil-cpp
wget -O abseil-cpp-20230802.0.tar.gz https://github.com/abseil/abseil-cpp/archive/refs/tags/20230802.0.tar.gz
Expand All @@ -54,20 +54,21 @@ runs:
cd ../../

# Install protobuf
wget -O protobuf-3.21.12.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.12.tar.gz
tar -xvzf protobuf-3.21.12.tar.gz
cd protobuf-3.21.12
wget -O protobuf-25.0.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v25.0.tar.gz
tar -xvzf protobuf-25.0.tar.gz
cd protobuf-25.0
mkdir build && cd build
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON ..
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_PREFIX_PATH="${HOME}/ydb_deps/absl" -DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON -Dprotobuf_ABSL_PROVIDER=package ..
cmake --build . --config Release
cmake --install . --config Release --prefix ~/ydb_deps/protobuf
cd ../../

# Install gRPC
wget -O grpc-1.54.3.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v1.54.3.tar.gz
tar -xvzf grpc-1.54.3.tar.gz && cd grpc-1.54.3
wget -O grpc-1.60.2.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v1.60.2.tar.gz
tar -xvzf grpc-1.60.2.tar.gz && cd grpc-1.60.2
mkdir build && cd build
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_PREFIX_PATH="~/ydb_deps/absl;~/ydb_deps/protobuf" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_PREFIX_PATH="${HOME}/ydb_deps/absl;${HOME}/ydb_deps/protobuf" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
-DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF \
-DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_RE2_PROVIDER=package \
-DgRPC_SSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ABSL_PROVIDER=package \
Expand All @@ -88,6 +89,6 @@ runs:

# Clean up
ccache -s
sudo rm -rf llvm.sh abseil-cpp-20230802.0.tar.gz protobuf-3.21.12.tar.gz grpc-1.54.3.tar.gz \
sudo rm -rf llvm.sh abseil-cpp-20230802.0.tar.gz protobuf-25.0.tar.gz grpc-1.60.2.tar.gz \
brotli-1.1.0.tar.gz abseil-cpp-20230802.0 \
protobuf-3.21.12 grpc-1.54.3 brotli-1.1.0
protobuf-25.0 grpc-1.60.2 brotli-1.1.0
2 changes: 1 addition & 1 deletion .github/import_generation.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
44
45
2 changes: 1 addition & 1 deletion .github/last_commit.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fb25fb6453264260a02c6ec49492382fcaf801ce
1e3f62319678deefbb65acd4a3894eb0badcbb0d
158 changes: 157 additions & 1 deletion .github/scripts/copy_sources.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,158 @@
#!/bin/bash
set -euo pipefail

tmp_dir=$(mktemp -d)

sync_upstream_tree() {
local upstream_repo=$1
local oss_repo=$2
local destination_root=$3
local tree=$4
local mode=${5:-full}
local previous_commit
local current_commit
local merge_dir
local status
local path
local new_path
local local_file
local local_target
local base_file
local upstream_file
local merged_file
local conflicts=0

previous_commit=$(cat "$oss_repo/.github/last_commit.txt")
current_commit=$(git -C "$upstream_repo" rev-parse HEAD)
merge_dir=$(mktemp -d "$tmp_dir/upstream-merge.XXXXXX")

if ! git -C "$upstream_repo" merge-base --is-ancestor "$previous_commit" "$current_commit"; then
echo "Cannot sync $tree: $previous_commit is not an ancestor of $current_commit" >&2
return 1
fi

while IFS=$'\t' read -r status path new_path; do
[ -n "$path" ] || continue

# Standalone builds use CMake and deliberately do not import Arcadia build files.
if [ "$(basename "$path")" = "ya.make" ] ||
{ [ -n "${new_path:-}" ] && [ "$(basename "$new_path")" = "ya.make" ]; }; then
continue
fi

local_file="$destination_root/$path"
base_file="$merge_dir/base"
upstream_file="$merge_dir/upstream"
merged_file="$merge_dir/merged"

case "$status" in
R*)
local_target="$destination_root/$new_path"
if [ ! -f "$local_file" ]; then
if [ "$mode" = "managed" ]; then
continue
fi
echo "Cannot rename upstream file missing locally: $path" >&2
conflicts=$((conflicts + 1))
continue
fi
if [ -e "$local_target" ] && [ "$local_target" != "$local_file" ]; then
echo "Cannot rename upstream file onto existing local file: $new_path" >&2
conflicts=$((conflicts + 1))
continue
fi

git -C "$upstream_repo" show "$previous_commit:$path" > "$base_file"
git -C "$upstream_repo" show "$current_commit:$new_path" > "$upstream_file"
mkdir -p "$(dirname "$local_target")"

if cmp -s "$local_file" "$base_file"; then
cp "$upstream_file" "$local_target"
elif git merge-file -p "$local_file" "$base_file" "$upstream_file" > "$merged_file"; then
cp "$merged_file" "$local_target"
else
echo "Cannot merge renamed upstream and standalone changes: $path -> $new_path" >&2
conflicts=$((conflicts + 1))
continue
fi

if [ "$local_target" != "$local_file" ]; then
rm "$local_file"
fi
;;
A)
if [ "$mode" = "managed" ] && [ ! -d "$(dirname "$local_file")" ]; then
continue
fi
if [ ! -e "$local_file" ]; then
mkdir -p "$(dirname "$local_file")"
git -C "$upstream_repo" show "$current_commit:$path" > "$local_file"
else
git -C "$upstream_repo" show "$current_commit:$path" > "$upstream_file"
if ! cmp -s "$local_file" "$upstream_file"; then
echo "Cannot import added upstream file modified locally: $path" >&2
conflicts=$((conflicts + 1))
fi
fi
;;
D)
if [ -e "$local_file" ]; then
git -C "$upstream_repo" show "$previous_commit:$path" > "$base_file"
if cmp -s "$local_file" "$base_file"; then
rm "$local_file"
else
echo "Cannot delete upstream file modified locally: $path" >&2
conflicts=$((conflicts + 1))
fi
fi
;;
M)
if [ ! -f "$local_file" ]; then
if [ "$mode" = "managed" ]; then
continue
fi
echo "Cannot update upstream file missing locally: $path" >&2
conflicts=$((conflicts + 1))
continue
fi

git -C "$upstream_repo" show "$previous_commit:$path" > "$base_file"
git -C "$upstream_repo" show "$current_commit:$path" > "$upstream_file"

if cmp -s "$local_file" "$upstream_file"; then
continue
fi

if cmp -s "$local_file" "$base_file"; then
cp "$upstream_file" "$local_file"
continue
fi

if git merge-file -p "$local_file" "$base_file" "$upstream_file" > "$merged_file"; then
cp "$merged_file" "$local_file"
else
echo "Cannot merge upstream and standalone changes: $path" >&2
conflicts=$((conflicts + 1))
fi
;;
*)
echo "Unsupported upstream change '$status' for $path" >&2
conflicts=$((conflicts + 1))
;;
esac
done < <(git -C "$upstream_repo" diff --name-status --find-renames "$previous_commit..$current_commit" -- "$tree")

rm -rf "$merge_dir"

if [ "$conflicts" -ne 0 ]; then
echo "Failed to import $tree: $conflicts conflicting change(s)" >&2
return 1
fi
}

echo "Copying sources..."

cp -r $1/ydb/public/sdk/cpp/* $tmp_dir
cp -r "$1"/ydb/public/sdk/cpp/* "$tmp_dir"
echo "tmp_dir: $tmp_dir"

rm -r $tmp_dir/src/client/arrow
Expand Down Expand Up @@ -48,6 +196,13 @@ cp -r $2/scripts $tmp_dir
cp -r $2/third_party $tmp_dir
cp -r $2/tools $tmp_dir

sync_upstream_tree "$1" "$2" "$tmp_dir" util
sync_upstream_tree "$1" "$2" "$tmp_dir" library/cpp managed
sync_upstream_tree "$1" "$2" "$tmp_dir" contrib/libs/libc_compat managed
sync_upstream_tree "$1" "$2" "$tmp_dir" contrib/libs/lzmasdk managed
sync_upstream_tree "$1" "$2" "$tmp_dir" tools/enum_parser managed
sync_upstream_tree "$1" "$2" "$tmp_dir" tools/rescompiler managed

cp $2/.gitignore $tmp_dir
cp $2/.gitmodules $tmp_dir
cp $2/CMakePresets.json $tmp_dir
Expand All @@ -63,6 +218,7 @@ for oss_test_dir in slo_workloads deb_package; do
done

cp $2/include/ydb-cpp-sdk/type_switcher.h $tmp_dir/include/ydb-cpp-sdk/type_switcher.h
cp $2/include/ydb-cpp-sdk/stlfwd.h $tmp_dir/include/ydb-cpp-sdk/stlfwd.h
cp $2/src/version.h $tmp_dir/src/version.h

cd $2
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ jobs:
key: ${{ steps.coverage-cache-key.outputs.prefix }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
${{ steps.coverage-cache-key.outputs.prefix }}-
ubuntu-22.04-coverage-gcc-

- name: Install dependencies
uses: ./.github/actions/prepare_vm
Expand All @@ -84,6 +83,8 @@ jobs:

find build -type f \( -name '*.gcda' -o -name '*.gcov' \) -delete
rm -rf build/coverage
cmake -E remove_directory build/util/system/testing_out_stuff
cmake -E make_directory build/util/system/testing_out_stuff

ctest -j1 --preset coverage-all -E "${EXCLUDE_REGEX}" --output-on-failure

Expand Down Expand Up @@ -121,6 +122,7 @@ jobs:
run: |
find build -type f \( -name '*.gcda' -o -name '*.gcov' \) -delete
rm -rf build/coverage
cmake -E remove_directory build/util/system/testing_out_stuff

- name: Save coverage build cache
if: github.event_name != 'pull_request' && success() && steps.coverage-build-cache.outputs.cache-hit != 'true'
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/import.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,15 @@ jobs:

LAST_COMMIT=$(cat ydb-cpp-sdk/.github/last_commit.txt)

COMMITS=$(git -C ydb log --format="%H" --reverse $LAST_COMMIT..main -- ydb/public/sdk/cpp ydb/public/api)
COMMITS=$(git -C ydb log --format="%H" --reverse $LAST_COMMIT..main -- \
ydb/public/sdk/cpp \
ydb/public/api \
util \
library/cpp \
contrib/libs/libc_compat \
contrib/libs/lzmasdk \
tools/enum_parser \
tools/rescompiler)
if [ -z "$COMMITS" ]; then
echo "No new commits to import"
exit 0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/warmup_cache.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ jobs:
key: ${{ steps.coverage-cache-key.outputs.prefix }}-${{ github.run_id }}-${{ github.run_attempt }}
restore-keys: |
${{ steps.coverage-cache-key.outputs.prefix }}-
ubuntu-22.04-coverage-gcc-
- name: Install dependencies
uses: ./.github/actions/prepare_vm
- name: Configure and build with coverage
Expand All @@ -75,6 +74,7 @@ jobs:
cmake --build build -j"$(nproc)"
find build -type f \( -name '*.gcda' -o -name '*.gcov' \) -delete
rm -rf build/coverage
cmake -E remove_directory build/util/system/testing_out_stuff
- name: Save coverage build cache
if: steps.coverage-build-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## v3.21.0

* Fixed Query SDK `CreateSession` metrics being recorded when reusing a session from the pool.

* Added `TQueryClient::DeleteSession` to explicitly delete a query session by session id.

* Driver now supports async credentials initialisation: the first request is delayed until they are ready.

* Added a flag to support deferred session creation(when client timeout exceeded, the session is created in the backgroud)

* Added a distributed lock primitive based on the coordination service, which implements basic_lockable concept.

## v3.20.0

* Added automatic retries for unary methods of table and query clients(ExecuteQuery, ExecuteScript, BulkUpsert, ReadRows).
Expand Down
11 changes: 11 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ if (YDB_CPP_SDK_SLO_USE_INSTALLED_SDK)

add_subdirectory(tools)
add_subdirectory(contrib/libs)
add_subdirectory(src/library/string_utils/base64)
add_subdirectory(library/cpp)
add_subdirectory(util)
add_subdirectory(tests/slo_workloads)
Expand Down Expand Up @@ -110,6 +111,13 @@ if (YDB_SDK_INSTALL)
get_property(PackageIncludeDirs GLOBAL PROPERTY YDB_CPP_${PackageProp}_INCLUDE_DIRS)

list(REMOVE_DUPLICATES PackageSources)
if (NOT TargetName STREQUAL "libydb-cpp")
get_property(CoreSources GLOBAL PROPERTY YDB_CPP_CORE_SOURCES)
if (CoreSources)
list(REMOVE_DUPLICATES CoreSources)
list(REMOVE_ITEM PackageSources ${CoreSources})
endif()
endif()
if (PackageInternalDeps)
list(REMOVE_DUPLICATES PackageInternalDeps)
endif()
Expand Down Expand Up @@ -148,6 +156,9 @@ if (YDB_SDK_INSTALL)
set_target_properties(${TargetName} PROPERTIES OUTPUT_NAME ydb-cpp)
endif()
target_compile_definitions(${TargetName} PUBLIC YDB_SDK_OSS ${PackagePublicDefs})
if (NOT TargetName STREQUAL "libydb-cpp")
target_link_libraries(${TargetName} PUBLIC libydb-cpp)
endif()
target_link_libraries(${TargetName} PUBLIC ${PackagePublicDeps})
if (PackageInternalDeps)
add_dependencies(${TargetName} ${PackageInternalDeps})
Expand Down
Loading
Loading