Skip to content

Durable Entities#268

Open
bachuv wants to merge 26 commits intomainfrom
vabachu/entities
Open

Durable Entities#268
bachuv wants to merge 26 commits intomainfrom
vabachu/entities

Conversation

@bachuv
Copy link
Contributor

@bachuv bachuv commented Mar 4, 2026

Issue describing the changes in this PR

Adding Durable Entities support for the Java SDK.

resolves #issue_for_this_pr

Pull request checklist

  • My changes do not require documentation changes
    • Otherwise: Documentation issue linked to PR
  • My changes are added to the CHANGELOG.md
  • I have added all required tests (Unit tests, E2E tests)

@bachuv bachuv requested a review from a team as a code owner March 4, 2026 17:58
Copilot AI review requested due to automatic review settings March 4, 2026 17:58
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

Adds Durable Entities support to the Java SDK, including worker-side entity execution, orchestration↔entity APIs, client management/query APIs, Azure Functions integration, and samples/tests demonstrating the feature set.

Changes:

  • Add core entity programming model APIs (entities, entity context/state/operation abstractions, entity client, options, query/paging, storage cleanup).
  • Integrate entity messaging + locking into orchestration execution and worker-side work-item processing.
  • Add Azure Functions entity trigger + middleware, plus multiple new samples and extensive unit/integration tests.

Reviewed changes

Copilot reviewed 56 out of 56 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
samples/src/main/java/io/durabletask/samples/LowLevelEntitySample.java Sample: low-level entity + state dispatch + implicit delete
samples/src/main/java/io/durabletask/samples/EntityTimeoutSample.java Sample: callEntity timeouts + scheduled signals
samples/src/main/java/io/durabletask/samples/EntityQuerySample.java Sample: entity query + storage cleanup
samples/src/main/java/io/durabletask/samples/EntityCommunicationSample.java Sample: entity→entity signaling + entity-started orchestrations
samples/src/main/java/io/durabletask/samples/CounterEntitySample.java Sample: basic counter entity usage
samples/src/main/java/io/durabletask/samples/BankAccountSample.java Sample: entity locking + atomic transfer orchestration
internal/durabletask-protobuf/protos/orchestrator_service.proto Proto updates for worker request filtering
internal/durabletask-protobuf/PROTO_SOURCE_COMMIT_HASH Tracks upstream proto sync commit
client/src/test/java/com/microsoft/durabletask/TypedEntityMetadataTest.java Tests for typed entity metadata wrapper
client/src/test/java/com/microsoft/durabletask/TaskEntityTest.java Tests for reflection dispatch, implicit delete, state dispatch behavior
client/src/test/java/com/microsoft/durabletask/TaskEntityExecutorTest.java Tests for batch execution semantics, rollback, actions
client/src/test/java/com/microsoft/durabletask/IntegrationTestBase.java Test worker builder support for entity registration
client/src/test/java/com/microsoft/durabletask/EntityRegistrationTest.java Tests for worker builder addEntity overloads
client/src/test/java/com/microsoft/durabletask/EntityQueryTest.java Tests for query normalization/defaults/chaining
client/src/test/java/com/microsoft/durabletask/EntityQueryResultTest.java Tests for query result container
client/src/test/java/com/microsoft/durabletask/EntityQueryPageableTest.java Tests for auto-pagination behavior
client/src/test/java/com/microsoft/durabletask/EntityOptionsTest.java Tests for signal/call entity options
client/src/test/java/com/microsoft/durabletask/EntityMetadataTest.java Tests for entity metadata parsing/state deserialization
client/src/test/java/com/microsoft/durabletask/EntityIntegrationTests.java Sidecar-backed integration tests for entities
client/src/test/java/com/microsoft/durabletask/EntityInstanceIdTest.java Tests for entity ID parsing/format/ordering
client/src/test/java/com/microsoft/durabletask/CleanEntityStorageResultTest.java Tests for cleanup result model
client/src/test/java/com/microsoft/durabletask/CleanEntityStorageRequestTest.java Tests for cleanup request model
client/src/main/java/com/microsoft/durabletask/TypedEntityMetadata.java Typed state wrapper for entity metadata
client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java Orchestrator integration: entity signaling/calling/locking + event handling
client/src/main/java/com/microsoft/durabletask/TaskOrchestrationContext.java Public orchestration APIs for entity operations + locking
client/src/main/java/com/microsoft/durabletask/TaskEntityState.java Entity state wrapper with commit/rollback semantics
client/src/main/java/com/microsoft/durabletask/TaskEntityOperation.java Entity operation input/state/context container
client/src/main/java/com/microsoft/durabletask/TaskEntityFactory.java Functional factory for entity instantiation
client/src/main/java/com/microsoft/durabletask/TaskEntityExecutor.java Worker-side executor for entity batches + transactional semantics
client/src/main/java/com/microsoft/durabletask/TaskEntityContext.java Entity context for signaling/starting orchestrations
client/src/main/java/com/microsoft/durabletask/TaskEntity.java Reflection-based entity dispatch base class
client/src/main/java/com/microsoft/durabletask/SignalEntityOptions.java Options for scheduled entity signals
client/src/main/java/com/microsoft/durabletask/ITaskEntity.java Entity interface contract
client/src/main/java/com/microsoft/durabletask/GrpcDurableEntityClient.java gRPC implementation of DurableEntityClient management APIs
client/src/main/java/com/microsoft/durabletask/EntityRunner.java Helper for executing entity batches from encoded protobuf payloads
client/src/main/java/com/microsoft/durabletask/EntityQueryResult.java Entity query result model
client/src/main/java/com/microsoft/durabletask/EntityQueryPageable.java Auto-pagination support for entity queries
client/src/main/java/com/microsoft/durabletask/EntityQuery.java Entity query model + prefix normalization
client/src/main/java/com/microsoft/durabletask/EntityOperationFailedException.java Exception type for failed two-way entity calls
client/src/main/java/com/microsoft/durabletask/EntityMetadata.java Entity metadata model + state deserialization
client/src/main/java/com/microsoft/durabletask/EntityInstanceId.java Entity instance identifier type and parsing
client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorkerBuilder.java Worker builder support for registering entities + concurrency option
client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcWorker.java Worker runtime support for entity work items
client/src/main/java/com/microsoft/durabletask/DurableTaskGrpcClient.java Expose entity client from gRPC client
client/src/main/java/com/microsoft/durabletask/DurableTaskClient.java Add entity API surface + deprecated forwarding helpers
client/src/main/java/com/microsoft/durabletask/DurableEntityClient.java Durable entity management client abstraction
client/src/main/java/com/microsoft/durabletask/CleanEntityStorageResult.java Model for cleanup results
client/src/main/java/com/microsoft/durabletask/CleanEntityStorageRequest.java Model for cleanup requests
client/src/main/java/com/microsoft/durabletask/CallEntityOptions.java Options for callEntity timeouts
client/build.gradle Windows-friendly java/javac path handling for tests
azuremanaged/build.gradle Windows-friendly javac path handling for tests
azurefunctions/src/main/resources/META-INF/services/com.microsoft.azure.functions.internal.spi.middleware.Middleware Register entity middleware
azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/internal/middleware/EntityMiddleware.java Azure Functions middleware for entity triggers
azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/DurableEntityTrigger.java Azure Functions entity trigger annotation
azurefunctions/src/main/java/com/microsoft/durabletask/azurefunctions/DurableClientContext.java Entity management APIs surfaced via DurableClientContext

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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