Skip to content

GH-48894: [Python][C++] Use base Azure::Core::RequestFailedException instead of final Azure::Storage::StorageException and set minimum nodejs on conda env to 16 for Azurite to work - #48895

Merged
raulcd merged 4 commits into
apache:mainfrom
raulcd:GH-48894
Jan 20, 2026

Conversation

@raulcd

@raulcdraulcd commented Jan 19, 2026

Copy link
Copy Markdown
Member

Rationale for this change

nodejs 12 is currently being installed on conda. CI jobs are failing and or segfaulting due to azurite failing with old versions.

2026-01-13T18:32:39.6961900Z #15 [ 9/11] RUN /arrow/ci/scripts/install_azurite.sh
2026-01-13T18:32:39.9624124Z #15 0.417 Node.js version = v12.4.0
2026-01-13T18:32:42.2087322Z #15 2.663 npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
2026-01-13T18:32:42.3917601Z #15 2.846 npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
2026-01-13T18:32:51.4870197Z #15 11.94 npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
2026-01-13T18:32:51.7035681Z #15 12.01 npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
2026-01-13T18:33:02.1406491Z #15 22.59 /opt/conda/envs/arrow/bin/azurite -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/azurite.js
2026-01-13T18:33:02.3841290Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-queue -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/queue/main.js
2026-01-13T18:33:02.3842792Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-blob -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/blob/main.js
2026-01-13T18:33:02.3844216Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-table -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/table/main.js
2026-01-13T18:33:02.3846002Z #15 22.66 npm WARN applicationinsights@2.9.8 requires a peer of applicationinsights-native-metrics@* but none is installed. You must install peer dependencies yourself.
2026-01-13T18:33:02.3847278Z #15 22.66 2026-01-13T18:33:02.3847564Z #15 22.66 + azurite@3.35.0
2026-01-13T18:33:02.3848038Z #15 22.66 added 376 packages from 296 contributors in 20.644s
2026-01-13T18:33:02.3848830Z #15 22.69 /opt/conda/envs/arrow/bin/azurite
2026-01-13T18:33:02.8929329Z #15 23.35 /opt/conda/envs/arrow/lib/node_modules/azurite/node_modules/fs-extra/lib/util/async.js:14
2026-01-13T18:33:02.8930231Z #15 23.35 (err) => err ?? new Error('unknown error')
2026-01-13T18:33:02.8930740Z #15 23.35 ^

The job on PyArrow was segfaulting due to an Exception being thrown but not catch. In general we were using Azure::Storage::StorageException but Azure::Core::Http::TransportException could also be thrown on some cases.
Bot are final but inherit from Azure::Core::RequestFailedException.

What changes are included in this PR?

  • Pin minimum nodejs version to 16 so the failure doesn't happen again.
  • Update catching Azure::Storage::StorageException to Azure::Core::RequestFailedException so Azure::Core::Http::TransportException is also catch.

Are these changes tested?

Yes on CI.

Are there any user-facing changes?

No

@raulcd

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-conda-*

@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #48894has been automatically assigned in GitHub to PR creator.

@github-actionsgithub-actionsBot added the awaiting committer review Awaiting committer review label Jan 19, 2026
@github-actions

Copy link
Copy Markdown

Revision: 3fabe1d

Submitted crossbow builds: ursacomputing/crossbow @ actions-cd25c6296c

TaskStatus
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions

@raulcd
raulcd marked this pull request as ready for review January 19, 2026 12:11
@raulcd
raulcd marked this pull request as draft January 19, 2026 13:20
@raulcd

Copy link
Copy Markdown
MemberAuthor

Moving this back to draft to investigate the segfault before fixing the nodejs version.

…age::StorageException so we also catch Azure::Core::Http::TransportException
@raulcd

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

Copy link
Copy Markdown

Revision: 3ccfdb7

Submitted crossbow builds: ursacomputing/crossbow @ actions-d7c2a57735

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions

@raulcdraulcd changed the title GH-48894: [Python] Set minimum nodejs on conda env to 16 for Azurite to workGH-48894: [Python][C++] Set minimum nodejs on conda env to 16 for Azurite to work and use base Azure::Core::RequestFailedException instead of final Azure::Storage::StorageExceptionJan 20, 2026
@raulcd
raulcd marked this pull request as ready for review January 20, 2026 08:40
@raulcd

Copy link
Copy Markdown
MemberAuthor

@pitrou is this what you expected? About factoring out the exception-catching code we can follow on a different issue if you want, I am unsure what that would require.
I initially started this PR to fix our current CI failures only.

@raulcd
raulcd requested a review from pitrouJanuary 20, 2026 08:43
@pitrou

Copy link
Copy Markdown
Member

@pitrou is this what you expected?

Yes, it is. Did you check that it averted the crashes by turning them into proper errors?

