Skip to content

Conversation

@alinaliBQ
Copy link
Collaborator

@alinaliBQ alinaliBQ commented Dec 18, 2025

Rationale for this change

#48594

What changes are included in this PR?

  • Resolve caching issue inside ODBC CI, so build time is generally less than 1hr
  • Removed environment variables that are not necessary for ODBC building to keep workflow simple
  • Changed ODBC workflow to be triggered when ODBC files are changed

Are these changes tested?

  • Tested in CI

Are there any user-facing changes?

N/A

@github-actions
Copy link

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

@github-actions github-actions bot added the awaiting review Awaiting review label Dec 18, 2025
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch 7 times, most recently from 6efa7d4 to c32f221 Compare December 18, 2025 23:32
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch from 4b78fb7 to d0bd9f6 Compare December 19, 2025 00:06
@alinaliBQ
Copy link
Collaborator Author

Hi @pitrou and @raulcd, to follow up on #48313 I have opened this draft PR.

As Raul has pointed out in #48313 (comment), there is an issue pushing the packages to nuget. Therefore, when a new ODBC build begins, all vcpkg packages are rebuilt and that is the root cause of the long ODBC build time.

Does it require any changes in the GitHub repository settings to allow the new workflow to push packages to https://nuget.pkg.github.com/apache?

@alinaliBQ
Copy link
Collaborator Author

alinaliBQ commented Dec 19, 2025

During investigation, I tried running vcpkg install command before the cpp_build.sh script in C GLib & Ruby MSVC workflow, and it has the same 403 error as ODBC MSVC. But the script cpp_build.sh in GLib workflow can still publish nuget packages normally. I am not sure why the same script works in GLib MSVC, but not in ODBC MSVC.
Run log: https://github.com/apache/arrow/actions/runs/20353354024/job/58483242851?pr=48595#step:13:3353

@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch 9 times, most recently from 0e31acb to 0c911a5 Compare December 20, 2025 00:14
@alinaliBQ alinaliBQ changed the title GH-48594: [C++][FlightRPC] Fix ODBC CI Caching Issue GH-48594: [C++][FlightRPC] Fix ODBC CI Nuget Package Upload Issue Dec 20, 2025
@alinaliBQ alinaliBQ changed the title GH-48594: [C++][FlightRPC] Fix ODBC CI Nuget Package Upload Issue GH-48594: [C++][FlightRPC] Fix ODBC CI Long Build Time Issue Dec 20, 2025
@alinaliBQ
Copy link
Collaborator Author

alinaliBQ commented Dec 20, 2025

ODBC build time has been reduced to around 40 - 60 mins. PR is ready for review. Raised an issue for the flakey 403 request error #48604. Raised #48606 for nuget push timeout issue.

@alinaliBQ alinaliBQ marked this pull request as ready for review December 20, 2025 01:45
@alinaliBQ alinaliBQ requested a review from raulcd as a code owner December 20, 2025 01:45
@alinaliBQ
Copy link
Collaborator Author

alinaliBQ commented Jan 2, 2026

@lidavidm @kou @raulcd This PR is ready for review!

@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch 2 times, most recently from 8a583d0 to 3047270 Compare January 6, 2026 19:09
ARROW_BUILD_TYPE: release
ARROW_DEPENDENCY_SOURCE: VCPKG
ARROW_FLIGHT_SQL_ODBC: ON
ARROW_SIMD_LEVEL: AVX2
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ARROW_SIMD_LEVEL is not required for building ODBC and can be omitted

shell: bash
run: |
ci/scripts/install_cmake.sh 4.1.2 /usr
- name: Install ccache
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cmake 4.1.2 is not required for Arrow ODBC, removing this custom cmake install resolved the issue as the built-in cmake works with the vcpkg nuget package upload.

@github-actions github-actions bot added awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Jan 6, 2026
contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') ||
contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++')
contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') ||
contains(join(github.event.pull_request.changed_files, ' '), 'cpp/src/arrow/flight/sql/odbc/')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You want to run this job even if we don't have CI: Extra labels, right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it will be easier to run this job automatically. Is this approach alright?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that's the right approach, as ODBC can still be affected by non-ODBC changes. We don't do this for other optional jobs such as CUDA, etc.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that ODBC can be effected by non-ODBC changes, and I have removed this approach.
Is there a way for non-admin users to trigger the CI: Extra jobs? If I have access to add the CI extra labels, I don't mind adding the labels for ODBC PRs to run the ODBC workflows

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Kou for pointing me there. Will take a look.
I have been given Triage access this morning, I believe now I have access to add the CI: Extra labels.

Copy link
Collaborator Author

@alinaliBQ alinaliBQ Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kou I have added a section to add CI: Extra in labeler.yml. However it is not adding new labels.
From my testing in my fork repo, I found that the GitHub Actions only picks up on the labeler.yml from the target branch, and not from the head branch. I found even when I comment out contents from labeler.yml (in head branch), new labels are still being added.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that the default branch's labelar.yml is only used.

Could you update the PR description?

@github-actions github-actions bot added awaiting changes Awaiting changes awaiting change review Awaiting change review and removed awaiting committer review Awaiting committer review awaiting changes Awaiting changes labels Jan 7, 2026
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch 2 times, most recently from 5c91082 to dc636af Compare January 8, 2026 22:05
Attempt to resolve caching issue with ODBC CI

Apply Kou's suggestion for nuget timeout

Add write permission to store vcpkg cache

Check nuget paths in Ruby Glib and ODBC

Run vcpkg install after vcpkg is set in GLib

Enable vcpkg verbose in GLib

* confirmed `vcpkg install` command returns 403 error

Add ARROW_HOME

Remove `ARROW_SIMD_LEVEL` as it is not required for ODBC.

Remove debug msgs

Cannot get vcpkg in cpp_build to show debug messages

Move location of `packages: write`

Attempt to add `ARROW_DEPENDENCY_USE_SHARED - off`

Revert "Move location of `packages: write`"

This reverts commit b62e04e.

Revert "Attempt to add `ARROW_DEPENDENCY_USE_SHARED - off`"

This reverts commit 5fdf425.

Add GLib MSVC build to C++ Extra

TEMP disable ODBC build

Disable cmake and enable build

Re-enable cmake 4.1.2 and use install_vcpkg.sh to install vcpkg
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch from dc636af to e6223ef Compare January 8, 2026 22:07
@github-actions github-actions bot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Jan 9, 2026
@alinaliBQ alinaliBQ added the CI: Extra: C++ Run extra C++ CI label Jan 9, 2026
@github-actions github-actions bot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Jan 9, 2026
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch from 4ef1276 to 1c5f256 Compare January 9, 2026 23:32
@alinaliBQ alinaliBQ removed the CI: Extra: C++ Run extra C++ CI label Jan 9, 2026
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch from 1c5f256 to 06dc93f Compare January 9, 2026 23:35
Cannot add ODBC Label because it requires write access
@alinaliBQ alinaliBQ force-pushed the gh-48594-fix-msvc-ci branch from 06dc93f to 519da21 Compare January 9, 2026 23:37
@alinaliBQ alinaliBQ closed this Jan 9, 2026
@alinaliBQ alinaliBQ reopened this Jan 9, 2026
@github-actions github-actions bot added awaiting changes Awaiting changes and removed awaiting change review Awaiting change review labels Jan 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting changes Awaiting changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants