-
Notifications
You must be signed in to change notification settings - Fork 126
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
Remove the unnecessary code line because of fix in common #2135
base: dev
Are you sure you want to change the base?
Conversation
@@ -30,7 +30,7 @@ resources: | |||
- repository: common | |||
type: github | |||
name: AzureAD/microsoft-authentication-library-common-for-android | |||
ref: dev | |||
ref: robert/empty-correlation-id-fixes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Revert it back before the merge.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we have this here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I cannot change the targe branch in the DevOps portal thus change the command here.
// Set it to a default value. | ||
.correlationId(DiagnosticContext.INSTANCE.getThreadCorrelationId()) | ||
// If default value "UNSET", generate a new UUID as correlationId. | ||
.correlationId(Objects.equals(DiagnosticContext.INSTANCE.getThreadCorrelationId(), "UNSET") ? UUID.randomUUID().toString() : DiagnosticContext.INSTANCE.getThreadCorrelationId()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This logic doesn't belong here. it's the responsibility of DiagnosticContext to generate an ID, and do additional null checks to ensure an actual ID is returned.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update the logic inside DiagnosticContext getThreadCorrelationId()
…' into yuki/company-with-robert-PR-test
…ializeDiagnosticContext final String correlationId = StringUti?.isNullOrEmpty(requestCorrelationId)?UUID.randomUUID().toString():requestCorrelationId;
@@ -262,7 +262,7 @@ class NativeAuthPublicClientApplication( | |||
GetAccountResult.AccountFound( | |||
resultValue = AccountState.createFromAccountResult( | |||
account = account, | |||
correlationId = DiagnosticContext.INSTANCE.threadCorrelationId, | |||
correlationId = "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you check what MSAL does here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, what was your thinking behind changing this from the thread ID to an empty string?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This path generate AccountState from the SDK cache (authClient.getCurrentAccount())
The default value of DiagnosticContext.INSTANCE.threadCorrelationId is UNSET. And currently, SDK won't transform “UNSET" into UUID.
If use DiagnosticContext.INSTANCE.threadCorrelationId,
- authClient.getCurrentAccount() before signIn. correlation id would be "UNSET"
- signIn. correlation id should be UUID
- authClient.getCurrentAccount() after signIn. When getting correlation id again then becomes UUID as the sign in flow.
I am not sure if the difference between the two correlation ids before and after is what we want
@@ -341,7 +341,7 @@ class NativeAuthPublicClientApplication( | |||
return@withContext SignInError( | |||
errorType = ErrorTypes.INVALID_USERNAME, | |||
errorMessage = "Empty or blank username", | |||
correlationId = "UNSET" | |||
correlationId = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not set it at all, meaning the value will be null?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The correlationId parameter is mandatory. Setting it to “” would be much easier than dealing with if null.
@@ -77,7 +77,7 @@ class AccountState private constructor( | |||
|
|||
constructor (parcel: Parcel) : this ( | |||
account = parcel.serializable<IAccount>() as IAccount, | |||
correlationId = parcel.readString() ?: "UNSET", | |||
correlationId = parcel.readString() ?: "", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't UUID.fromString("")
also produce an exception?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good point. How about generating random UUID here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep the original "UNSET" string.
# Conflicts: # common
… the common PR made changes in getThreadCorrelationId(), if it is null or UNSET, will generate a random UUID
# Conflicts: # common
@@ -309,12 +309,17 @@ class AccountState private constructor( | |||
correlationId = correlationId | |||
) | |||
|
|||
val privateCorrelationId = if (correlationId == "UNSET") { UUID.randomUUID().toString() } else { correlationId } | |||
try { | |||
UUID.fromString(correlationId) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: maybe assign the result to a variable and use it in the builder to avoid calling the fromString() method twice
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Yuki-YuXin let's run the tests without this fix here to ensure it works not. But let's keep this fix here as well, to avoid any production crashes (but clean it up a bit, e.g. call DiagnosticContext.INSTANCE.getThreadCorrelationId()
so that a new UUID is generated in there, rather than here at the call site).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Local GetAccessTokenTests passed with and without the changes here.
# Conflicts: # common
# Conflicts: # common
Company PR: AzureAD/microsoft-authentication-library-common-for-android#2435