Skip to content

NIFI-15775 Refactor Snowflake Snowpipe Ingest without SDK#11090

Merged
pvillard31 merged 3 commits intoapache:mainfrom
exceptionfactory:NIFI-15775
Apr 2, 2026
Merged

NIFI-15775 Refactor Snowflake Snowpipe Ingest without SDK#11090
pvillard31 merged 3 commits intoapache:mainfrom
exceptionfactory:NIFI-15775

Conversation

@exceptionfactory
Copy link
Copy Markdown
Contributor

Summary

NIFI-15775 Refactors existing Snowflake Snowpipe Ingest components to remove the dependency on the snowflake-ingest-sdk, implementing direct integration with the Snowpipe REST API using the Java HttpClient.

With planned future deprecation of Snowpipe Streaming Classic Architecture, removal of the snowflake-ingest-sdk avoids future maintenance issues and provides a clear scope of integration using Snowflake Snowpipe loading from Stages.

The refactored implementation keeps the existing SnowflakeIngestManagerProviderService Controller Service interface and implementation, avoiding the need for property migration. Changes include removing existing interface methods and adding new methods that follow the pattern of the Snowpipe REST API insertFiles and insertReport methods, preserving existing functionality in the StartSnowflakeIngest and GetSnowflakeIngestStatus Processors.

New implementation classes include the SnowflakeIngestClient to implement HTTP methods, and an Authorization Provider responsible for creating and signing JSON Web Tokens using an RSA Private Key. New unit tests exercise these HTTP requests using the OkHttp MockWebServer.

Tracking

Please complete the following tracking steps prior to pull request creation.

Issue Tracking

Pull Request Tracking

  • Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
  • Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000
  • Pull request contains commits signed with a registered key indicating Verified status

Pull Request Formatting

  • Pull Request based on current revision of the main branch
  • Pull Request refers to a feature branch with one commit containing changes

Verification

Please indicate the verification steps performed prior to pull request creation.

Build

  • Build completed using ./mvnw clean install -P contrib-check
    • JDK 21
    • JDK 25

Licensing

  • New dependencies are compatible with the Apache License 2.0 according to the License Policy
  • New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

  • Documentation formatting appears as expected in rendered files

- Removed snowflake-ingest-sdk dependency
- Refactored SnowflakeIngestManagerProviderService interface with ingest methods
- Adjusted Snowflake Processors to use new methods
- Added SnowpipeIngestClient implementing Snowpipe REST API methods
@exceptionfactory
Copy link
Copy Markdown
Contributor Author

Thanks for the review @pvillard31, I pushed an update to address the initial feedback.

Copy link
Copy Markdown
Contributor

@pvillard31 pvillard31 left a comment

Choose a reason for hiding this comment

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

Thanks @exceptionfactory - LGTM, merging

@pvillard31 pvillard31 merged commit a658c33 into apache:main Apr 2, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants