Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
30d6629
Fix PPCB failback with missing or stale addresses (#50182)
xinlian12 Aug 21, 2026
fcd5023
Fix PPCB diagnostics and failback observability. (#50158)
jeet1995 Aug 21, 2026
0342704
Fix partitionLevelCircuitBreakerCfg missing from CosmosDiagnostics cl…
jeet1995 Jul 6, 2026
e846a79
Address Copilot review: use strictly valid JSON in PPCB test system p…
jeet1995 Jul 6, 2026
7fa1c57
Add PPCB clientCfgs diagnostics validation to PerPartitionCircuitBrea…
jeet1995 Jul 7, 2026
0125e45
Run PPCB clientCfgs diagnostics E2E test across all TestNG groups
jeet1995 Jul 7, 2026
b1b6862
Simplify PPCB E2E diagnostics test to verify unconditional clientCfgs…
jeet1995 Jul 7, 2026
ce34f6e
Simplify PPCB unit test to assert clientCfgs key presence only
jeet1995 Jul 7, 2026
1011ce3
Prepare azure-cosmos 4.76.1-hotfix backport
jeet1995 Aug 27, 2026
5c0a5c5
Restore PPCB hotfix regression coverage
jeet1995 Aug 28, 2026
409c12c
Backport customer workflow tests from PR #49568
jeet1995 Aug 29, 2026
00aa877
Use authenticated Maven mirror in pipelines
jeet1995 Aug 29, 2026
2cba37f
Run LatestCommitted workflow in Direct mode
jeet1995 Aug 29, 2026
a607a78
Fix hotfix test and Kafka pipeline compatibility
jeet1995 Aug 30, 2026
5d7e5fd
Route Spring Maven repository through CFS
jeet1995 Aug 30, 2026
4742eed
Retry reads until one region is contacted
jeet1995 Aug 30, 2026
a181ce9
Remove Confluent serializer dependency from Kafka tests
jeet1995 Aug 30, 2026
bcf648c
Fix hotfix CI dependency validation
jeet1995 Aug 31, 2026
ad31254
Fix test proxy startup on macOS
jeet1995 Aug 31, 2026
90fdc6c
Remove unused Confluent dependency version
jeet1995 Aug 31, 2026
bc49f7f
Authenticate Maven in hotfix CI jobs
jeet1995 Aug 31, 2026
6602cbe
Authenticate pipeline tooling dependencies
jeet1995 Aug 31, 2026
977b575
Route NuGet through Azure Artifacts
jeet1995 Aug 31, 2026
c80d04b
Skip FromSource tests in Cosmos CI
jeet1995 Sep 1, 2026
6dbc964
Backport Cosmos test infrastructure updates
jeet1995 Sep 2, 2026
1668564
Date azure-cosmos 4.76.1-hotfix release
jeet1995 Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions NuGet.Config
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<!-- Do not add any additional feeds. If new packages are needed they need to
come from the azure-sdk-for-net DevOps feed which has an upstream set to nuget.org -->
<add key="azure-sdk-for-net" value="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json" />
</packageSources>
<disabledPackageSources>
<clear />
</disabledPackageSources>
</configuration>
14 changes: 9 additions & 5 deletions eng/common/testproxy/test-proxy-tool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ parameters:
targetVersion: ''
templateRoot: '$(Build.SourcesDirectory)'
condition: true
proxyUrl: 'http://localhost:5000'

steps:
- pwsh: |
Expand Down Expand Up @@ -67,14 +68,14 @@ steps:
- pwsh: |
$invocation = @"
Start-Process $(Build.BinariesDirectory)/test-proxy/test-proxy.exe
-ArgumentList `"start -u --storage-location ${{ parameters.rootFolder }}`"
-ArgumentList `"start -u --storage-location ${{ parameters.rootFolder }} -- --urls ${{ parameters.proxyUrl }}`"
-NoNewWindow -PassThru -RedirectStandardOutput ${{ parameters.rootFolder }}/test-proxy.log
-RedirectStandardError ${{ parameters.rootFolder }}/test-proxy-error.log
"@
Write-Host $invocation

$Process = Start-Process $(Build.BinariesDirectory)/test-proxy/test-proxy.exe `
-ArgumentList "start -u --storage-location ${{ parameters.rootFolder }}" `
-ArgumentList "start -u --storage-location ${{ parameters.rootFolder }} -- --urls ${{ parameters.proxyUrl }}" `
-NoNewWindow -PassThru -RedirectStandardOutput ${{ parameters.rootFolder }}/test-proxy.log `
-RedirectStandardError ${{ parameters.rootFolder }}/test-proxy-error.log

Expand All @@ -87,7 +88,10 @@ steps:

# nohup does NOT continue beyond the current session if you use it within powershell
- bash: |
nohup $(Build.BinariesDirectory)/test-proxy/test-proxy 1>${{ parameters.rootFolder }}/test-proxy.log 2>${{ parameters.rootFolder }}/test-proxy-error.log &
if [[ "$(uname)" == "Darwin" ]]; then
export DOTNET_ROOT="$HOME/.dotnet"
fi
nohup $(Build.BinariesDirectory)/test-proxy/test-proxy start -u --storage-location ${{ parameters.rootFolder }} -- --urls "${{ parameters.proxyUrl }}" 1>${{ parameters.rootFolder }}/test-proxy.log 2>${{ parameters.rootFolder }}/test-proxy-error.log &

echo $! > $(Build.SourcesDirectory)/test-proxy.pid

Expand All @@ -102,8 +106,8 @@ steps:
- pwsh: |
for ($i = 0; $i -lt 10; $i++) {
try {
Write-Host "Invoke-WebRequest -Uri `"http://localhost:5000/Admin/IsAlive`" | Out-Null"
Invoke-WebRequest -Uri "http://localhost:5000/Admin/IsAlive" | Out-Null
Write-Host "Invoke-WebRequest -Uri `"${{ parameters.proxyUrl }}/Admin/IsAlive`" | Out-Null"
Invoke-WebRequest -Uri "${{ parameters.proxyUrl }}/Admin/IsAlive" | Out-Null
Write-Host "Successfully connected to the test proxy on port 5000."
exit 0
} catch {
Expand Down
3 changes: 3 additions & 0 deletions eng/pipelines/templates/jobs/ci.tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ jobs:

- ${{ parameters.PreTestSteps }}

# Authenticate with Azure Artifacts
- template: /eng/pipelines/templates/steps/maven-authenticate.yml

- template: /eng/pipelines/templates/steps/run-and-validate-linting.yml
parameters:
JavaBuildVersion: $(JavaTestVersion)
Expand Down
18 changes: 18 additions & 0 deletions eng/pipelines/templates/jobs/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ jobs:
ServiceDirectory: ${{parameters.ServiceDirectory}}
ExcludePaths: ${{parameters.ExcludePaths}}

# Authenticate with Azure Artifacts
- template: /eng/pipelines/templates/steps/maven-authenticate.yml

- task: UsePythonVersion@0
displayName: 'Use Python $(PythonVersion)'
inputs:
Expand Down Expand Up @@ -191,6 +194,11 @@ jobs:
parameters:
PackagePropertiesFolder: $(Build.ArtifactStagingDirectory)/PackageInfo

- task: PipAuthenticate@1
displayName: 'Pip Authenticate to Azure Artifacts'
inputs:
artifactFeeds: 'public/azure-sdk-for-python'

- script: |
python -m pip install markdown2==2.4.6 BeautifulSoup4==4.11.1
displayName: 'pip install markdown2 and BeautifulSoup4'
Expand Down Expand Up @@ -402,6 +410,11 @@ jobs:
version: 22.x
displayName: Use Node.js 22.x

- template: /eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml
parameters:
npmrcPath: $(Agent.TempDirectory)/analyze-job/.npmrc
registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/

- task: PowerShell@2
displayName: Verify Swagger and TypeSpec Code Generation
inputs:
Expand All @@ -410,6 +423,11 @@ jobs:
arguments: >
-ServiceDirectories '$(PRServiceDirectories)'
-RegenerationType 'All'
env:
npm_config_userconfig: $(Agent.TempDirectory)/analyze-job/.npmrc

# Authenticate with Azure Artifacts
- template: /eng/pipelines/templates/steps/maven-authenticate.yml

- template: /eng/pipelines/templates/steps/run-and-validate-linting.yml
parameters:
Expand Down
3 changes: 3 additions & 0 deletions eng/pipelines/templates/jobs/live.tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@ jobs:

- ${{ parameters.PreSteps }}

# Authenticate with Azure Artifacts
- template: /eng/pipelines/templates/steps/maven-authenticate.yml

- template: /eng/pipelines/templates/steps/build-and-test.yml
parameters:
PreTestRunSteps: ${{ parameters.PreTestRunSteps }}
Expand Down
14 changes: 14 additions & 0 deletions eng/pipelines/templates/steps/maven-authenticate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
steps:
# Copy mirror settings to default Maven location so all requests go through CFS
- pwsh: |
$m2Dir = if ($env:USERPROFILE) { "$env:USERPROFILE\.m2" } else { "$HOME/.m2" }
New-Item -ItemType Directory -Force -Path $m2Dir | Out-Null
Copy-Item -Path "$(Build.SourcesDirectory)/eng/settings.xml" -Destination "$m2Dir/settings.xml"
displayName: 'Setup Maven mirror settings'

# Authenticate with Azure Artifacts feeds
# MavenAuthenticate adds <server> entries to ~/.m2/settings.xml matching mirror id 'azure-sdk-for-java'
- task: MavenAuthenticate@0
displayName: 'Maven Authenticate'
inputs:
artifactsFeeds: 'azure-sdk-for-java'
2 changes: 1 addition & 1 deletion eng/pipelines/templates/variables/globals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ variables:
# See https://github.com/actions/virtual-environments/issues/1499 for more info about the wagon options
# If reports about Maven dependency downloads become more common investigate re-introducing "-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false", or other iterations of the configurations.
WagonOptions: '-Dmaven.wagon.httpconnectionManager.ttlSeconds=60 -Dmaven.wagon.http.pool=false'
DefaultOptions: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER) --batch-mode --fail-at-end --settings eng/settings.xml $(WagonOptions)'
DefaultOptions: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER) --batch-mode --fail-at-end $(WagonOptions)'
LoggingOptions: '-Dorg.slf4j.simpleLogger.defaultLogLevel=$(MavenLogLevel) -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
MemoryOptions: '-Xmx4096m'
DefaultSkipOptions: '-Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -Drevapi.skip=true -DtrimStackTrace=false -Dspotless.apply.skip=true -Dspotless.check.skip=true'
Expand Down
15 changes: 12 additions & 3 deletions eng/settings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>azure-sdk-for-java</id>
<name>Azure Artifacts Maven Mirror</name>
<url>https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1</url>
<mirrorOf>external:*</mirrorOf>
</mirror>
</mirrors>
</settings>
1 change: 0 additions & 1 deletion eng/versioning/external_dependencies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,6 @@ cosmos_org.apache.kafka:connect-runtime;3.6.0
cosmos_org.testcontainers:testcontainers;1.19.5
cosmos_org.testcontainers:kafka;1.19.5
cosmos_org.sourcelab:kafka-connect-client;4.0.4
cosmos_io.confluent:kafka-avro-serializer;7.6.0
cosmos_org.apache.avro:avro;1.11.4
# Maven Tools for Cosmos Kafka connector only

Expand Down
2 changes: 1 addition & 1 deletion eng/versioning/version_client.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ com.azure:azure-core-test;1.27.0-beta.13;1.27.0-beta.14
com.azure:azure-core-tracing-opentelemetry;1.0.0-beta.61;1.0.0-beta.62
com.azure:azure-core-tracing-opentelemetry-samples;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-core-version-tests;1.0.0-beta.1;1.0.0-beta.1
com.azure:azure-cosmos;4.75.0;4.76.0
com.azure:azure-cosmos;4.75.0;4.76.1-hotfix
com.azure:azure-cosmos-benchmark;4.0.1-beta.1;4.0.1-beta.1
com.azure.cosmos.spark:azure-cosmos-spark_3;0.0.1-beta.1;0.0.1-beta.1
com.azure.cosmos.spark:azure-cosmos-spark_3-5;0.0.1-beta.1;0.0.1-beta.1
Expand Down
2 changes: 1 addition & 1 deletion sdk/cosmos/azure-cosmos-benchmark/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Licensed under the MIT License.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.76.0</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
<version>4.76.1-hotfix</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
</dependency>

<dependency>
Expand Down
2 changes: 1 addition & 1 deletion sdk/cosmos/azure-cosmos-encryption/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Licensed under the MIT License.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.76.0</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
<version>4.76.1-hotfix</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
</dependency>

<dependency>
Expand Down
15 changes: 1 addition & 14 deletions sdk/cosmos/azure-cosmos-kafka-connect/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,6 @@ Licensed under the MIT License.
</distributionManagement>

<repositories>
<repository>
<id>confluent</id>
<name>Confluent</name>
<url>https://packages.confluent.io/maven/</url>
</repository>
<repository>
<id>maven-repo1</id>
<name>Maven Repo1</name>
Expand Down Expand Up @@ -92,7 +87,7 @@ Licensed under the MIT License.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.76.0</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
<version>4.76.1-hotfix</version> <!-- {x-version-update;com.azure:azure-cosmos;current} -->
</dependency>

<!-- Added this provided dependency to include necessary annotations used by "reactor-core".
Expand Down Expand Up @@ -242,13 +237,6 @@ Licensed under the MIT License.
<version>4.0.4</version> <!-- {x-version-update;cosmos_org.sourcelab:kafka-connect-client;external_dependency} -->
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.confluent/kafka-avro-serializer -->
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>7.6.0</version><!-- {x-version-update;cosmos_io.confluent:kafka-avro-serializer;external_dependency} -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
Expand Down Expand Up @@ -419,7 +407,6 @@ Licensed under the MIT License.
<artifactSet>
<excludes>
<exclude>org.slf4j</exclude>
<exclude>io.confluent:*</exclude>
<exclude>org.apache.kafka:*</exclude>
</excludes>
</artifactSet>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import com.azure.cosmos.kafka.connect.implementation.sink.IdStrategyType;
import com.azure.cosmos.models.PartitionKey;
import com.fasterxml.jackson.databind.JsonNode;
import io.confluent.kafka.serializers.KafkaAvroSerializer;
import org.apache.avro.generic.GenericRecord;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
Expand Down Expand Up @@ -286,8 +285,8 @@ public void postAvroMessage() throws InterruptedException {
kafkaCosmosConnectContainer.registerConnector(connectorName, sinkConnectorConfig);

Properties producerProperties = kafkaCosmosConnectContainer.getProducerProperties();
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
KafkaProducer<GenericRecord, GenericRecord> kafkaProducer = new KafkaProducer<>(producerProperties);

// first create few records in the topic
Expand Down Expand Up @@ -364,8 +363,8 @@ public void postAvroMessageWithTemplateIdStrategy() throws InterruptedException
kafkaCosmosConnectContainer.registerConnector(connectorName, sinkConnectorConfig);

Properties producerProperties = kafkaCosmosConnectContainer.getProducerProperties();
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
KafkaProducer<GenericRecord, GenericRecord> kafkaProducer = new KafkaProducer<>(producerProperties);

logger.info("Creating sink record...");
Expand Down Expand Up @@ -432,8 +431,8 @@ public void postAvroMessageWithJsonPathInProvidedInKeyStrategy() throws Interrup
kafkaCosmosConnectContainer.registerConnector(connectorName, sinkConnectorConfig);

Properties producerProperties = kafkaCosmosConnectContainer.getProducerProperties();
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
producerProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, TestAvroSerializer.class.getName());
KafkaProducer<GenericRecord, GenericRecord> kafkaProducer = new KafkaProducer<>(producerProperties);

logger.info("Creating sink record...");
Expand Down
Loading
Loading