-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Shim ObjectMapper and add diagnostic version info to exceptions #23441
Conversation
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 looks like great progress!
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/SemanticVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/SemanticVersion.java
Outdated
Show resolved
Hide resolved
|
||
public static SemanticVersion parse(String version) { | ||
Objects.requireNonNull(version, "'version' cannot be null."); | ||
String[] parts = version.split("\\."); |
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 think a capturing regex would be better here
Pattern VERSION_PATTERN = Pattern.compile("(\d+)\\.(\d+)\\.(\d+)(?:-beta\\.\d+)?");
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.
Here is a full real semver regex ^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?
, I'd prefer to keep it simple since we don't really need all parts
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Show resolved
Hide resolved
if (!version.isValid()) { | ||
logger.warning("Could not find version of '{}'.", packageName); | ||
return false; | ||
} |
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'm a little confused on this, below both using a too old or too new version will return true (which I'm taking as it failed the version check?) but this returns false.
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.
Here we were not able to get version (e.g. it may happen when you debug locally), i.e. we can't conclusively say if this version is compatible or not, i.e. we don't indicate the critical error.
Maybe since the critical error is just a flag on the log, I can remove it - by looking at versions we should be able to deduce it ourselves.
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Outdated
Show resolved
Hide resolved
...core/azure-core/src/main/java/com/azure/core/implementation/jackson/ObjectMapperFactory.java
Outdated
Show resolved
Hide resolved
This pull request is protected by Check Enforcer. What is Check Enforcer?Check Enforcer helps ensure all pull requests are covered by at least one check-run (typically an Azure Pipeline). When all check-runs associated with this pull request pass then Check Enforcer itself will pass. Why am I getting this message?You are getting this message because Check Enforcer did not detect any check-runs being associated with this pull request within five minutes. This may indicate that your pull request is not covered by any pipelines and so Check Enforcer is correctly blocking the pull request being merged. What should I do now?If the check-enforcer check-run is not passing and all other check-runs associated with this PR are passing (excluding license-cla) then you could try telling Check Enforcer to evaluate your pull request again. You can do this by adding a comment to this pull request as follows: What if I am onboarding a new service?Often, new services do not have validation pipelines associated with them, in order to bootstrap pipelines for a new service, you can issue the following command as a pull request comment: |
c774a0f
to
ccc4edc
Compare
/azp run java - core - tests |
Azure Pipelines failed to run 1 pipeline(s). |
...sts/src/test/java/com/azure/core/implementation/jackson/UnsupportedJacksonVersionsTests.java
Outdated
Show resolved
Hide resolved
...sts/src/test/java/com/azure/core/implementation/jackson/UnsupportedJacksonVersionsTests.java
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/SemanticVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/SemanticVersion.java
Outdated
Show resolved
Hide resolved
sdk/core/azure-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersion.java
Outdated
Show resolved
Hide resolved
...re-core/src/main/java/com/azure/core/implementation/jackson/JacksonVersionMismatchError.java
Outdated
Show resolved
Hide resolved
...core/azure-core/src/main/java/com/azure/core/implementation/jackson/ObjectMapperFactory.java
Outdated
Show resolved
Hide resolved
if (cache.size() >= CACHE_SIZE_LIMIT) { | ||
cache.clear(); | ||
} |
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.
Clearing an input cache can be misleading as the caller would not have expected the cache to be cleared. Cache eviction should be handled by the class/owner declaring the cache to give more control over the lifetime of cache entries.
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 is not part of the current change, this code was just moved as-is from JacksonAdapter.
cache.clear(); | ||
} | ||
|
||
return cache.computeIfAbsent(key, compute); |
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.
Before clearing the cache, should we check to see if the entry exists and clearing may not be required?
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.
still, I'd like to preserve existing behavior since this is not part of this change.
2147329
to
173fe29
Compare
sdk/core/azure-core/src/main/java/com/azure/core/implementation/SemanticVersion.java
Outdated
Show resolved
Hide resolved
7c5d58d
to
3a25b69
Compare
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.
LGTM!
*/ | ||
private void checkVersion(SemanticVersion version, String packageName) { | ||
if (!version.isValid()) { | ||
logger.warning("Could not find version of '{}'.", packageName); |
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.
shouldn't this have a return below it?
and not sure if this needs to be a warning, just because you can't figure out the version doesn't mean you need to spam my logs 😢
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.
Azure Orbital - swagger fix for api-version 2022-11-01 (Azure#23441) * added example for the new field * updated the double ref that was causing build failure
Review request for Microsoft.ContainerInstance to add version stable/2023-05-01 (Azure#23485) * Adds base for updating Microsoft.ContainerInstance from version preview/2022-10-01-preview to version 2023-05-01 * Updates readme * Updates API version in new specs and examples * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23166) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23169) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23170) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23452) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * use old api versionf or operations * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23453) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * use old api versionf or operations * revert Operations example api version * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23471) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * use old api versionf or operations * revert Operations example api version * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23473) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * MGRP S360 Vuln (Azure#22832) * Add blockchain to latest profile * Add additional types * Fix Swagger issues * Solve validation --------- Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> * use old api versionf or operations * Azure Orbital - swagger fix for api-version 2022-11-01 (Azure#23441) * added example for the new field * updated the double ref that was causing build failure * Fixed PrometheusRuleGroups examples (Azure#23390) * Fixed PrometheusRuleGroups examples * One more fix * Remvoe flattern (Azure#23460) Co-authored-by: Will Huang <huangwill@microsoft.com> * Mvad update (Azure#23434) * Add default value 10 for topContributorCount * Update AnomalyDetector typespec to latest typespec and Azure.Core versions and fix all warnings * Update TypeSpec config * Add back language emitter options * Fix cspell and model validation errors --------- Co-authored-by: Chunlei Wang <chuwan@microsoft.com> * revert Operations example api version --------- Co-authored-by: ramoka178 <57157576+ramoka178@users.noreply.github.com> Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> Co-authored-by: Stuti Kumar <113545470+stuti-1807@users.noreply.github.com> Co-authored-by: giladsu <43436811+giladsu@users.noreply.github.com> Co-authored-by: will <koyasu221b@gmail.com> Co-authored-by: Will Huang <huangwill@microsoft.com> Co-authored-by: Mike Kistler <mikekistler@microsoft.com> Co-authored-by: Chunlei Wang <chuwan@microsoft.com> * use management.auzre.com endpoint * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23483) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * MGRP S360 Vuln (Azure#22832) * Add blockchain to latest profile * Add additional types * Fix Swagger issues * Solve validation --------- Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> * use old api versionf or operations * Azure Orbital - swagger fix for api-version 2022-11-01 (Azure#23441) * added example for the new field * updated the double ref that was causing build failure * Fixed PrometheusRuleGroups examples (Azure#23390) * Fixed PrometheusRuleGroups examples * One more fix * Remvoe flattern (Azure#23460) Co-authored-by: Will Huang <huangwill@microsoft.com> * Mvad update (Azure#23434) * Add default value 10 for topContributorCount * Update AnomalyDetector typespec to latest typespec and Azure.Core versions and fix all warnings * Update TypeSpec config * Add back language emitter options * Fix cspell and model validation errors --------- Co-authored-by: Chunlei Wang <chuwan@microsoft.com> * revert Operations example api version * use management.auzre.com endpoint --------- Co-authored-by: ramoka178 <57157576+ramoka178@users.noreply.github.com> Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> Co-authored-by: Stuti Kumar <113545470+stuti-1807@users.noreply.github.com> Co-authored-by: giladsu <43436811+giladsu@users.noreply.github.com> Co-authored-by: will <koyasu221b@gmail.com> Co-authored-by: Will Huang <huangwill@microsoft.com> Co-authored-by: Mike Kistler <mikekistler@microsoft.com> Co-authored-by: Chunlei Wang <chuwan@microsoft.com> * fix package version in readme * Fnuarnav containerinstance microsoft.container instance 2023 05 01 (Azure#23484) * add container security context property * update readme tag to previous stable version * add example with security context * avocado fix default tag should contain all endpoints * add back spot priority changes * use previous stable version as default tag * prettier fix * use spaces * fix error * use spaces * fix CI errors * use altest api version as default for Avocado * update host to eastus2euap endpoint to check manifest * MGRP S360 Vuln (Azure#22832) * Add blockchain to latest profile * Add additional types * Fix Swagger issues * Solve validation --------- Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> * use old api versionf or operations * Azure Orbital - swagger fix for api-version 2022-11-01 (Azure#23441) * added example for the new field * updated the double ref that was causing build failure * Fixed PrometheusRuleGroups examples (Azure#23390) * Fixed PrometheusRuleGroups examples * One more fix * Remvoe flattern (Azure#23460) Co-authored-by: Will Huang <huangwill@microsoft.com> * Mvad update (Azure#23434) * Add default value 10 for topContributorCount * Update AnomalyDetector typespec to latest typespec and Azure.Core versions and fix all warnings * Update TypeSpec config * Add back language emitter options * Fix cspell and model validation errors --------- Co-authored-by: Chunlei Wang <chuwan@microsoft.com> * revert Operations example api version * add codeowners for Compute Instance swagger (Azure#23437) Co-authored-by: Naman Agarwal <naagarw@microsoft.com> * [Hub Generated] Review request for Microsoft.DevHub to add version preview/2022-10-11-preview (Azure#22828) * Adds base for updating Microsoft.DevHub from version preview/2022-04-01-preview to version 2022-10-11-preview * Updates readme * Updates API version in new specs and examples * start 10-11 preview * add words * fix readme version * update swagger version * add second putworkflow example * fix generatepreviewartifactsresponse * align generate preview artifacts example * update param locations that got changed * add x-ms-client-flatten for artifact properties * Adding WorkflowRunStatus * Fixing enum name * add namespace to example --------- Co-authored-by: Brandon Foley <brandonfoley13@gmail.com> * Update readme.python.md (Azure#23208) * fixing async response type for machinelearningservices-2023-02-01-preview (Azure#23105) * fixing regex pattern and async response type * remove update to regex * Fix lint error for Datadog RP (Azure#23477) * Fix link error for Datadog RP * Fix version * merging billing fix to public repo (Azure#23424) Co-authored-by: Gaurav Bang <gauravbang@microsoft.com> * use management.auzre.com endpoint * fix package version in readme --------- Co-authored-by: ramoka178 <57157576+ramoka178@users.noreply.github.com> Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> Co-authored-by: Stuti Kumar <113545470+stuti-1807@users.noreply.github.com> Co-authored-by: giladsu <43436811+giladsu@users.noreply.github.com> Co-authored-by: will <koyasu221b@gmail.com> Co-authored-by: Will Huang <huangwill@microsoft.com> Co-authored-by: Mike Kistler <mikekistler@microsoft.com> Co-authored-by: Chunlei Wang <chuwan@microsoft.com> Co-authored-by: Naman Agarwal <namanag16@gmail.com> Co-authored-by: Naman Agarwal <naagarw@microsoft.com> Co-authored-by: David Gamero <david340804@gmail.com> Co-authored-by: Brandon Foley <brandonfoley13@gmail.com> Co-authored-by: Yuchao Yan <yuchaoyan@microsoft.com> Co-authored-by: Karishma Daga <karishmadaga@microsoft.com> Co-authored-by: vikotha <81368129+vikotha@users.noreply.github.com> Co-authored-by: Gaurav <bang.gourav@gmail.com> Co-authored-by: Gaurav Bang <gauravbang@microsoft.com> * fix tag in readme * update example with capabilities example * fix typo --------- Co-authored-by: ramoka178 <57157576+ramoka178@users.noreply.github.com> Co-authored-by: Mark Cowlishaw <markcowl@microsoft.com> Co-authored-by: Stuti Kumar <113545470+stuti-1807@users.noreply.github.com> Co-authored-by: giladsu <43436811+giladsu@users.noreply.github.com> Co-authored-by: will <koyasu221b@gmail.com> Co-authored-by: Will Huang <huangwill@microsoft.com> Co-authored-by: Mike Kistler <mikekistler@microsoft.com> Co-authored-by: Chunlei Wang <chuwan@microsoft.com> Co-authored-by: Naman Agarwal <namanag16@gmail.com> Co-authored-by: Naman Agarwal <naagarw@microsoft.com> Co-authored-by: David Gamero <david340804@gmail.com> Co-authored-by: Brandon Foley <brandonfoley13@gmail.com> Co-authored-by: Yuchao Yan <yuchaoyan@microsoft.com> Co-authored-by: Karishma Daga <karishmadaga@microsoft.com> Co-authored-by: vikotha <81368129+vikotha@users.noreply.github.com> Co-authored-by: Gaurav <bang.gourav@gmail.com> Co-authored-by: Gaurav Bang <gauravbang@microsoft.com>
This is proof of concept for shimming
ObjectMapper
azure.core.implementation.jackson
packageObjectMapperShim
that is used byJacksonAdapter
and other core classes that use mapperObjectMapperShim
, when LinkageError is detected, adds diagnostic version info to exception (we'll add link to docs here)Here's how
adapter = new JacksonAdapter()
looks like with Jackson 2.9.0:Logs:
Exception:
Please share any early feedback.