diff --git a/sdk/storage/azure-storage-blob-stress/pom.xml b/sdk/storage/azure-storage-blob-stress/pom.xml
index a64ef5b1f1d3..92888ec20d0d 100644
--- a/sdk/storage/azure-storage-blob-stress/pom.xml
+++ b/sdk/storage/azure-storage-blob-stress/pom.xml
@@ -21,6 +21,18 @@
-
+
+
+
+ io.opentelemetry
+ opentelemetry-bom
+ 1.58.0
+ pom
+ import
+
+
+
+
ch.qos.logback
diff --git a/sdk/storage/azure-storage-blob-stress/scripts/fault-injector.sh b/sdk/storage/azure-storage-blob-stress/scripts/fault-injector.sh
index ed834fc131d6..65c857d3d7ed 100644
--- a/sdk/storage/azure-storage-blob-stress/scripts/fault-injector.sh
+++ b/sdk/storage/azure-storage-blob-stress/scripts/fault-injector.sh
@@ -1,4 +1,4 @@
#!/bin/sh
set -ex;
-dotnet dev-certs https --export-path /mnt/outputs/dev-cert.pfx;
-/root/.dotnet/tools/http-fault-injector;
+dotnet dev-certs https --export-path /mnt/outputs/dev-cert.crt --format PEM --no-password;
+/root/.dotnet/tools/http-fault-injector;
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob-stress/scripts/stress-run.sh b/sdk/storage/azure-storage-blob-stress/scripts/stress-run.sh
index 20a7669c46e9..cebbfb4d47f4 100644
--- a/sdk/storage/azure-storage-blob-stress/scripts/stress-run.sh
+++ b/sdk/storage/azure-storage-blob-stress/scripts/stress-run.sh
@@ -1,4 +1,14 @@
#!/bin/sh
set -ex;
set -exa;
-keytool -import -alias test -file /mnt/outputs/dev-cert.pfx -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -keypass changeit -storepass changeit;
+attempts=0;
+while [ ! -s /mnt/outputs/dev-cert.crt ]; do
+ attempts=$((attempts + 1));
+ if [ "$attempts" -gt 60 ]; then
+ echo "Timed out waiting for fault injector certificate" >&2;
+ exit 1;
+ fi;
+ sleep 1;
+done;
+keytool -delete -alias HttpFaultInject -keystore "${JAVA_HOME}/lib/security/cacerts" -storepass changeit >/dev/null 2>&1 || true;
+keytool -importcert -trustcacerts -alias HttpFaultInject -file /mnt/outputs/dev-cert.crt -keystore "${JAVA_HOME}/lib/security/cacerts" -noprompt -storepass changeit;
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob-stress/stress-test-resources.bicep b/sdk/storage/azure-storage-blob-stress/stress-test-resources.bicep
index 671aec65300b..25ebd947a8b7 100644
--- a/sdk/storage/azure-storage-blob-stress/stress-test-resources.bicep
+++ b/sdk/storage/azure-storage-blob-stress/stress-test-resources.bicep
@@ -1,10 +1,10 @@
param baseName string
-param endpointSuffix string = 'core.windows.net'
+param endpointSuffix string = environment().suffixes.storage
param location string = resourceGroup().location
-param storageApiVersion string = '2022-09-01'
-var primaryAccountName = '${baseName}'
-var pageBlobStorageAccountName = '${baseName}pageblob'
+var uniqueSuffix = uniqueString(resourceGroup().id)
+var primaryAccountName = '${take(baseName, 11)}${uniqueSuffix}'
+var pageBlobStorageAccountName = '${take(baseName, 7)}${uniqueSuffix}page'
resource primaryAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: primaryAccountName
@@ -26,5 +26,5 @@ resource pageBlobStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' =
properties: {}
}
-output STORAGE_ENDPOINT_STRING string = '"https://${primaryAccountName}.blob.core.windows.net"'
-output PAGE_BLOB_STORAGE_ENDPOINT_STRING string = '"https://${pageBlobStorageAccountName}.blob.core.windows.net"'
+output STORAGE_ENDPOINT_STRING string = '"https://${primaryAccountName}.blob.${endpointSuffix}"'
+output PAGE_BLOB_STORAGE_ENDPOINT_STRING string = '"https://${pageBlobStorageAccountName}.blob.${endpointSuffix}"'
diff --git a/sdk/storage/azure-storage-blob-stress/templates/stress-test-job.yaml b/sdk/storage/azure-storage-blob-stress/templates/stress-test-job.yaml
index 2a22302d24ed..8cc1c2d71b5b 100644
--- a/sdk/storage/azure-storage-blob-stress/templates/stress-test-job.yaml
+++ b/sdk/storage/azure-storage-blob-stress/templates/stress-test-job.yaml
@@ -16,7 +16,7 @@ spec:
args:
- |
set -ex;
- dotnet dev-certs https --export-path /mnt/outputs/dev-cert.pfx;
+ dotnet dev-certs https --export-path /mnt/outputs/dev-cert.crt --format PEM --no-password;
/root/.dotnet/tools/http-fault-injector;
resources:
limits:
@@ -30,7 +30,17 @@ spec:
- |
set -xa;
set -o pipefail;
- keytool -import -alias test -file /mnt/outputs/dev-cert.pfx -keystore ${JAVA_HOME}/lib/security/cacerts -noprompt -keypass changeit -storepass changeit;
+ attempts=0;
+ while [ ! -s /mnt/outputs/dev-cert.crt ]; do
+ attempts=$((attempts + 1));
+ if [ "$attempts" -gt 60 ]; then
+ echo "Timed out waiting for fault injector certificate" >&2;
+ exit 1;
+ fi;
+ sleep 1;
+ done;
+ keytool -delete -alias HttpFaultInject -keystore "${JAVA_HOME}/lib/security/cacerts" -storepass changeit >/dev/null 2>&1 || true;
+ keytool -importcert -trustcacerts -alias HttpFaultInject -file /mnt/outputs/dev-cert.crt -keystore "${JAVA_HOME}/lib/security/cacerts" -noprompt -storepass changeit || exit 1;
mkdir -p "$DEBUG_SHARE";
. /mnt/outputs/.env;
export AZURE_HTTP_CLIENT_IMPLEMENTATION=com.azure.core.http.netty.NettyAsyncHttpClientProvider;
@@ -67,4 +77,4 @@ spec:
cpu: "0.7"
{{- include "stress-test-addons.container-env" . | nindent 6 }}
-{{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/StorageSeekableByteChannelBlobReadBehavior.java b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/StorageSeekableByteChannelBlobReadBehavior.java
index 840dd6dda6be..5700e1e7dd36 100644
--- a/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/StorageSeekableByteChannelBlobReadBehavior.java
+++ b/sdk/storage/azure-storage-blob/src/main/java/com/azure/storage/blob/specialized/StorageSeekableByteChannelBlobReadBehavior.java
@@ -11,6 +11,7 @@
import com.azure.storage.blob.models.BlobRange;
import com.azure.storage.blob.models.BlobRequestConditions;
import com.azure.storage.blob.models.BlobStorageException;
+import com.azure.storage.blob.models.DownloadRetryOptions;
import com.azure.storage.common.implementation.StorageSeekableByteChannel;
import java.io.IOException;
@@ -75,7 +76,7 @@ public int read(ByteBuffer dst, long sourceOffset) throws IOException {
try (ByteBufferBackedOutputStreamUtil dstStream = new ByteBufferBackedOutputStreamUtil(dst)) {
BlobDownloadResponse response
= client.downloadStreamWithResponse(dstStream, new BlobRange(sourceOffset, (long) dst.remaining()),
- null /*downloadRetryOptions*/, requestConditions, false, null, null);
+ new DownloadRetryOptions(), requestConditions, false, null, null);
resourceLength = CoreUtils.extractSizeFromContentRange(response.getDeserializedHeaders().getContentRange());
return dst.position() - initialPosition;
} catch (BlobStorageException e) {
diff --git a/sdk/storage/azure-storage-stress/pom.xml b/sdk/storage/azure-storage-stress/pom.xml
index cf1888ebf045..8170d61ed19f 100644
--- a/sdk/storage/azure-storage-stress/pom.xml
+++ b/sdk/storage/azure-storage-stress/pom.xml
@@ -21,6 +21,18 @@
-
+
+
+
+ io.opentelemetry
+ opentelemetry-bom
+ 1.58.0
+ pom
+ import
+
+
+
+
ch.qos.logback
diff --git a/sdk/storage/azure-storage-stress/src/main/java/com/azure/storage/stress/TelemetryHelper.java b/sdk/storage/azure-storage-stress/src/main/java/com/azure/storage/stress/TelemetryHelper.java
index 4bf6e523eae1..b633479100b1 100644
--- a/sdk/storage/azure-storage-stress/src/main/java/com/azure/storage/stress/TelemetryHelper.java
+++ b/sdk/storage/azure-storage-stress/src/main/java/com/azure/storage/stress/TelemetryHelper.java
@@ -124,7 +124,7 @@ public String getDescription() {
Cpu.registerObservers(otel);
MemoryPools.registerObservers(otel);
Threads.registerObservers(otel);
- GarbageCollector.registerObservers(otel);
+ GarbageCollector.registerObservers(otel, true);
OpenTelemetryAppender.install(otel);
return otel;
}