From 61b670913ffce5be9bf112d966088c6e344b0307 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 14:43:30 -0800 Subject: [PATCH 01/56] Bump sphinxcontrib-spelling from 8.0.0 to 8.0.2 in /doc (#942) Bumps [sphinxcontrib-spelling](https://github.com/sphinx-contrib/spelling) from 8.0.0 to 8.0.2. - [Release notes](https://github.com/sphinx-contrib/spelling/releases) - [Commits](https://github.com/sphinx-contrib/spelling/compare/8.0.0...8.0.2) --- updated-dependencies: - dependency-name: sphinxcontrib-spelling dependency-version: 8.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- doc/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/requirements.txt b/doc/requirements.txt index 26973d407..4662a7248 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,7 +1,7 @@ # sphinx version requirement for readthedocs. sphinx==9.1.0 sphinx-rtd-theme==3.1.0 -sphinxcontrib-spelling==8.0.0 +sphinxcontrib-spelling==8.0.2 certifi>=2023.7.22 # not directly required, pinned by Snyk to avoid a vulnerability jinja2>=3.1.3 # not directly required, pinned by Snyk to avoid a vulnerability pygments>=2.15.0 # not directly required, pinned by Snyk to avoid a vulnerability From 059a9bc60f920cfd1aa0287a33a649348ed85063 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 22:44:42 +0000 Subject: [PATCH 02/56] Auto-bump version to 19.1.0rc1.dev10 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 682c51e1e..7978032d3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev9 +19.1.0rc1.dev10 From 4cd3afc1f85a9bf6ebc02a32cbecfd6c59c57eb8 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:12:22 -0800 Subject: [PATCH 03/56] [CLIENT-4225] CI/CD: Remove unused delocate package from .github/workflows/requirements.txt (#965) delocate is already installed by cibuildwheel. The cibuildwheel API docs isn't clear about this, though. --- .github/workflows/requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt index 3f19b658d..e28b6a927 100644 --- a/.github/workflows/requirements.txt +++ b/.github/workflows/requirements.txt @@ -1,4 +1,3 @@ parver==0.5 crudini==0.9.4 -delocate==0.10.4 mypy==1.17.1 From 73d7d0827d67eb353eab3f2261435ccce0945521 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 00:13:10 +0000 Subject: [PATCH 04/56] Auto-bump version to 19.1.0rc1.dev11 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7978032d3..130bc8a28 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev10 +19.1.0rc1.dev11 From afad46802035436036f52e2eac24754d9d10f44b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Feb 2026 19:42:33 -0800 Subject: [PATCH 05/56] Bump actions/setup-python from 6.1.0 to 6.2.0 (#957) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/83679a892e2d95755f2dac6acb0bfd1e9ac5d548...a309ff8b426b58ec0e2a45f0f869d46889d02405) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-wheels.yml | 2 +- .github/workflows/doc-tests.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/smoke-tests.yml | 16 ++++++++-------- .github/workflows/stage-tests.yml | 2 +- .github/workflows/test-server-rc.yml | 2 +- .github/workflows/valgrind.yml | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7863e808a..9ea3c29c6 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -424,7 +424,7 @@ jobs: echo PYTHON_VERSION="${PYTHON_VERSION/3/3.}" >> $GITHUB_ENV shell: bash - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.PYTHON_VERSION }} allow-prereleases: true diff --git a/.github/workflows/doc-tests.yml b/.github/workflows/doc-tests.yml index fb407d505..058e228d6 100644 --- a/.github/workflows/doc-tests.yml +++ b/.github/workflows/doc-tests.yml @@ -44,7 +44,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: 3.12 architecture: 'x64' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4c2893813..a63d93fe0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 0c180ba1f..821555692 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -64,7 +64,7 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.py-version }} architecture: 'x64' @@ -108,7 +108,7 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -227,7 +227,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -264,7 +264,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -333,7 +333,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.py-version }} architecture: 'x64' @@ -385,7 +385,7 @@ jobs: with: submodules: recursive - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.13" architecture: 'x64' @@ -435,7 +435,7 @@ jobs: egress-policy: audit - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' @@ -466,7 +466,7 @@ jobs: egress-policy: audit - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.LOWEST_SUPPORTED_PY_VERSION }} architecture: 'x64' diff --git a/.github/workflows/stage-tests.yml b/.github/workflows/stage-tests.yml index fa73f2a24..ccee84fda 100644 --- a/.github/workflows/stage-tests.yml +++ b/.github/workflows/stage-tests.yml @@ -224,7 +224,7 @@ jobs: JFROG_ACCESS_TOKEN: ${{ secrets.JFROG_ACCESS_TOKEN }} JFROG_REPO_NAME: ${{ vars.JFROG_REPO_NAME }} - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/test-server-rc.yml b/.github/workflows/test-server-rc.yml index 669008b1e..8f60d77d7 100644 --- a/.github/workflows/test-server-rc.yml +++ b/.github/workflows/test-server-rc.yml @@ -97,7 +97,7 @@ jobs: name: ${{ matrix.python[1] }}-macosx_x86_64.build path: ./ - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python[0] }} diff --git a/.github/workflows/valgrind.yml b/.github/workflows/valgrind.yml index 27df55b2a..6662ca817 100644 --- a/.github/workflows/valgrind.yml +++ b/.github/workflows/valgrind.yml @@ -146,7 +146,7 @@ jobs: run: echo PYTHON_VERSION=$(echo ${{ env.PYTHON_TAG }} | sed -e "s/cp3/cp3./" -e "s/cp//") >> $GITHUB_ENV shell: bash - - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '${{ env.PYTHON_VERSION }}' architecture: 'x64' From f3da30323f5ee7bf440e2b3ecb7682cd9e980fd1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 03:43:19 +0000 Subject: [PATCH 06/56] Auto-bump version to 19.1.0rc1.dev12 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 130bc8a28..133682716 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev11 +19.1.0rc1.dev12 From 21df7311d62ab91694166291b4441bb158ecda31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:24:54 -0800 Subject: [PATCH 07/56] Bump versioningit from 3.1.0 to 3.3.0 (#937) Bumps [versioningit](https://github.com/jwodder/versioningit) from 3.1.0 to 3.3.0. - [Release notes](https://github.com/jwodder/versioningit/releases) - [Changelog](https://github.com/jwodder/versioningit/blob/master/CHANGELOG.md) - [Commits](https://github.com/jwodder/versioningit/compare/v3.1.0...v3.3.0) --- updated-dependencies: - dependency-name: versioningit dependency-version: 3.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ce259d992..e003d578e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ "setuptools", - "versioningit==3.1.0", + "versioningit==3.3.0", # Used by our versioningit script that modifies the version "parver==0.5" ] From cde0b2b3bba31300c33056faade0cdfe9b1e9fac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:25:53 +0000 Subject: [PATCH 08/56] Auto-bump version to 19.1.0rc1.dev13 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 133682716..753714940 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev12 +19.1.0rc1.dev13 From 036fdbfb31089e86e4657f5c2edf227e75c7a410 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 13:45:16 -0800 Subject: [PATCH 09/56] Run test with procdump on self hosted runner --- .github/workflows/build-wheels.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7863e808a..e7af9e698 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -437,10 +437,19 @@ jobs: working-directory: test shell: bash - - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + - if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + wget https://download.sysinternals.com/files/Procdump.zip + unzip Procdump.zip + mkdir dumps + ./procdump.exe -e -x ./dumps python3 -m pytest new_tests working-directory: test shell: bash + # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # working-directory: test + # shell: bash + - name: Show job status for commit if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} uses: myrotvorets/set-commit-status-action@3730c0a348a2ace3c110851bed53331bc6406e9f # v2.0.1 From 1fb4675be0551de528516ddf804614f39136148c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:06:50 -0800 Subject: [PATCH 10/56] Bump docker/build-push-action from 6.18.0 to 6.19.2 (#966) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.18.0 to 6.19.2. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...10e90e3645eae34f1e60eeb005ba3a3d33f178e8) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.19.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-manylinux-openssl-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-manylinux-openssl-image.yml b/.github/workflows/update-manylinux-openssl-image.yml index c848b6c54..47ec90147 100644 --- a/.github/workflows/update-manylinux-openssl-image.yml +++ b/.github/workflows/update-manylinux-openssl-image.yml @@ -87,7 +87,7 @@ jobs: working-directory: cibuildwheel - name: Build and push - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: # Don't want to use default Git context or else it will clone the whole Python client repo again context: ${{ github.workspace }}/aerospike-client-python/.github/workflows From 666f1f19ed169525a646e8c605e2d21120ffc09c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 22:07:41 +0000 Subject: [PATCH 11/56] Auto-bump version to 19.1.0rc1.dev14 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 753714940..f81a6b085 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev13 +19.1.0rc1.dev14 From 8f7f9ffec57b9e79001eb2eaa8261626ff176dc4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:07:43 -0800 Subject: [PATCH 12/56] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e7af9e698..c47c1e0e5 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,7 +439,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} run: | - wget https://download.sysinternals.com/files/Procdump.zip + curl -O Procdump.zip https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps ./procdump.exe -e -x ./dumps python3 -m pytest new_tests From f9460895eb2174a57b924c836291eb05633f8eb6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:14:21 -0800 Subject: [PATCH 13/56] fix... --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c47c1e0e5..faae939e7 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,7 +439,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} run: | - curl -O Procdump.zip https://download.sysinternals.com/files/Procdump.zip + curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps ./procdump.exe -e -x ./dumps python3 -m pytest new_tests From 296303cc8b7555d9b2df92f3c62379c950c97e99 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:21:39 -0800 Subject: [PATCH 14/56] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index faae939e7..1760c021b 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -442,7 +442,7 @@ jobs: curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps - ./procdump.exe -e -x ./dumps python3 -m pytest new_tests + ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest new_tests working-directory: test shell: bash From 12a54b5bccbd52e3261805735b4680e9b8b66170 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:55:47 -0800 Subject: [PATCH 15/56] Compile Python client with debug configuration --- .github/workflows/build-wheels.yml | 1 + setup.py | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 1760c021b..fdc7edec7 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -336,6 +336,7 @@ jobs: delocate-listdeps {dest_dir}/*.whl | grep libssl.3.dylib CIBW_TEST_COMMAND: ${{ env.TEST_COMMAND }} CIBW_DEBUG_KEEP_CONTAINER: 1 + VS_PROJECT_CONFIGURATION: debug # - name: Setup tmate session # if: ${{ !cancelled() }} diff --git a/setup.py b/setup.py index 4298d9e30..b709a7131 100644 --- a/setup.py +++ b/setup.py @@ -40,6 +40,7 @@ BASEPATH = os.path.dirname(os.path.abspath(__file__)) AEROSPIKE_C_HOME = os.path.join(BASEPATH, 'aerospike-client-c') +VS_PROJECT_CONFIGURATION = os.getenv("VS_PROJECT_CONFIGURATION", "Release") AEROSPIKE_C_TARGET = None PLATFORM = platform.platform(1) LINUX = 'Linux' in PLATFORM @@ -184,9 +185,9 @@ ] else: include_dirs.append(AEROSPIKE_C_TARGET + '/src/include') - library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/Release") + library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/{VS_PROJECT_CONFIGURATION}") # Needed for linking the Python client with the C client - extra_objects.append(AEROSPIKE_C_TARGET + "/vs/x64/Release/aerospike.lib") + extra_objects.append(AEROSPIKE_C_TARGET + f"/vs/x64/{VS_PROJECT_CONFIGURATION}/aerospike.lib") os.putenv('CPATH', ':'.join(include_dirs)) os.environ['CPATH'] = ':'.join(include_dirs) @@ -230,7 +231,7 @@ def clean(): cmd = [ 'msbuild', 'vs/aerospike.sln', - '/property:Configuration=Release' + f"/property:Configuration={VS_PROJECT_CONFIGURATION}" ] else: cmd = [ From 16c47267952460c156b4e1ab5c558944be8dd63c Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:01:41 -0800 Subject: [PATCH 16/56] A different static library is used for pthreadVC2 with debug config --- setup.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b709a7131..c529748b9 100644 --- a/setup.py +++ b/setup.py @@ -167,7 +167,10 @@ libraries = libraries + ['rt'] AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: - libraries.append("pthreadVC2") + if VS_PROJECT_CONFIGURATION == "Release": + libraries.append("pthreadVC2") + else: + libraries.append("pthreadVC2d") extra_compile_args.append("-DAS_SHARED_IMPORT") include_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/include") else: From 01419abe25eefa48cb48b4c975adef509ea42cd4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:18:40 -0800 Subject: [PATCH 17/56] fix --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index fdc7edec7..c2606cfd4 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Release -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 7c83b9c346b06eeab8c8c0008db7bbbc934b2718 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:38:44 -0800 Subject: [PATCH 18/56] Include symbols with repaired wheel --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c2606cfd4..ab6741c5b 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 15c4acb60e168fb66a49c72cf3b6765632aff78b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Thu, 19 Feb 2026 16:09:40 -0800 Subject: [PATCH 19/56] pdb files do not get mangled in wheel along with the mangled DLL files. --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index ab6741c5b..57736cf75 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,7 +328,7 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --include-symbols -w {dest_dir} {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --no-mangle-all --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && From 59b9194db1bc2b1fba73edbd594527060e8598e0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:30:06 -0800 Subject: [PATCH 20/56] [CLIENT-4224] CI/CD: Switch from using lint.yml to pre-commit.ci to run hooks (#964) pre-commit.ci will auto-update the hook versions every week, which is not supported in dependabot yet. - Fix pre-commit.ci failing because it doesn't support Docker-based hooks yet. - Disable lint.yaml workflow, since this replaces it --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3529e4fe6..52c569624 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,8 +33,8 @@ repos: - id: doc8 args: ["doc/", "--extension", ".rst"] pass_filenames: false -- repo: https://github.com/koalaman/shellcheck-precommit - rev: v0.11.0 +- repo: https://github.com/shellcheck-py/shellcheck-py + rev: v0.11.0.1 hooks: - id: shellcheck # Running on all files causes this issue: From 9554604f3ae85649dfb0d3c7b7f9562efc77366c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:31:00 +0000 Subject: [PATCH 21/56] Auto-bump version to 19.1.0rc1.dev15 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index f81a6b085..6dc2f6498 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev14 +19.1.0rc1.dev15 From b3a3aa495467969a0efcdeeba55681328cfc8fd4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:31:35 -0800 Subject: [PATCH 22/56] Bump mypy from 1.17.1 to 1.19.1 in /.github/workflows (#968) * Bump mypy from 1.17.1 to 1.19.1 in /.github/workflows Bumps [mypy](https://github.com/python/mypy) from 1.17.1 to 1.19.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.17.1...v1.19.1) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.19.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Address stubtest errors with new mypy version. These class constructors that shouldn't take in any arguments. - CI/CD: Ignore warning about disjoint_bases decorator, which isn't included natively until Python 3.15. It is added to typing_extensions package, but I don't want to include an extra dependency for the client just for type hints --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> --- .github/workflows/requirements.txt | 2 +- .github/workflows/smoke-tests.yml | 2 +- aerospike-stubs/aerospike.pyi | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt index e28b6a927..752b55c81 100644 --- a/.github/workflows/requirements.txt +++ b/.github/workflows/requirements.txt @@ -1,3 +1,3 @@ parver==0.5 crudini==0.9.4 -mypy==1.17.1 +mypy==1.19.1 diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 821555692..a5e950df1 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -242,7 +242,7 @@ jobs: - run: pip install mypy -c requirements.txt working-directory: .github/workflows - - run: stubtest aerospike --allowlist stubtest-allowlist + - run: stubtest aerospike --allowlist stubtest-allowlist --ignore-disjoint-bases test-full-suite: strategy: diff --git a/aerospike-stubs/aerospike.pyi b/aerospike-stubs/aerospike.pyi index 4e3a19611..d80dccfbd 100644 --- a/aerospike-stubs/aerospike.pyi +++ b/aerospike-stubs/aerospike.pyi @@ -327,11 +327,11 @@ EXP_LOOPVAR_INDEX: Literal[2] @final class CDTInfinite: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... @final class CDTWildcard: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... @final class Transaction: @@ -482,7 +482,7 @@ class Scan: @final class null: - def __init__(self, *args, **kwargs) -> None: ... + def __init__(self) -> None: ... def calc_digest(ns: str, set: str, key: Union[str, int, bytearray]) -> bytearray: ... def client(config: dict) -> Client: ... From 2d0bff6bb01c2d3ddc17c507c640f37f0f1c7576 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:32:44 +0000 Subject: [PATCH 23/56] Auto-bump version to 19.1.0rc1.dev16 [skip ci] --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 6dc2f6498..8b4d9a71e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -19.1.0rc1.dev15 +19.1.0rc1.dev16 From ddd33289ba3e5ad87360b4580d9f87d1fa10130b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:36:31 -0800 Subject: [PATCH 24/56] Allow compiling Python client C code with debug information bundled with the wheel --- setup.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index c529748b9..ce5b9a2a9 100644 --- a/setup.py +++ b/setup.py @@ -120,8 +120,15 @@ extra_compile_args.append('-ftest-coverage') extra_link_args.append('-lgcov') +data_files = [] + if UNOPTIMIZED: - extra_compile_args.append('-O0') + if WINDOWS: + extra_compile_args.append('/Zi') + extra_link_args.append('/DEBUG') + data_files.append("*.pdb") + else: + extra_compile_args.append('-O0') ################################################################################ # STATIC SSL LINKING BUILD SETTINGS @@ -328,5 +335,6 @@ def clean(): cmdclass={ 'build': CClientBuild, 'clean': CClientClean - } + }, + data_files=data_files ) From c0505e84d6e543324e78d7b47a7470f25602c191 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 09:58:19 -0800 Subject: [PATCH 25/56] upload .dmp file to github as an artifact. it can be analyzed anywhere --- .github/workflows/build-wheels.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 57736cf75..f89df242a 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -439,14 +439,22 @@ jobs: shell: bash - if: ${{ inputs.platform-tag == 'win_amd64' }} + id: run-tests run: | curl -O https://download.sysinternals.com/files/Procdump.zip unzip Procdump.zip mkdir dumps - ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest new_tests + ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash + - if: ${{ steps.run-tests.outcome == 'failed' }} + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + with: + path: ./test/dumps/* + name: dump + if-no-files-found: error + # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # working-directory: test # shell: bash From dc98f260f4295dfe622f5a8df03b7f736b56540e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:11:27 -0800 Subject: [PATCH 26/56] fix... --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f89df242a..f4075b173 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -448,7 +448,7 @@ jobs: working-directory: test shell: bash - - if: ${{ steps.run-tests.outcome == 'failed' }} + - if: ${{ steps.run-tests.outcome == 'failure' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* From d1ebbdedd63188ad898f7c8f49b7b57c62b974f0 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:29:51 -0800 Subject: [PATCH 27/56] not sure what error code is returned from procdump --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index f4075b173..a6157cf27 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -448,7 +448,7 @@ jobs: working-directory: test shell: bash - - if: ${{ steps.run-tests.outcome == 'failure' }} + - if: ${{ failure() && steps.run-tests.outcome == 'failure' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* From eebff91546ac8340c19690a25e0839a29d39b9ba Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:50:23 -0800 Subject: [PATCH 28/56] prevent jobs overriding each other's dump files --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 4a121e71d..9badfac7c 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -452,7 +452,7 @@ jobs: uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* - name: dump + name: dump-${{ matrix.python-tag }} if-no-files-found: error # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From a86198567e9679b7dd11d84a23ec2be901c4ba4d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Fri, 20 Feb 2026 15:22:23 -0800 Subject: [PATCH 29/56] Run with debug logging --- test/new_tests/conftest.py | 2 +- test/new_tests/test_dynamic_config.py | 2 +- test/new_tests/test_log.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/new_tests/conftest.py b/test/new_tests/conftest.py index 514ff0f50..ef57dbbb6 100644 --- a/test/new_tests/conftest.py +++ b/test/new_tests/conftest.py @@ -239,7 +239,7 @@ def invalid_key(request): yield request.param -# aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) +aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) # aerospike.set_log_handler(None) def verify_record_ttl(client: aerospike.Client, key, expected_ttl: int): diff --git a/test/new_tests/test_dynamic_config.py b/test/new_tests/test_dynamic_config.py index 857ded21e..ec2bfdc12 100644 --- a/test/new_tests/test_dynamic_config.py +++ b/test/new_tests/test_dynamic_config.py @@ -42,7 +42,7 @@ def show_more_logs(self): # TODO: currently there is no way to restore the log handler and level before running this test # These are the defaults in the implementation - aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) + # aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) @pytest.fixture def cleanup_metrics_logs(self): diff --git a/test/new_tests/test_log.py b/test/new_tests/test_log.py index 0a222eef8..1ec737011 100644 --- a/test/new_tests/test_log.py +++ b/test/new_tests/test_log.py @@ -22,7 +22,7 @@ def teardown_class(cls): """ Set the class level logger to a no-op to ensure no problems later """ - aerospike.set_log_level(aerospike.LOG_LEVEL_ERROR) + aerospike.set_log_level(aerospike.LOG_LEVEL_DEBUG) aerospike.set_log_handler(None) def test_set_log_level_with_correct_argument(self): From ff2d7fa3e05e44c99568f0a60c0902ef0f711199 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:10:23 -0800 Subject: [PATCH 30/56] Clean up setup.py --- setup.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index ce5b9a2a9..72c7146c9 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,6 @@ BASEPATH = os.path.dirname(os.path.abspath(__file__)) AEROSPIKE_C_HOME = os.path.join(BASEPATH, 'aerospike-client-c') -VS_PROJECT_CONFIGURATION = os.getenv("VS_PROJECT_CONFIGURATION", "Release") AEROSPIKE_C_TARGET = None PLATFORM = platform.platform(1) LINUX = 'Linux' in PLATFORM @@ -127,8 +126,10 @@ extra_compile_args.append('/Zi') extra_link_args.append('/DEBUG') data_files.append("*.pdb") + VS_PROJECT_CONFIGURATION = "Release" else: extra_compile_args.append('-O0') + VS_PROJECT_CONFIGURATION = "Debug" ################################################################################ # STATIC SSL LINKING BUILD SETTINGS @@ -174,7 +175,7 @@ libraries = libraries + ['rt'] AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: - if VS_PROJECT_CONFIGURATION == "Release": + if VS_PROJECT_CONFIGURATION: libraries.append("pthreadVC2") else: libraries.append("pthreadVC2d") From b3eb8d46b770d45c56a917bcba407ed1053846fe Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:12:13 -0800 Subject: [PATCH 31/56] Clean up --- .github/workflows/build-wheels.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 9badfac7c..741bd8abe 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -328,6 +328,10 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR + # --no-mangle-all to make sure .pdb files match the .dll files + # delvewheel mangles the .dll file names but not the .pdb file names + # --include-symbols to include the .pdb files in the wheel + # TODO: need to find way to add path properly here CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --no-mangle-all --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > @@ -336,7 +340,6 @@ jobs: delocate-listdeps {dest_dir}/*.whl | grep libssl.3.dylib CIBW_TEST_COMMAND: ${{ env.TEST_COMMAND }} CIBW_DEBUG_KEEP_CONTAINER: 1 - VS_PROJECT_CONFIGURATION: debug # - name: Setup tmate session # if: ${{ !cancelled() }} From d46be411a72cdb502d56526c723737112c89f6f5 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:42:48 -0800 Subject: [PATCH 32/56] Run with procdump by default since there's little overhead (TODO need to compare with dev branch) --- .github/workflows/build-wheels.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 741bd8abe..4f66c3cc7 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -443,11 +443,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests - run: | - curl -O https://download.sysinternals.com/files/Procdump.zip - unzip Procdump.zip - mkdir dumps - ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From 7fca5de1e1e2d3b958d35777701d9425ab46b802 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:49:23 -0800 Subject: [PATCH 33/56] Try running Dr Memory in CI/CD. TODO need to generate suppressions file --- .github/workflows/build-wheels.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 4f66c3cc7..bdfd6f9ed 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -443,7 +443,8 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests - run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: drmemory -light -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From 5bf8e2855ad6298a961db8316bd553f41158d21b Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:55:47 -0800 Subject: [PATCH 34/56] Fix --- setup.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 72c7146c9..6ca478dba 100644 --- a/setup.py +++ b/setup.py @@ -126,10 +126,8 @@ extra_compile_args.append('/Zi') extra_link_args.append('/DEBUG') data_files.append("*.pdb") - VS_PROJECT_CONFIGURATION = "Release" else: extra_compile_args.append('-O0') - VS_PROJECT_CONFIGURATION = "Debug" ################################################################################ # STATIC SSL LINKING BUILD SETTINGS @@ -149,6 +147,11 @@ ################################################################################ if WINDOWS: + if UNOPTIMIZED: + VS_PROJECT_CONFIGURATION = "Debug" + else: + VS_PROJECT_CONFIGURATION = "Release" + AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME tree = ET.parse(f"{AEROSPIKE_C_TARGET}/vs/aerospike/packages.config") packages = tree.getroot() @@ -175,7 +178,7 @@ libraries = libraries + ['rt'] AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: - if VS_PROJECT_CONFIGURATION: + if UNOPTIMIZED: libraries.append("pthreadVC2") else: libraries.append("pthreadVC2d") From a014bf3f665ab025371596063035ff818277f10e Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 12:50:31 -0800 Subject: [PATCH 35/56] Fix --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 6ca478dba..a81528f72 100644 --- a/setup.py +++ b/setup.py @@ -179,9 +179,9 @@ AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: if UNOPTIMIZED: - libraries.append("pthreadVC2") - else: libraries.append("pthreadVC2d") + else: + libraries.append("pthreadVC2") extra_compile_args.append("-DAS_SHARED_IMPORT") include_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/include") else: From 3105d0e9f9d5af0f51701e6be7f5a6763c38a69a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:24:39 -0800 Subject: [PATCH 36/56] Fix workflow --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index bdfd6f9ed..31a405ae0 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -248,7 +248,7 @@ jobs: shell: bash - name: Set unoptimize flag - if: ${{ inputs.unoptimized && (startsWith(inputs.platform-tag, 'manylinux') || startsWith(inputs.platform-tag, 'macosx')) }} + if: ${{ inputs.unoptimized }} run: echo "UNOPTIMIZED=1" >> $GITHUB_ENV - name: Set include dsym flag From 41fbe58571277c008514136d9856a0e9fe3e399a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:33:09 -0800 Subject: [PATCH 37/56] This syntax probably only works for bash --- .github/workflows/build-wheels.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 31a405ae0..e193bb9a1 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -250,6 +250,7 @@ jobs: - name: Set unoptimize flag if: ${{ inputs.unoptimized }} run: echo "UNOPTIMIZED=1" >> $GITHUB_ENV + shell: bash - name: Set include dsym flag if: ${{ inputs.include-debug-info-for-macos && startsWith(inputs.platform-tag, 'macosx') }} From f77348c5804eb58c2da8c18c0ab8e728327beb97 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:40:17 -0800 Subject: [PATCH 38/56] using a glob pattern for data_files causes an error. just exclude bc we only need c client line numbers for now in windbg's stack trace --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a81528f72..934a91ee8 100644 --- a/setup.py +++ b/setup.py @@ -125,7 +125,7 @@ if WINDOWS: extra_compile_args.append('/Zi') extra_link_args.append('/DEBUG') - data_files.append("*.pdb") + # data_files.append("*.pdb") else: extra_compile_args.append('-O0') From faf226af2817a4465f644125a7419a29561bc8f6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:52:42 -0800 Subject: [PATCH 39/56] Try running drmemory without -light flag --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e193bb9a1..8df0ad9af 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -444,7 +444,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests - run: drmemory -light -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From ceb737f392c98c269d960b94e8ebb94589ba82b7 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:05:58 -0800 Subject: [PATCH 40/56] Revert to running with procdump --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 8df0ad9af..e3007f888 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -444,8 +444,8 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests - run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} - # run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From a44159ad112944780f3e74b8ba801e47842aef67 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:13:57 -0800 Subject: [PATCH 41/56] fix. procdump no longer in cwd --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e3007f888..839ef82b5 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -445,7 +445,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests # run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} - run: ./procdump.exe -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From 87e8288556cdcee96e5d3a188ce7ddddd08b6f91 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:21:13 -0800 Subject: [PATCH 42/56] Fix workflow --- .github/workflows/build-wheels.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 839ef82b5..b1fe25831 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -445,7 +445,9 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests # run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} - run: procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + run: | + mkdir dumps + procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From a84d479f649b620699fe2b174876333ddb42438a Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 14:33:10 -0800 Subject: [PATCH 43/56] Test Brian's fix for the Windows seg fault --- .gitmodules | 2 +- aerospike-client-c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 136ba68cb..d14b661b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,4 +2,4 @@ path = aerospike-client-c # url = git@github.com:aerospike/aerospike-client-c.git url = https://github.com/aerospike/aerospike-client-c.git - branch = stage + branch = CLIENT-4327 diff --git a/aerospike-client-c b/aerospike-client-c index 4297aaf5a..61f9fc4a0 160000 --- a/aerospike-client-c +++ b/aerospike-client-c @@ -1 +1 @@ -Subproject commit 4297aaf5ac03d6f7180b43f4e2576b626b597991 +Subproject commit 61f9fc4a0bbc02582e4ca926916ec07e6cfef172 From 9b981ea689c692d27b1bc6afe5a0b62a8c24ad70 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 15:16:00 -0800 Subject: [PATCH 44/56] Specify path to find pdb files --- .github/workflows/build-wheels.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index b1fe25831..7b2253789 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -444,10 +444,12 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests - # run: drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} run: | - mkdir dumps - procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') + drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # run: | + # mkdir dumps + # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash From 60f0f6877584fe9e158a025f79584f79828c6494 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:09:08 -0800 Subject: [PATCH 45/56] Increase stack trace size to 100 frames --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7b2253789..6c02d85c9 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -446,7 +446,7 @@ jobs: id: run-tests run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') - drmemory -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 100 -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From e7164b026de458a88c7ce04dcc7f2577b38020c4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:20:44 -0800 Subject: [PATCH 46/56] Force CPython to use malloc for all memory allocations --- .github/workflows/build-wheels.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 6c02d85c9..b6eb824be 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -446,6 +446,7 @@ jobs: id: run-tests run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') + export PYTHONMALLOC=malloc drmemory -callstack_max_frames 100 -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps From 73a5ef815d3f04e058102d4b929aa06b71f281b6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:33:58 -0800 Subject: [PATCH 47/56] Increase stack frame limit to 200 since some stack traces are over 100 lines. Only report errors if the top 200 lines contain a line from the Python client or C client --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index b6eb824be..c6c8daa23 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -447,7 +447,7 @@ jobs: run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 100 -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**\*.pyd;**\aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 48be865265c472c37de89f59f7d29f67bcd9e6d6 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:41:49 -0800 Subject: [PATCH 48/56] \ only works for windows --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c6c8daa23..03fdda9f4 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -447,7 +447,7 @@ jobs: run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**\*.pyd;**\aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd;**/aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 26404d005e3773107d56c7e86d033da001626bdc Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:12:24 -0800 Subject: [PATCH 49/56] API docs says comma separated. --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 03fdda9f4..d635cd6d5 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -447,7 +447,7 @@ jobs: run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd;**/aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd,**/aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 2702124f0ba8e5985fc0e7bd53095fc165d2a5ac Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:22:52 -0800 Subject: [PATCH 50/56] fix... --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index d635cd6d5..b4d7ee50e 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -447,7 +447,7 @@ jobs: run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd,**/aerospike.dll' aerospike -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 5fea96f2d8a39eeb89a8bcb2e75e6c81bafe2af9 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Mon, 23 Feb 2026 19:00:42 -0800 Subject: [PATCH 51/56] 200 is too slow --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index b4d7ee50e..ffd8e203c 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -447,7 +447,7 @@ jobs: run: | export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 200 -lib_allowlist_frames 200 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From e4848a14f669d1ca1f2552bc53fe098fc882d0c4 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 24 Feb 2026 08:04:45 -0800 Subject: [PATCH 52/56] Replace allowlist with suppressions file. Should be faster --- .github/workflows/build-wheels.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index ffd8e203c..1d19a1a88 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -445,9 +445,11 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests run: | + wget https://raw.githubusercontent.com/python/cpython/refs/heads/$PYTHON_VERSION/Misc/valgrind-python.supp export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -suppress valgrind-python.supp -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 7f4a34b23e0efc4d2e84977165084cec89e70026 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 24 Feb 2026 08:13:20 -0800 Subject: [PATCH 53/56] Keep forgetting wget doesn't exist on windows --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 1d19a1a88..6c69f2dd8 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -445,7 +445,7 @@ jobs: - if: ${{ inputs.platform-tag == 'win_amd64' }} id: run-tests run: | - wget https://raw.githubusercontent.com/python/cpython/refs/heads/$PYTHON_VERSION/Misc/valgrind-python.supp + curl -O https://raw.githubusercontent.com/python/cpython/refs/heads/$PYTHON_VERSION/Misc/valgrind-python.supp export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc drmemory -suppress valgrind-python.supp -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} From 03f4b58e15cac8998fd8231bbb8f16103455901d Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 24 Feb 2026 08:27:47 -0800 Subject: [PATCH 54/56] Cherrypick cicd changes from CLIENT-4237-debug-windows-crash-during-admin-tests --- .github/workflows/build-wheels.yml | 32 +++++++++++++++++++++++++++--- setup.py | 28 ++++++++++++++++++++------ 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 9ea3c29c6..6c69f2dd8 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -248,8 +248,9 @@ jobs: shell: bash - name: Set unoptimize flag - if: ${{ inputs.unoptimized && (startsWith(inputs.platform-tag, 'manylinux') || startsWith(inputs.platform-tag, 'macosx')) }} + if: ${{ inputs.unoptimized }} run: echo "UNOPTIMIZED=1" >> $GITHUB_ENV + shell: bash - name: Set include dsym flag if: ${{ inputs.include-debug-info-for-macos && startsWith(inputs.platform-tag, 'macosx') }} @@ -328,7 +329,11 @@ jobs: auditwheel repair -w {dest_dir} {wheel} && auditwheel show {dest_dir}/* && rm -rf $WHEEL_DIR - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Release -w {dest_dir} {wheel}" + # --no-mangle-all to make sure .pdb files match the .dll files + # delvewheel mangles the .dll file names but not the .pdb file names + # --include-symbols to include the .pdb files in the wheel + # TODO: need to find way to add path properly here + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -vv --add-path ./aerospike-client-c/vs/x64/Debug --no-mangle-all --include-symbols -w {dest_dir} {wheel}" # We also want to verify the same thing on macos CIBW_REPAIR_WHEEL_COMMAND_MACOS: > delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && @@ -437,10 +442,31 @@ jobs: working-directory: test shell: bash - - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + - if: ${{ inputs.platform-tag == 'win_amd64' }} + id: run-tests + run: | + curl -O https://raw.githubusercontent.com/python/cpython/refs/heads/$PYTHON_VERSION/Misc/valgrind-python.supp + export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') + export PYTHONMALLOC=malloc + drmemory -suppress valgrind-python.supp -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # run: | + # mkdir dumps + # procdump -accepteula -e -x ./dumps python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} working-directory: test shell: bash + - if: ${{ failure() && steps.run-tests.outcome == 'failure' }} + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + with: + path: ./test/dumps/* + name: dump-${{ matrix.python-tag }} + if-no-files-found: error + + # - run: python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + # working-directory: test + # shell: bash + - name: Show job status for commit if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} uses: myrotvorets/set-commit-status-action@3730c0a348a2ace3c110851bed53331bc6406e9f # v2.0.1 diff --git a/setup.py b/setup.py index 4298d9e30..934a91ee8 100644 --- a/setup.py +++ b/setup.py @@ -119,8 +119,15 @@ extra_compile_args.append('-ftest-coverage') extra_link_args.append('-lgcov') +data_files = [] + if UNOPTIMIZED: - extra_compile_args.append('-O0') + if WINDOWS: + extra_compile_args.append('/Zi') + extra_link_args.append('/DEBUG') + # data_files.append("*.pdb") + else: + extra_compile_args.append('-O0') ################################################################################ # STATIC SSL LINKING BUILD SETTINGS @@ -140,6 +147,11 @@ ################################################################################ if WINDOWS: + if UNOPTIMIZED: + VS_PROJECT_CONFIGURATION = "Debug" + else: + VS_PROJECT_CONFIGURATION = "Release" + AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME tree = ET.parse(f"{AEROSPIKE_C_TARGET}/vs/aerospike/packages.config") packages = tree.getroot() @@ -166,7 +178,10 @@ libraries = libraries + ['rt'] AEROSPIKE_C_TARGET = AEROSPIKE_C_HOME + '/target/Linux-' + machine elif WINDOWS: - libraries.append("pthreadVC2") + if UNOPTIMIZED: + libraries.append("pthreadVC2d") + else: + libraries.append("pthreadVC2") extra_compile_args.append("-DAS_SHARED_IMPORT") include_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/include") else: @@ -184,9 +199,9 @@ ] else: include_dirs.append(AEROSPIKE_C_TARGET + '/src/include') - library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/Release") + library_dirs.append(f"{AEROSPIKE_C_TARGET}/vs/packages/aerospike-client-c-dependencies.{c_client_dependencies_version}/build/native/lib/x64/{VS_PROJECT_CONFIGURATION}") # Needed for linking the Python client with the C client - extra_objects.append(AEROSPIKE_C_TARGET + "/vs/x64/Release/aerospike.lib") + extra_objects.append(AEROSPIKE_C_TARGET + f"/vs/x64/{VS_PROJECT_CONFIGURATION}/aerospike.lib") os.putenv('CPATH', ':'.join(include_dirs)) os.environ['CPATH'] = ':'.join(include_dirs) @@ -230,7 +245,7 @@ def clean(): cmd = [ 'msbuild', 'vs/aerospike.sln', - '/property:Configuration=Release' + f"/property:Configuration={VS_PROJECT_CONFIGURATION}" ] else: cmd = [ @@ -324,5 +339,6 @@ def clean(): cmdclass={ 'build': CClientBuild, 'clean': CClientClean - } + }, + data_files=data_files ) From f84bbe198fe69933bae4b5080b98fb3489f9b244 Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 24 Feb 2026 08:35:59 -0800 Subject: [PATCH 55/56] Get baseline from dev branch --- .github/workflows/build-wheels.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 6c69f2dd8..421508802 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -448,7 +448,8 @@ jobs: curl -O https://raw.githubusercontent.com/python/cpython/refs/heads/$PYTHON_VERSION/Misc/valgrind-python.supp export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc - drmemory -suppress valgrind-python.supp -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + mkdir dumps + drmemory -suppress valgrind-python.supp -logdir dumps -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps @@ -456,8 +457,8 @@ jobs: working-directory: test shell: bash - - if: ${{ failure() && steps.run-tests.outcome == 'failure' }} - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + # - if: ${{ failure() && steps.run-tests.outcome == 'failure' }} + - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: path: ./test/dumps/* name: dump-${{ matrix.python-tag }} From 00ca4dc0c65e92f7bae28929873130e185ac29cb Mon Sep 17 00:00:00 2001 From: Julian Nguyen <109386615+juliannguyen4@users.noreply.github.com> Date: Tue, 24 Feb 2026 10:03:32 -0800 Subject: [PATCH 56/56] Disable leak checking to make drmemory run faster --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 421508802..53cdf03f8 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -449,7 +449,7 @@ jobs: export _NT_SYMBOL_PATH=$(pip show aerospike | grep Location | cut -f 2- -d' ') export PYTHONMALLOC=malloc mkdir dumps - drmemory -suppress valgrind-python.supp -logdir dumps -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} + drmemory -no_count_leaks -suppress valgrind-python.supp -logdir dumps -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # drmemory -callstack_max_frames 30 -lib_allowlist_frames 30 -lib_allowlist '**/*.pyd,**/aerospike.dll' -- python3 -m pytest -vvs --full-trace new_tests/${{ inputs.test-file }} # run: | # mkdir dumps