About factoring out the exception-catching code we can follow on a different issue if you want, I am unsure what that would require.

Looking at the code, I'm not sure there's much to do about it, actually.

@raulcd

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-conda-python-3.13

@github-actions

Copy link
Copy Markdown

Revision: b9b1ab6

Submitted crossbow builds: ursacomputing/crossbow @ actions-35c166620c

TaskStatus
test-conda-python-3.13GitHub Actions

@raulcd

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-conda-python-3.13

@github-actions

Copy link
Copy Markdown

Revision: a86bb98

Submitted crossbow builds: ursacomputing/crossbow @ actions-6ceafde0b6

TaskStatus
test-conda-python-3.13GitHub Actions

@raulcd

Copy link
Copy Markdown
MemberAuthor

Did you check that it averted the crashes by turning them into proper errors?

Yes, I did locally but I've pushed a job without the nodejs bump so we can see it there. Pytest finishes running all tests, it doesn't crash anymore but tests fail as expected:
https://github.com/ursacomputing/crossbow/actions/runs/21166071337/job/60871016940#step:6:6596

opt/conda/envs/arrow/lib/python3.13/site-packages/pyarrow/tests/test_fs.py:329: inazurefsfs.create_dir(container)
pyarrow/_fs.pyx:638: inpyarrow._fs.FileSystem.create_dir
???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > ???
EOSError: Failedtocreateacontainer: pyarrow-filesystem: http://127.0.0.1:35357/devstoreaccount1/pyarrow-filesystemAzureError: [] Failtogetanewconnectionfor: http://127.0.0.1:35357.Couldnotconnecttoserver

