Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
540a16d
Initial changes
aayush3011 Apr 24, 2024
6f49c75
Initial changes
aayush3011 Apr 25, 2024
97509eb
Merge branch 'main' into users/akataria/nonStreamingOrderBy
aayush3011 Apr 25, 2024
938279a
Increment versions for core releases (#40003)
azure-sdk May 2, 2024
c6c520e
Ensure ServiceBus session idle timeout fall back to retry-options::tr…
anuchandy May 2, 2024
222f2d9
Added Alpha3 Java Media Streaming Events (#40002)
v-durgeshs May 2, 2024
387170a
Update version of github-event-processor to 1.0.0-dev.20240502.2 (#40…
azure-sdk May 2, 2024
b1e8fdc
Prepare May 2024 Identity Release (#40006)
billwert May 2, 2024
c3c4648
Prepare Identity Broker May 2024 Release (#40014)
billwert May 2, 2024
a5127c6
Increment package versions for identity releases (#40015)
azure-sdk May 2, 2024
ba334df
[JobRouter] SDK Review updates (#40011)
williamzhao87 May 2, 2024
5682de3
FixFaultInjectionRuleFailedToApplyPerPartitionInGatewayMode (#40005)
xinlian12 May 3, 2024
39cb79f
azure-cosmos-test_1.0.0.beta.7Release (#40021)
xinlian12 May 3, 2024
86b36d3
Merge branch 'main' into users/akataria/nonStreamingOrderBy
aayush3011 May 3, 2024
9a38357
Fixed existsById API in ReactiveCosmosTemplate (#40022)
kushagraThapar May 3, 2024
a979c11
Initial changes
aayush3011 May 3, 2024
e2756a5
Initial changes
aayush3011 May 3, 2024
d768057
Skip Recorded test and delete Event record until test proxy to work w…
minwoolee-msft May 3, 2024
71b1905
Fix invalid CODEOWNERS (#40032)
alzimmermsft May 3, 2024
8be2277
Initial changes
aayush3011 May 3, 2024
28a2b5a
ServiceBus: fix session tracing (#39962)
May 3, 2024
deff567
[Automation] Generate SDK based on TypeSpec 0.15.15 (#40048)
azure-sdk May 6, 2024
058f8a8
[CODEOWNERS] Updates for org changes (#40049)
jsquire May 6, 2024
9406783
Move from using the docker image to java2docfx for docs validation (#…
JimSuplizio May 6, 2024
6dee85b
owners (#39686)
harsimar May 6, 2024
61b177c
Use ClientLogger in testing output (#40010)
alzimmermsft May 6, 2024
8349880
Fix null pointer exception and context usage (#40053)
alzimmermsft May 6, 2024
c75b369
Rename AML to AzureMachineLearning (#40056)
alzimmermsft May 6, 2024
af7f403
Fixed the Key Vault `test-resources.json` file to properly configure …
vcolin7 May 6, 2024
c9da24c
Close response body in bearer policy (#40052)
May 6, 2024
7055e66
Running Prepare-Release for azure-messaging-servicebus 7.17.0 (#40058)
anuchandy May 7, 2024
4428897
mgmt, TypeSpec code generation pipeline (#39963)
XiaofeiCao May 7, 2024
a755e6a
Add codeowner linter owners (#39997)
weshaggard May 7, 2024
23b7d1e
Update to ESRP task version that supports federated auth (#40059)
hallipr May 7, 2024
94bd0d4
Increment package versions for cosmos releases (#40031)
azure-sdk May 7, 2024
149bd61
Update azure-sdk-build-tools Repository Resource Refs in Yaml files (…
azure-sdk May 7, 2024
847a8ae
Add reduced embeddings sample to azure-search-documents (#40069)
alzimmermsft May 7, 2024
376955f
Search May Preview Regen Updates (#40057)
jairmyree May 7, 2024
f01f7f4
Preparing Search May 2024 Beta Release (#40071)
jairmyree May 7, 2024
e491b9d
Resolving comments
aayush3011 May 7, 2024
151bb50
Fixing build issues
aayush3011 May 7, 2024
c86b87e
eng, update autorest.java, improve error output in sdk automation (#4…
weidongxu-microsoft May 8, 2024
a3d2d26
Merge to main after spring cloud azure 4.18.0 released (#40075)
Netyyyy May 8, 2024
f6909fb
Miscellaneous Core performance improvements (#39552)
alzimmermsft May 8, 2024
73afd5b
Merge branch 'Azure:main' into users/akataria/nonStreamingOrderBy
aayush3011 May 8, 2024
3271984
Increment package versions for search releases (#40072)
azure-sdk May 9, 2024
0e921d2
Update io.fabric8:kubernetes-client (#40086)
jairmyree May 9, 2024
b2a4bef
Increment package versions for servicebus releases (#40094)
azure-sdk May 9, 2024
6884420
Emit stable auto-instrumented otel metrics (#39960)
heyams May 9, 2024
3b0d751
Merge branch 'Azure:main' into users/akataria/nonStreamingOrderBy
aayush3011 May 9, 2024
87572f7
Merge branch 'feature/vector_search' into users/akataria/nonStreaming…
aayush3011 May 9, 2024
92a1a90
[Key Vault] Added support for `/prerestore` and `/prebackup` endpoint…
vcolin7 May 9, 2024
179f904
Initial changes
aayush3011 May 9, 2024
5602e33
Merge branch 'users/akataria/nonStreamingOrderBy' of github.com:aayus…
aayush3011 May 9, 2024
36ab9b7
Merge branch 'feature/vector_search' into users/akataria/nonStreaming…
aayush3011 May 9, 2024
0b29ce1
Prepare to release beta.22 (#40097)
heyams May 9, 2024
28217eb
Fix template name (#40099)
JimSuplizio May 9, 2024
a8fcba9
Update partner release to use WIF (#40101)
weshaggard May 9, 2024
0db1017
core mgmt, `SubResource` implements `JsonSerializable` to support azu…
XiaofeiCao May 10, 2024
2fae403
Update spring-reference and sync changelog (#40105)
Netyyyy May 10, 2024
47b1085
Support per-call response timeout in all HttpClient implementations (…
alzimmermsft May 10, 2024
e7deb7b
Change how JavaType is resolved to support JsonSerializable better (#…
alzimmermsft May 10, 2024
70639b5
Initial changes
aayush3011 May 10, 2024
c45c3a5
Fixes
aayush3011 May 10, 2024
6c255ee
Merge branch 'Azure:main' into users/akataria/nonStreamingOrderBy
aayush3011 May 10, 2024
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
4 changes: 3 additions & 1 deletion eng/pipelines/docindex.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ jobs:
parameters:
DailyBranchVariableName: DailyDocsBranchName

- template: /eng/pipelines/templates/steps/mvn-linux-settings-for-docs.yml
- template: /eng/pipelines/templates/steps/mvn-linux-repository-settings.yml

- template: /eng/pipelines/templates/steps/install-rex-validation-tool.yml

- task: Powershell@2
inputs:
Expand Down
18 changes: 13 additions & 5 deletions eng/pipelines/partner-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,20 @@ extends:

- template: /eng/pipelines/templates/steps/download-credscan-suppressions.yml

- task: PowerShell@2
displayName: 'Download packages from blob storage'
- task: AzurePowerShell@5
displayName: 'Copy from azuresdkpartnerdrops'
condition: and(succeeded(), ne(variables['SkipCopyFromPartnerDrops'], 'true'))
inputs:
targetType: filePath
filePath: '$(BuildToolScripts)/copy-from-azuresdkpartnerdrops.ps1'
arguments: '$(Artifacts) ${{ parameters.BlobPath }} $(azuresdkpartnerdrops-access-key)'
azureSubscription: 'azuresdkpartnerdrops - Storage Partner Drops'
ScriptType: 'InlineScript'
azurePowerShellVersion: LatestVersion
pwsh: true
Inline: |
azcopy copy 'https://azuresdkpartnerdrops.blob.core.windows.net/drops/${{ parameters.BlobPath }}/*' '$(Artifacts)' --recursive=true
echo "Copied files:"
dir '$(Artifacts)' -r | % { $_.FullName }
env:
AZCOPY_AUTO_LOGIN_TYPE: 'PSCRED'

- template: tools/java-esrp-signing/java-esrp-signing.yml@azure-sdk-build-tools
parameters:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.azure.core.http.jdk.httpclient.implementation.InputStreamTimeoutResponseSubscriber;
import com.azure.core.http.jdk.httpclient.implementation.JdkHttpResponseAsync;
import com.azure.core.http.jdk.httpclient.implementation.JdkHttpResponseSync;
import com.azure.core.implementation.util.HttpUtils;
import com.azure.core.util.Context;
import com.azure.core.util.logging.ClientLogger;
import reactor.core.publisher.Mono;
Expand All @@ -31,8 +32,6 @@
*/
class JdkHttpClient implements HttpClient {
private static final ClientLogger LOGGER = new ClientLogger(JdkHttpClient.class);
private static final String AZURE_EAGERLY_READ_RESPONSE = "azure-eagerly-read-response";
private static final String AZURE_IGNORE_RESPONSE_BODY = "azure-ignore-response-body";

private final java.net.http.HttpClient jdkHttpClient;

Expand Down Expand Up @@ -79,8 +78,8 @@ public Mono<HttpResponse> send(HttpRequest request) {

@Override
public Mono<HttpResponse> send(HttpRequest request, Context context) {
boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false);
boolean eagerlyReadResponse = (boolean) context.getData(HttpUtils.AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(HttpUtils.AZURE_IGNORE_RESPONSE_BODY).orElse(false);

Mono<java.net.http.HttpRequest> jdkRequestMono = Mono.fromCallable(() -> toJdkHttpRequest(request, context));

Expand Down Expand Up @@ -111,8 +110,8 @@ public Mono<HttpResponse> send(HttpRequest request, Context context) {

@Override
public HttpResponse sendSync(HttpRequest request, Context context) {
boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false);
boolean eagerlyReadResponse = (boolean) context.getData(HttpUtils.AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(HttpUtils.AZURE_IGNORE_RESPONSE_BODY).orElse(false);

java.net.http.HttpRequest jdkRequest = toJdkHttpRequest(request, context);
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
import java.util.Set;
import java.util.concurrent.Executor;

import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_CONNECT_TIMEOUT;
import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_READ_TIMEOUT;
import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_RESPONSE_TIMEOUT;
import static com.azure.core.util.Configuration.PROPERTY_AZURE_REQUEST_WRITE_TIMEOUT;
import static com.azure.core.util.CoreUtils.getDefaultTimeoutFromEnvironment;
import static com.azure.core.implementation.util.HttpUtils.getDefaultConnectTimeout;
import static com.azure.core.implementation.util.HttpUtils.getDefaultReadTimeout;
import static com.azure.core.implementation.util.HttpUtils.getDefaultResponseTimeout;
import static com.azure.core.implementation.util.HttpUtils.getDefaultWriteTimeout;
import static com.azure.core.implementation.util.HttpUtils.getTimeout;

/**
* Builder to configure and build an instance of the azure-core {@link HttpClient} type using the JDK HttpClient APIs,
Expand All @@ -38,12 +38,6 @@
public class JdkHttpClientBuilder {
private static final ClientLogger LOGGER = new ClientLogger(JdkHttpClientBuilder.class);

private static final Duration MINIMUM_TIMEOUT = Duration.ofMillis(1);
private static final Duration DEFAULT_CONNECTION_TIMEOUT;
private static final Duration DEFAULT_WRITE_TIMEOUT;
private static final Duration DEFAULT_RESPONSE_TIMEOUT;
private static final Duration DEFAULT_READ_TIMEOUT;

private static final String JAVA_HOME = System.getProperty("java.home");
private static final String JDK_HTTPCLIENT_ALLOW_RESTRICTED_HEADERS = "jdk.httpclient.allowRestrictedHeaders";

Expand All @@ -57,17 +51,6 @@ public class JdkHttpClientBuilder {
static final Set<String> DEFAULT_RESTRICTED_HEADERS;

static {
Configuration configuration = Configuration.getGlobalConfiguration();

DEFAULT_CONNECTION_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration,
PROPERTY_AZURE_REQUEST_CONNECT_TIMEOUT, Duration.ofSeconds(10), LOGGER);
DEFAULT_WRITE_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration, PROPERTY_AZURE_REQUEST_WRITE_TIMEOUT,
Duration.ofSeconds(60), LOGGER);
DEFAULT_RESPONSE_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration,
PROPERTY_AZURE_REQUEST_RESPONSE_TIMEOUT, Duration.ofSeconds(60), LOGGER);
DEFAULT_READ_TIMEOUT = getDefaultTimeoutFromEnvironment(configuration, PROPERTY_AZURE_REQUEST_READ_TIMEOUT,
Duration.ofSeconds(60), LOGGER);

DEFAULT_RESTRICTED_HEADERS = Set.of("connection", "content-length", "expect", "host", "upgrade");
}

Expand Down Expand Up @@ -248,11 +231,11 @@ public HttpClient build() {
// Azure JDK http client supports HTTP 1.1 by default.
httpClientBuilder.version(java.net.http.HttpClient.Version.HTTP_1_1);

httpClientBuilder = httpClientBuilder.connectTimeout(getTimeout(connectionTimeout, DEFAULT_CONNECTION_TIMEOUT));
httpClientBuilder = httpClientBuilder.connectTimeout(getTimeout(connectionTimeout, getDefaultConnectTimeout()));

Duration writeTimeout = getTimeout(this.writeTimeout, DEFAULT_WRITE_TIMEOUT);
Duration responseTimeout = getTimeout(this.responseTimeout, DEFAULT_RESPONSE_TIMEOUT);
Duration readTimeout = getTimeout(this.readTimeout, DEFAULT_READ_TIMEOUT);
Duration writeTimeout = getTimeout(this.writeTimeout, getDefaultWriteTimeout());
Duration responseTimeout = getTimeout(this.responseTimeout, getDefaultResponseTimeout());
Duration readTimeout = getTimeout(this.readTimeout, getDefaultReadTimeout());

Configuration buildConfiguration
= (configuration == null) ? Configuration.getGlobalConfiguration() : configuration;
Expand Down Expand Up @@ -331,12 +314,4 @@ protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.userName, password.toCharArray());
}
}

private static Duration getTimeout(Duration configuredTimeout, Duration defaultTimeout) {
if (configuredTimeout == null) {
return defaultTimeout;
}

return configuredTimeout.compareTo(MINIMUM_TIMEOUT) < 0 ? MINIMUM_TIMEOUT : configuredTimeout;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import com.azure.core.http.HttpMethod;
import com.azure.core.implementation.util.HttpHeadersAccessHelper;
import com.azure.core.implementation.util.HttpUtils;
import com.azure.core.util.Context;
import com.azure.core.util.Contexts;
import com.azure.core.util.ProgressReporter;
Expand Down Expand Up @@ -51,6 +52,9 @@ public AzureJdkHttpRequest(com.azure.core.http.HttpRequest azureCoreRequest, Con
Set<String> restrictedHeaders, ClientLogger logger, Duration writeTimeout, Duration responseTimeout) {
HttpMethod method = azureCoreRequest.getHttpMethod();
ProgressReporter progressReporter = Contexts.with(context).getHttpRequestProgressReporter();
responseTimeout = (Duration) context.getData(HttpUtils.AZURE_RESPONSE_TIMEOUT)
.filter(timeoutDuration -> timeoutDuration instanceof Duration)
.orElse(responseTimeout);

this.method = method.toString();
this.bodyPublisher = (method == HttpMethod.GET || method == HttpMethod.HEAD)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ public final class JdkHttpClientLocalTestServer {
private static volatile LocalTestServer proxyServer;
private static final Semaphore PROXY_SERVER_SEMAPHORE = new Semaphore(1);

public static final String TIMEOUT = "/timeout";

public static final byte[] SHORT_BODY = "hi there".getBytes(StandardCharsets.UTF_8);
public static final byte[] LONG_BODY = createLongBody();

Expand Down Expand Up @@ -104,6 +106,16 @@ private static LocalTestServer initializeServer() {
resp.getHttpOutput().write(SHORT_BODY, 5, 3);
resp.getHttpOutput().flush();
resp.getHttpOutput().complete(Callback.NOOP);
} else if (get && TIMEOUT.equals(path)) {
try {
Thread.sleep(5000);
resp.setStatus(200);
resp.getHttpOutput().write(SHORT_BODY);
resp.getHttpOutput().flush();
resp.getHttpOutput().complete(Callback.NOOP);
} catch (InterruptedException e) {
throw new ServletException(e);
}
} else {
throw new ServletException("Unexpected request: " + req.getMethod() + " " + path);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.azure.core.http.HttpMethod;
import com.azure.core.http.HttpRequest;
import com.azure.core.http.HttpResponse;
import com.azure.core.implementation.util.HttpUtils;
import com.azure.core.util.BinaryData;
import com.azure.core.util.Context;
import com.azure.core.util.Contexts;
Expand Down Expand Up @@ -55,6 +56,7 @@

import static com.azure.core.http.jdk.httpclient.JdkHttpClientLocalTestServer.LONG_BODY;
import static com.azure.core.http.jdk.httpclient.JdkHttpClientLocalTestServer.SHORT_BODY;
import static com.azure.core.http.jdk.httpclient.JdkHttpClientLocalTestServer.TIMEOUT;
import static com.azure.core.test.utils.TestUtils.assertArraysEqual;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
Expand Down Expand Up @@ -469,6 +471,46 @@ public void slowEagerReadingTimesOutAsync() {
.verify(Duration.ofSeconds(5));
}

@Test
public void perCallTimeout() {
HttpClient client = new JdkHttpClientBuilder().responseTimeout(Duration.ofSeconds(10)).build();

HttpRequest request = new HttpRequest(HttpMethod.GET, url(TIMEOUT));

// Verify a smaller timeout sent through Context times out the request.
StepVerifier.create(client.send(request, new Context(HttpUtils.AZURE_RESPONSE_TIMEOUT, Duration.ofSeconds(1))))
.expectErrorMatches(e -> e instanceof HttpTimeoutException)
.verify();

// Then verify not setting a timeout through Context does not time out the request.
StepVerifier.create(client.send(request)
.flatMap(response -> Mono.zip(FluxUtil.collectBytesInByteBufferStream(response.getBody()),
Mono.just(response.getStatusCode()))))
.assertNext(tuple -> {
assertArraysEqual(SHORT_BODY, tuple.getT1());
assertEquals(200, tuple.getT2());
})
.verifyComplete();
}

@Test
public void perCallTimeoutSync() {
HttpClient client = new JdkHttpClientBuilder().responseTimeout(Duration.ofSeconds(10)).build();

HttpRequest request = new HttpRequest(HttpMethod.GET, url(TIMEOUT));

// Verify a smaller timeout sent through Context times out the request.
RuntimeException ex = assertThrows(RuntimeException.class,
() -> client.sendSync(request, new Context(HttpUtils.AZURE_RESPONSE_TIMEOUT, Duration.ofSeconds(1))));
assertInstanceOf(HttpTimeoutException.class, ex.getCause());

// Then verify not setting a timeout through Context does not time out the request.
try (HttpResponse response = client.sendSync(request, Context.NONE)) {
assertEquals(200, response.getStatusCode());
assertArraysEqual(SHORT_BODY, response.getBodyAsBinaryData().toBytes());
}
}

private static Mono<HttpResponse> getResponse(String path) {
HttpClient client = new JdkHttpClientBuilder().build();
return doRequest(client, path);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.azure.core.implementation.util.BinaryDataHelper;
import com.azure.core.implementation.util.ByteArrayContent;
import com.azure.core.implementation.util.FileContent;
import com.azure.core.implementation.util.HttpUtils;
import com.azure.core.implementation.util.InputStreamContent;
import com.azure.core.implementation.util.SerializableContent;
import com.azure.core.implementation.util.StringContent;
Expand Down Expand Up @@ -94,11 +95,6 @@ class NettyAsyncHttpClient implements HttpClient {
private static final ClientLogger LOGGER = new ClientLogger(NettyAsyncHttpClient.class);
private static final byte[] EMPTY_BYTES = new byte[0];

private static final String AZURE_EAGERLY_READ_RESPONSE = "azure-eagerly-read-response";
private static final String AZURE_IGNORE_RESPONSE_BODY = "azure-ignore-response-body";
private static final String AZURE_RESPONSE_TIMEOUT = "azure-response-timeout";
private static final String AZURE_EAGERLY_CONVERT_HEADERS = "azure-eagerly-convert-headers";

final boolean disableBufferCopy;

final boolean addProxyHandler;
Expand Down Expand Up @@ -132,10 +128,11 @@ public Mono<HttpResponse> send(HttpRequest request, Context context) {
Objects.requireNonNull(request.getUrl(), "'request.getUrl()' cannot be null.");
Objects.requireNonNull(request.getUrl().getProtocol(), "'request.getUrl().getProtocol()' cannot be null.");

boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false);
boolean headersEagerlyConverted = (boolean) context.getData(AZURE_EAGERLY_CONVERT_HEADERS).orElse(false);
Long responseTimeout = context.getData(AZURE_RESPONSE_TIMEOUT)
boolean eagerlyReadResponse = (boolean) context.getData(HttpUtils.AZURE_EAGERLY_READ_RESPONSE).orElse(false);
boolean ignoreResponseBody = (boolean) context.getData(HttpUtils.AZURE_IGNORE_RESPONSE_BODY).orElse(false);
boolean headersEagerlyConverted
= (boolean) context.getData(HttpUtils.AZURE_EAGERLY_CONVERT_HEADERS).orElse(false);
Long responseTimeout = context.getData(HttpUtils.AZURE_RESPONSE_TIMEOUT)
.filter(timeoutDuration -> timeoutDuration instanceof Duration)
.map(timeoutDuration -> ((Duration) timeoutDuration).toMillis())
.orElse(null);
Expand Down
Loading