Skip to content

Add comprehensive Resilient Query Engine for Historians, and the SMB AKRI connector#1256

Open
uriel-kluk wants to merge 1 commit intoAzure:mainfrom
uriel-kluk:uk/rqr
Open

Add comprehensive Resilient Query Engine for Historians, and the SMB AKRI connector#1256
uriel-kluk wants to merge 1 commit intoAzure:mainfrom
uriel-kluk:uk/rqr

Conversation

@uriel-kluk
Copy link

This pull request adds a new SMB connector project (Akri.Connector.SMB) to the solution, including its configuration validation, error handling, health checks, Docker build setup, and solution integration. The changes introduce core infrastructure for connecting to and managing SMB shares as historian data sources, with robust validation and operational health monitoring.

New SMB connector infrastructure:

  • Added new project Akri.Connector.SMB with references to authentication and historian connector core libraries, and configured NuGet dependencies for SMB protocol, health checks, and file system globbing. (dotnet/samples/Connectors/Akri.Connector.SMB/Akri.Connector.SMB.csproj)
  • Implemented configuration validation logic in ConfigurationValidator.cs to enforce connector settings, including task type, leader election, and destination path requirements. (dotnet/samples/Connectors/Akri.Connector.SMB/Configuration/ConfigurationValidator.cs)
  • Added error classification and logging utilities for SMB operations in SmbErrorHandler.cs, supporting retry logic and detailed error categorization. (dotnet/samples/Connectors/Akri.Connector.SMB/ErrorHandling/SmbErrorHandler.cs)

Operational health monitoring:

  • Introduced health checks for SMB connectivity, leader election, and watermark store, providing diagnostics for runtime configuration and operational status. (dotnet/samples/Connectors/Akri.Connector.SMB/Health/HealthChecks.cs)

Build and solution integration:

  • Added a Dockerfile for containerized build and runtime deployment of the SMB connector. (dotnet/samples/Connectors/Akri.Connector.SMB/Dockerfile)
  • Integrated new projects and test projects into the solution file, including build configurations and project dependencies. (dotnet/Azure.Iot.Operations.sln) [1] [2] [3]Includes unit, concurrency, edge case, integration, and registration tests for RqrEngine in ResilientQueryRunner.Tests. Covers query lifecycle, scheduling, failure handling, concurrency limits, retry logic, and thread safety. All tests use MIT license headers and provide robust coverage for correctness and reliability.

Includes unit, concurrency, edge case, integration, and registration tests for RqrEngine in ResilientQueryRunner.Tests. Covers query lifecycle, scheduling, failure handling, concurrency limits, retry logic, and thread safety. All tests use MIT license headers and provide robust coverage for correctness and reliability.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request introduces a comprehensive Resilient Query Engine for Historians along with an SMB connector implementation for Azure IoT Operations. The PR adds substantial new infrastructure for building historian connectors with resilient time-windowed querying capabilities.

Changes:

  • Adds ResilientQueryRunner library with query scheduling, watermark tracking, and retry logic
  • Implements historian connector core framework bridging RQR with Azure IoT Operations SDK
  • Adds authentication framework supporting Basic, OAuth, and Certificate authentication
  • Implements SMB connector with Parse and Copy task types
  • Provides comprehensive test coverage with unit, integration, and edge case tests

Reviewed changes

Copilot reviewed 84 out of 84 changed files in this pull request and generated no comments.

Show a summary per file
File Description
dotnet/test/ResilientQueryRunner.Tests/RqrEngineReregistrationTests.cs Unit tests for query registration/reregistration functionality
dotnet/test/ResilientQueryRunner.Tests/ResilientQueryRunner.Tests.csproj Test project configuration
dotnet/test/Akri.Connector.SMB.Tests/*.cs Comprehensive SMB connector tests
dotnet/src/ResilientQueryRunner/*.cs Core RQR engine implementation
dotnet/src/Akri.HistorianConnector.Core/*.cs Historian connector framework
dotnet/src/Akri.ConnectorFramework.Authentication/*.cs Authentication handlers
dotnet/samples/Connectors/Akri.Connector.SMB/* SMB connector implementation and configuration

@timtay-microsoft
Copy link
Member

timtay-microsoft commented Feb 26, 2026

Is the intention to actually ship this connector? And is there some reason that you want this connector to live in this SDK repo rather than in its own repo?

For context, we maintain a separate repo for our first party connectors and that repo has a lot more infrastructure for publishing connectors.

@timtay-microsoft
Copy link
Member

timtay-microsoft commented Feb 26, 2026

It seems you are looking to publish a few new Nuget packages in our src folder here as well. Most of them seem very specific to your connector though, so I don't follow why you would want to check this into this repo.

This repo is for the core AIO SDK packages (packages with features that are applicable for all connectors) so these changes feel like they belong in a different repo.

@uriel-kluk
Copy link
Author

uriel-kluk commented Feb 26, 2026 via email

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.

3 participants