@raulcdraulcd changed the title GH-48894: [Python][C++] Set minimum nodejs on conda env to 16 for Azurite to work and use base Azure::Core::RequestFailedException instead of final Azure::Storage::StorageExceptionGH-48894: [Python][C++] Use base Azure::Core::RequestFailedException instead of final Azure::Storage::StorageException and set minimum nodejs on conda env to 16 for Azurite to workJan 20, 2026
@raulcd
raulcd merged commit c183167 into apache:mainJan 20, 2026
53 checks passed
@raulcdraulcd removed the awaiting committer review Awaiting committer review label Jan 20, 2026
@raulcd
raulcd deleted the GH-48894 branch January 20, 2026 14:32
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit c183167.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 14 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd added a commit that referenced this pull request Feb 3, 2026
…instead of final Azure::Storage::StorageException and set minimum nodejs on conda env to 16 for Azurite to work (#48895)
### Rationale for this change
nodejs 12 is currently being installed on conda. CI jobs are failing and or segfaulting due to azurite failing with old versions.
```
2026-01-13T18:32:39.6961900Z #15 [ 9/11] RUN /arrow/ci/scripts/install_azurite.sh
2026-01-13T18:32:39.9624124Z #15 0.417 Node.js version = v12.4.0
2026-01-13T18:32:42.2087322Z #15 2.663 npm WARN deprecated rimraf@ 3.0.2: Rimraf versions prior to v4 are no longer supported
2026-01-13T18:32:42.3917601Z #15 2.846 npm WARN deprecated uuid@ 3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
2026-01-13T18:32:51.4870197Z #15 11.94 npm WARN deprecated glob@ 7.2.3: Glob versions prior to v9 are no longer supported
2026-01-13T18:32:51.7035681Z #15 12.01 npm WARN deprecated inflight@ 1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
2026-01-13T18:33:02.1406491Z #15 22.59 /opt/conda/envs/arrow/bin/azurite -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/azurite.js
2026-01-13T18:33:02.3841290Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-queue -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/queue/main.js
2026-01-13T18:33:02.3842792Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-blob -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/blob/main.js
2026-01-13T18:33:02.3844216Z #15 22.60 /opt/conda/envs/arrow/bin/azurite-table -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/table/main.js
2026-01-13T18:33:02.3846002Z #15 22.66 npm WARN applicationinsights@ 2.9.8 requires a peer of applicationinsights-native-metrics@* but none is installed. You must install peer dependencies yourself.
2026-01-13T18:33:02.3847278Z #15 22.66 2026-01-13T18:33:02.3847564Z #15 22.66 + azurite@ 3.35.0
2026-01-13T18:33:02.3848038Z #15 22.66 added 376 packages from 296 contributors in 20.644s
2026-01-13T18:33:02.3848830Z #15 22.69 /opt/conda/envs/arrow/bin/azurite
2026-01-13T18:33:02.8929329Z #15 23.35 /opt/conda/envs/arrow/lib/node_modules/azurite/node_modules/fs-extra/lib/util/async.js:14
2026-01-13T18:33:02.8930231Z #15 23.35 (err) => err ?? new Error('unknown error')
2026-01-13T18:33:02.8930740Z #15 23.35 ^
```
The job on PyArrow was segfaulting due to an Exception being thrown but not catch. In general we were using `Azure::Storage::StorageException` but `Azure::Core::Http::TransportException` could also be thrown on some cases.
Bot are final but inherit from `Azure::Core::RequestFailedException`.
### What changes are included in this PR?
- Pin minimum nodejs version to 16 so the failure doesn't happen again.
- Update catching `Azure::Storage::StorageException` to `Azure::Core::RequestFailedException` so `Azure::Core::Http::TransportException` is also catch.
### Are these changes tested?
Yes on CI.
### Are there any user-facing changes?
No
* GitHub Issue: #48894
Authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
tobim added a commit to tenzir/tenzir that referenced this pull request Apr 10, 2026
## Description
The main "fix" here is to bump arrow to pull in
apache/arrow#48895 , which could lead to escaped
Azure transport exceptions from arrow filesystem operations.
In order to be more robust against unexpected exceptions, we also copy
their trick and slightly broaden the caught exception to
`Azure::Core::RequestFailedException`, and cover all function calls that
go into the Azure SDK.
https://claude.ai/code/session_01MfTGpRoNmmvrHGYLRwWVTa
---------
Co-authored-by: tobim <tobim@fastmail.fm>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ption instead of final Azure::Storage::StorageException and set minimum nodejs on conda env to 16 for Azurite to work (apache#48895)
### Rationale for this change
nodejs 12 is currently being installed on conda. CI jobs are failing and or segfaulting due to azurite failing with old versions.
```
2026-01-13T18:32:39.6961900Z apache#15 [ 9/11] RUN /arrow/ci/scripts/install_azurite.sh
2026-01-13T18:32:39.9624124Z apache#15 0.417 Node.js version = v12.4.0
2026-01-13T18:32:42.2087322Z apache#15 2.663 npm WARN deprecated rimraf@ 3.0.2: Rimraf versions prior to v4 are no longer supported
2026-01-13T18:32:42.3917601Z apache#15 2.846 npm WARN deprecated uuid@ 3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
2026-01-13T18:32:51.4870197Z apache#15 11.94 npm WARN deprecated glob@ 7.2.3: Glob versions prior to v9 are no longer supported
2026-01-13T18:32:51.7035681Z apache#15 12.01 npm WARN deprecated inflight@ 1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
2026-01-13T18:33:02.1406491Z apache#15 22.59 /opt/conda/envs/arrow/bin/azurite -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/azurite.js
2026-01-13T18:33:02.3841290Z apache#15 22.60 /opt/conda/envs/arrow/bin/azurite-queue -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/queue/main.js
2026-01-13T18:33:02.3842792Z apache#15 22.60 /opt/conda/envs/arrow/bin/azurite-blob -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/blob/main.js
2026-01-13T18:33:02.3844216Z apache#15 22.60 /opt/conda/envs/arrow/bin/azurite-table -> /opt/conda/envs/arrow/lib/node_modules/azurite/dist/src/table/main.js
2026-01-13T18:33:02.3846002Z apache#15 22.66 npm WARN applicationinsights@ 2.9.8 requires a peer of applicationinsights-native-metrics@* but none is installed. You must install peer dependencies yourself.
2026-01-13T18:33:02.3847278Z apache#15 22.66 2026-01-13T18:33:02.3847564Z apache#15 22.66 + azurite@ 3.35.0
2026-01-13T18:33:02.3848038Z apache#15 22.66 added 376 packages from 296 contributors in 20.644s
2026-01-13T18:33:02.3848830Z apache#15 22.69 /opt/conda/envs/arrow/bin/azurite
2026-01-13T18:33:02.8929329Z apache#15 23.35 /opt/conda/envs/arrow/lib/node_modules/azurite/node_modules/fs-extra/lib/util/async.js:14
2026-01-13T18:33:02.8930231Z apache#15 23.35 (err) => err ?? new Error('unknown error')
2026-01-13T18:33:02.8930740Z apache#15 23.35 ^
```
The job on PyArrow was segfaulting due to an Exception being thrown but not catch. In general we were using `Azure::Storage::StorageException` but `Azure::Core::Http::TransportException` could also be thrown on some cases.
Bot are final but inherit from `Azure::Core::RequestFailedException`.
### What changes are included in this PR?
- Pin minimum nodejs version to 16 so the failure doesn't happen again.
- Update catching `Azure::Storage::StorageException` to `Azure::Core::RequestFailedException` so `Azure::Core::Http::TransportException` is also catch.
### Are these changes tested?
Yes on CI.
### Are there any user-facing changes?
No
* GitHub Issue: apache#48894
Authored-by: Raúl Cumplido <raulcumplido@gmail.com>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@raulcd@pitrou