Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump to >2.4.0 yields DocumentClientException/ Request url is invalid. #358

Open
onkobu opened this issue Sep 7, 2020 · 1 comment
Open

Comments

@onkobu
Copy link

onkobu commented Sep 7, 2020

Describe the bug
I tried to update a quite old service to 2.6.10 and using the builder to construct an AsyncDocumentClient immediately throws a DocumentClientException with message Request url is invalid. The exactly same connection string/ endpoint-key-pair is used as before. Downgrading to 2.3 (or 2.2 or 2.1) makes it disappear.

To Reproduce
The following code creates the client:

// endpointKeyPair contains the values from ConnectionString, AccountEndpoint=getFirst() resp. AccountKey=getSecond
new AsyncDocumentClient.Builder()
	.withMasterKeyOrResourceToken(endpPointKeyPair.getSecond())
	.withServiceEndpoint(endpPointKeyPair.getFirst())
	.withConnectionPolicy(ConnectionPolicy.GetDefault())
	.withConsistencyLevel(ConsistencyLevel.ConsistentPrefix).build();

Expected behavior
AsyncDocumentClient is created without an exception/ as in versions before 2.4.0.

Actual behavior
throws DocumentClientException, clearly shows resourceAddress='null' but also responseHeaders="…Content-Location=https://.azure.com/;AccountKey="

Environment summary
SDK Version: 2.4.0 onwards
Java JDK version: 8
OS Version (e.g. Windows, Linux, MacOSX) Linux

Additional context
Only downgrading in pom.xml to versions before 2.4.0 makes it disappear and a working AsyncDocumentClient is created. It is also quite hard to spot the difference if esp. the withMasterKeyOrResourceToken-method didn't change, neither its documentation nor tags like @deprecated with a replacement. I assume the URL itself is not handled here but in the underlying Cosmos-library.

@onkobu
Copy link
Author

onkobu commented Sep 8, 2020

Found the answer hidden in the details of URL-parsing. With 2.4 and its dependencies parsing is less tolerant. The URL contained the full connection string incl. ;AccountKey. Whereas this is syntactically corrrect – URL-parameters can be appended by ';' – underlying GatewayServiceConfigurationReader and others how hiccup.

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

No branches or pull requests

1 participant