Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
93c5acc
feat: add dead-letter topic support to streaming subscriptions (#1608…
siri-varma May 20, 2026
9539d70
feat: add DaprClient.invokeHttpClient(appId) factory (#1742)
javier-aliaga May 20, 2026
d87a84c
Add support for workflow history propagation (#1739)
siri-varma May 22, 2026
e3faa11
chore(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1 (#1752)
dependabot[bot] May 25, 2026
1648786
feat: Add compensation workflow pattern to Spring Boot examples
siri-varma May 20, 2026
5be1ad4
Apply suggestions from code review
siri-varma May 20, 2026
b14417c
Refactor BookTripWorkflow to use CompensationHelper
siri-varma May 20, 2026
1c512d1
Add CompensationHelper class for managing compensations
siri-varma May 20, 2026
1b54fef
Await cancellation activities in BookTripWorkflow
siri-varma May 20, 2026
2dfc129
fix things
siri-varma May 20, 2026
b14ed63
Add design doc: migrate sdk-tests ITs to Testcontainers
siri-varma May 25, 2026
68a57d2
Refine Testcontainers migration spec after review
siri-varma May 25, 2026
9ab7e7f
Add implementation plan for sdk-tests Testcontainers migration
siri-varma May 25, 2026
82df73d
Address plan-review feedback: simplify Task 3, fix Configuration ctor
siri-varma May 25, 2026
37cf022
Add SharedTestInfra singleton for Redis container
siri-varma May 25, 2026
a85b4e7
Add AppRun constructor overload for explicit Dapr port overrides
siri-varma May 25, 2026
5acc1d1
Address review feedback for Task 1 + Task 2
siri-varma May 25, 2026
88f0f8d
Make AppRun's 6-arg constructor public
siri-varma May 25, 2026
a20bbba
Add BaseContainerIT helpers + smoke test
siri-varma May 25, 2026
fd9ee1f
Polish BaseContainerIT doc comments per review
siri-varma May 25, 2026
37417bc
Migrate SecretsClientIT to Testcontainers
siri-varma May 25, 2026
a542ebd
Use Map.of for SecretsClientIT payload helper
siri-varma May 25, 2026
334e8ed
Migrate ApiIT to Testcontainers
siri-varma May 25, 2026
18ef3e3
Migrate ConfigurationClientIT to Testcontainers
siri-varma May 25, 2026
d866772
Migrate state client ITs to Testcontainers
siri-varma May 25, 2026
f4f0d1d
Add Zipkin container to SharedTestInfra
siri-varma May 25, 2026
e4c8548
Migrate ActorExceptionIT to Testcontainers
siri-varma May 25, 2026
40fe2ab
Migrate ActivationDeactivationIT to Testcontainers
siri-varma May 25, 2026
742b9c2
Migrate ActorTurnBasedConcurrencyIT to Testcontainers
siri-varma May 25, 2026
ff1defa
Migrate ActorMethodNameIT to Testcontainers
siri-varma May 25, 2026
6d52baf
Migrate MethodInvokeIT (http) to Testcontainers
siri-varma May 25, 2026
dc5b8c7
Migrate MethodInvokeIT (grpc) to Testcontainers
siri-varma May 25, 2026
7f10f03
Migrate TracingIT (http) to Testcontainers
siri-varma May 25, 2026
1064c27
Migrate TracingIT (grpc) to Testcontainers
siri-varma May 25, 2026
0bdd062
CI: drop Mongo from local-test.yml + compose-up step
siri-varma May 25, 2026
34570a8
fix things
siri-varma May 25, 2026
c5115d3
Fix things
siri-varma May 25, 2026
7094dac
Fix two CI failures in BaseContainerIT
siri-varma May 25, 2026
6a17cd1
Fix CI: bypass legacy daprd-stdout success-message check
siri-varma May 25, 2026
11b3e18
Fix CI: add wait helpers + secrets metadata
siri-varma May 25, 2026
94cf31e
Diagnostic: stream daprd logs + DEBUG level
siri-varma May 25, 2026
ca41559
Reorder: expose host ports AFTER dapr.start()
siri-varma May 25, 2026
8e47d7f
Add session handoff doc for Testcontainers migration
siri-varma May 25, 2026
5990068
Fix actor IT timeouts: start AppRun before DaprContainer
siri-varma May 25, 2026
2d17796
Fix remaining IT failures: pin daprd ports + correct tracing span names
siri-varma May 26, 2026
b82a550
Delete .claude/worktrees directory
siri-varma May 26, 2026
0b25419
Delete docs/superpowers/notes/2026-05-25-migration-handoff.md
siri-varma May 26, 2026
79d2d7e
Delete docs/superpowers/plans/2026-05-25-sdk-tests-testcontainers-mig…
siri-varma May 26, 2026
236d2a1
Delete docs/superpowers/specs/2026-05-25-sdk-tests-testcontainers-mig…
siri-varma May 26, 2026
a7fdcda
Re-enable Mongo query state IT via Testcontainers
siri-varma May 26, 2026
52ba75f
Subscription: prevent backoff overflow + interrupt receiver on close
siri-varma May 26, 2026
783a77d
Subscription: simplify backoff to a doubled long, no bit-shift
siri-varma May 26, 2026
8444aa1
Restore DLQ coverage in migrated DaprPubSubStreamIT
siri-varma May 26, 2026
0145946
Pin Zipkin testcontainer to 3.4 instead of latest
siri-varma May 26, 2026
d62e20d
Fix comment formatting in CODEOWNERS file
siri-varma May 26, 2026
5e09ffb
Update CODEOWNERS
siri-varma May 26, 2026
7204e81
Restore parity for two legacy ITs deleted earlier
siri-varma May 26, 2026
8f54fce
Fix two newly-added parity tests after first CI run
siri-varma May 26, 2026
39fc821
Move secret.json out of dapr components dir
siri-varma May 26, 2026
492f743
Fix ClassCastException in testPubSubBulkSubscribe
siri-varma May 26, 2026
129b5c2
fix things
siri-varma May 26, 2026
f1efe9f
Switch BindingIT's 404 fixture URL from GitHub to httpbin
siri-varma May 26, 2026
3e60255
Revert "Switch BindingIT's 404 fixture URL from GitHub to httpbin"
siri-varma May 26, 2026
44c07ee
bump to rc4 and jobs api stable (#1755)
cicoyle May 27, 2026
f212920
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma May 27, 2026
a56c984
fix: reset gRPC channel backoff between worker reconnect attempts (#1…
javier-aliaga May 28, 2026
de4a0dd
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma May 28, 2026
43cf7c6
feat: attach SDK User-Agent in DaprInvokeHttpClient and clarify DaprB…
javier-aliaga May 28, 2026
1df78a0
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma May 28, 2026
4374063
Generate updated javadocs for 1.18.0
dapr-bot Jun 11, 2026
5a6ccef
use v1.18.0 (#1766)
cicoyle Jun 11, 2026
2d06cb4
fix: remove usage of reserved per-action router fields (#1767)
javier-aliaga Jun 11, 2026
38f13b9
Generate updated javadocs for 1.17.3
dapr-bot Jun 12, 2026
c865376
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma Jun 14, 2026
625d0f8
fix(durabletask): don't let resolved event-wait timers block implicit…
javier-aliaga Jun 15, 2026
0c4590c
chore(deps): Bump actions/checkout from 4 to 7 (#1773)
dependabot[bot] Jun 23, 2026
f42e0d2
fix: add DaprInvokeHttpClient.encodePath for URI path encoding (#1774)
javier-aliaga Jun 30, 2026
63e6b3b
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma Jul 2, 2026
79d9812
Generate updated javadocs for 1.17.4
dapr-bot Jul 6, 2026
3c12975
feat: throw WorkflowInstanceAlreadyExistsException when scheduling a …
javier-aliaga Jul 7, 2026
5e4f2a6
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma Jul 7, 2026
ed8b398
Subscription: reset backoff after healthy stream + don't tear down st…
siri-varma Jul 7, 2026
731f319
Revert Subscription.java to master version
siri-varma Jul 8, 2026
aa9238d
Re-apply Subscription backoff reset + listener-only per-event error h…
siri-varma Jul 8, 2026
aa2a7f9
Add SubscriptionTest unit tests + interrupt receiver on close
siri-varma Jul 8, 2026
c3d4ac8
feat: propagate caller trace context when scheduling workflows (#1783)
javier-aliaga Jul 8, 2026
d936b3f
Merge branch 'master' into users/sveigraju/fix-integ-tests-2
siri-varma Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/automerge-bot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5
uses: actions/checkout@v7
- name: Install dependencies
run: pip install PyGithub
- name: Automerge and update
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
env:
JDK_VER: 17
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Set up OpenJDK ${{ env.JDK_VER }}
uses: actions/setup-java@v4
with:
Expand All @@ -32,7 +32,7 @@ jobs:
- name: Run tests
run: ./mvnw clean install -B -q -DskipITs=true
- name: Codecov
uses: codecov/codecov-action@v6.0.0
uses: codecov/codecov-action@v6.0.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test report for sdk
Expand All @@ -54,14 +54,14 @@ jobs:
env:
JDK_VER: 17
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Set up OpenJDK ${{ env.JDK_VER }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JDK_VER }}
- name: Checkout Durable Task Sidecar
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
repository: dapr/durabletask-go
path: durabletask-sidecar
Expand Down Expand Up @@ -117,14 +117,14 @@ jobs:
GOARCH: amd64
GOPROXY: https://proxy.golang.org
JDK_VER: ${{ matrix.java }}
DAPR_CLI_VER: 1.17.0
DAPR_RUNTIME_VER: 1.18.0-rc.3
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.17.0/install/install.sh
DAPR_CLI_VER: 1.18.0
DAPR_RUNTIME_VER: 1.18.0
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.18.0/install/install.sh
DAPR_CLI_REF:
DAPR_REF:
TOXIPROXY_URL: https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy-server-linux-amd64
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Check Docker version
run: docker version
- name: Set up OpenJDK ${{ env.JDK_VER }}
Expand All @@ -140,14 +140,14 @@ jobs:
with:
go-version: ${{ env.GOVER }}
- name: Checkout Dapr CLI repo to override dapr command.
uses: actions/checkout@v5
uses: actions/checkout@v7
if: env.DAPR_CLI_REF != ''
with:
repository: dapr/cli
ref: ${{ env.DAPR_CLI_REF }}
path: cli
- name: Checkout Dapr repo to override daprd.
uses: actions/checkout@v5
uses: actions/checkout@v7
if: env.DAPR_REF != ''
with:
repository: dapr/dapr
Expand Down Expand Up @@ -187,7 +187,7 @@ jobs:
./dist/linux_amd64/release/placement &
- name: Spin local environment
run: |
docker compose -f ./sdk-tests/deploy/local-test.yml up -d mongo kafka
docker compose -f ./sdk-tests/deploy/local-test.yml up -d kafka
docker ps
- name: Install local ToxiProxy to simulate connectivity issues to Dapr sidecar
run: |
Expand Down Expand Up @@ -242,7 +242,7 @@ jobs:
GPG_KEY: ${{ secrets.GPG_KEY }}
GPG_PWD: ${{ secrets.GPG_PWD }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Set up OpenJDK ${{ env.JDK_VER }}
uses: actions/setup-java@v5
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
JDK_VER: '17'
steps:
- name: Check out code
uses: actions/checkout@v5
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.DAPR_BOT_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/fossa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
FOSSA_API_KEY: b88e1f4287c3108c8751bf106fb46db6 # This is a push-only token that is safe to be exposed.
steps:
- name: "Checkout code"
uses: actions/checkout@v5
uses: actions/checkout@v7

- name: "Run FOSSA Scan"
uses: fossas/fossa-action@v1.9.0 # Use a specific version if locking is preferred
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/validate-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
env:
JDK_VER: 17
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Set up OpenJDK ${{ env.JDK_VER }}
uses: actions/setup-java@v5
with:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ jobs:
GOARCH: amd64
GOPROXY: https://proxy.golang.org
JDK_VER: ${{ matrix.java }}
DAPR_CLI_VER: 1.17.0
DAPR_RUNTIME_VER: 1.18.0-rc.3
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.17.0/install/install.sh
DAPR_CLI_VER: 1.18.0
DAPR_RUNTIME_VER: 1.18.0
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.18.0/install/install.sh
DAPR_CLI_REF:
DAPR_REF:
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- name: Set up OpenJDK ${{ env.JDK_VER }}
uses: actions/setup-java@v5
with:
Expand All @@ -59,14 +59,14 @@ jobs:
with:
go-version: ${{ env.GOVER }}
- name: Checkout Dapr CLI repo to override dapr command.
uses: actions/checkout@v5
uses: actions/checkout@v7
if: env.DAPR_CLI_REF != ''
with:
repository: dapr/cli
ref: ${{ env.DAPR_CLI_REF }}
path: cli
- name: Checkout Dapr repo to override daprd.
uses: actions/checkout@v5
uses: actions/checkout@v7
if: env.DAPR_REF != ''
with:
repository: dapr/dapr
Expand Down
97 changes: 12 additions & 85 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,58 +92,21 @@ For Maven:
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk</artifactId>
<version>1.17.4</version>
</dependency>
<!-- Dapr's SDK for Actors (optional). -->
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk-actors</artifactId>
<version>1.17.4</version>
</dependency>
</dependencies>
...
</project>
```

For Gradle:
```groovy
dependencies {
implementation platform('io.dapr:dapr-sdk-bom:1.18.0')

// Dapr's core SDK with all features, except Actors.
implementation 'io.dapr:dapr-sdk'
// Dapr's SDK for Actors (optional).
implementation 'io.dapr:dapr-sdk-actors'
}
```

##### Spring Boot projects

For Maven:
```xml
<project>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.dapr.spring</groupId>
<artifactId>dapr-spring-bom</artifactId>
<version>1.18.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- Dapr's SDK integration with Spring Boot. -->
<!-- Dapr's SDK integration with SpringBoot (optional). -->
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk-springboot</artifactId>
<version>1.17.4</version>
</dependency>
<!-- Optional Spring Boot starter. -->
<dependency>
<groupId>io.dapr.spring</groupId>
<artifactId>dapr-spring-boot-starter</artifactId>
</dependency>
...
</dependencies>
...
</project>
Expand All @@ -152,50 +115,14 @@ For Maven:
For Gradle:
```groovy
dependencies {
implementation platform('io.dapr.spring:dapr-spring-bom:1.18.0')

// Dapr's SDK integration with Spring Boot.
implementation 'io.dapr:dapr-sdk-springboot'
// Optional Spring Boot starter.
implementation 'io.dapr.spring:dapr-spring-boot-starter'
}
```

#### Without the BOM

If you prefer to manage versions manually, specify the version on each dependency:

For Maven:
```xml
<project>
...
<dependencies>
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk</artifactId>
<version>1.17.2</version>
</dependency>
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk-actors</artifactId>
<version>1.17.2</version>
</dependency>
<dependency>
<groupId>io.dapr</groupId>
<artifactId>dapr-sdk-springboot</artifactId>
<version>1.17.2</version>
</dependency>
</dependencies>
...
</project>
```
implementation platform('io.dapr:dapr-sdk-bom:1.18.0')

For Gradle:
```groovy
dependencies {
implementation 'io.dapr:dapr-sdk:1.17.2'
implementation 'io.dapr:dapr-sdk-actors:1.17.2'
implementation 'io.dapr:dapr-sdk-springboot:1.17.2'
// Dapr's core SDK with all features, except Actors.
compile('io.dapr:dapr-sdk:1.17.4')
// Dapr's SDK for Actors (optional).
compile('io.dapr:dapr-sdk-actors:1.17.4')
// Dapr's SDK integration with SpringBoot (optional).
compile('io.dapr:dapr-sdk-springboot:1.17.4')
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package io.dapr.spring.observation.client;

import io.dapr.client.DaprClient;
import io.dapr.client.DaprInvokeHttpClient;
import io.dapr.client.domain.BulkPublishRequest;
import io.dapr.client.domain.BulkPublishResponse;
import io.dapr.client.domain.ConfigurationItem;
Expand Down Expand Up @@ -334,6 +335,11 @@ public <T> Mono<T> invokeMethod(InvokeMethodRequest invokeMethodRequest, TypeRef
return delegate.invokeMethod(invokeMethodRequest, type);
}

@Override
public DaprInvokeHttpClient invokeHttpClient(String appId) {
return delegate.invokeHttpClient(appId);
}

// -------------------------------------------------------------------------
// Bindings
// -------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,10 @@
package io.dapr.spring.observation.client;

import io.dapr.client.DaprClient;
import io.dapr.client.domain.DeleteStateRequest;
import io.dapr.client.domain.GetSecretRequest;
import io.dapr.client.domain.GetStateRequest;
import io.dapr.client.DaprInvokeHttpClient;
import io.dapr.client.domain.InvokeBindingRequest;
import io.dapr.client.domain.PublishEventRequest;
import io.dapr.client.domain.ScheduleJobRequest;
import io.dapr.client.domain.State;
import io.micrometer.observation.tck.TestObservationRegistry;
import io.micrometer.observation.tck.TestObservationRegistryAssert;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -33,7 +30,6 @@
import reactor.core.publisher.Mono;

import java.util.List;
import java.util.Map;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
Expand Down Expand Up @@ -378,4 +374,18 @@ void deprecatedInvokeMethodDoesNotCreateSpan() {
// Registry must be empty — no spans for deprecated methods
TestObservationRegistryAssert.assertThat(registry).doesNotHaveAnyObservation();
}

@Test
@DisplayName("invokeHttpClient delegates without creating a span")
void invokeHttpClientDelegatesWithoutSpan() {
DaprInvokeHttpClient stub = org.mockito.Mockito.mock(DaprInvokeHttpClient.class);
when(delegate.invokeHttpClient("orderprocessor")).thenReturn(stub);

DaprInvokeHttpClient result = client.invokeHttpClient("orderprocessor");

assertThat(result).isSameAs(stub);
verify(delegate).invokeHttpClient("orderprocessor");
// Synchronous factory — no Mono/Flux to observe, so no span is expected.
TestObservationRegistryAssert.assertThat(registry).doesNotHaveAnyObservation();
}
}
Loading