You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "Rajeev-01 (via GitHub)" <gi...@apache.org> on 2026/08/12 13:57:39 UTC
[PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Rajeev-01 opened a new pull request, #19596:
URL: https://github.com/apache/hudi/pull/19596
### Describe the issue this Pull Request addresses
- closes https://github.com/apache/hudi/issues/19595
- This PR addresses the NPE issues that we face while fetching the avro version during runtime.
`at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.lang.NullPointerException: Cannot invoke "String.toLowerCase(java.util.Locale)" because "version" is null
at org.apache.hudi.common.util.ComparableVersion.parseVersion(ComparableVersion.java:317)
at org.apache.hudi.common.util.ComparableVersion.<init>(ComparableVersion.java:309)
at org.apache.hudi.common.util.StringUtils.compareVersions(StringUtils.java:224)
at org.apache.hudi.avro.HoodieAvroUtils.gteqAvro1_12(HoodieAvroUtils.java:1337)
at org.apache.hudi.avro.HoodieAvroUtils.convertDefaultValueForAvroCompatibility(HoodieAvroUtils.java:1341)
`
### Summary and Changelog
- Current implementation `Schema.class.getPackage().getImplementationVersion()` will return `null` if the avro jar is not being passed as runtime dependency but included as a part of current fat / shaded jar.
- Created the method `HoodieAvroUtils#resolveAvroVersion()` to get the avro version from the pom.properties of the current fat jar.
- If it's not present, falling back to default behavior.
- Replaced the same in `AvroSchemaConverterWithTimestampNTZ` class as well to keep the consistent behavior.
### Impact
- Will remove the NPE while resolving the avro version and works for both cases where avro jar brought as runtime dependency or include in fat jar.
### Risk Level
low
### Documentation Update
none
### Contributor's checklist
- [ ] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute)
- [ ] Enough context is provided in the sections above
- [ ] Adequate tests were added if applicable
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5291090236
Thanks for the added review too, merging it in. We can ignore the remaining nits.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5267908873
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 1b591d449cbf3ff5ce99bcf0b70aea77a01ac911 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773162099
##########
hudi-hadoop-common/src/main/java/org/apache/parquet/avro/AvroSchemaConverterWithTimestampNTZ.java:
##########
@@ -669,15 +669,11 @@ private static String appendPath(String path, String fieldName) {
/* Avro <= 1.9 does not support conversions to LocalTimestamp{Micros, Millis} classes */
private static boolean avroVersionSupportsLocalTimestampTypes() {
- final String avroVersion = getRuntimeAvroVersion();
+ final String avroVersion = HoodieAvroUtils.AVRO_VERSION;
return avroVersion == null
|| !(avroVersion.startsWith("1.7.")
|| avroVersion.startsWith("1.8.")
|| avroVersion.startsWith("1.9."));
}
Review Comment:
Ack. agree with the behavioral change that will intrduce with this PR wrt to timestamp creation. Will remove this refactor without coupling this with `HoodieAvroUtils`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-agent (via GitHub)" <gi...@apache.org>.
hudi-agent commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3776032849
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +129,52 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter comes from whatever manifest happens to
+ * seal the package, which is only avro's own manifest when avro ships as a standalone jar. But once
+ * its classes get merged or relocated into a shaded/fat jar, that lookup silently returns the
+ * assembling jar's version instead of avro's or nothing at all. So better to resolve with pom.properties
+ * followed by manifest version.
+ */
+ private static String resolveAvroVersion() {
+ final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try {
+ URL schemaClassUrl = Schema.class.getResource("Schema.class");
+ String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
+ Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
+ while (candidates.hasMoreElements()) {
+ URL candidate = candidates.nextElement();
+ // only use the pom.properties that ships in the same archive as the loaded Schema class
+ if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
+ continue;
+ }
+ Properties avroProperties = new Properties();
+ try (InputStream in = candidate.openStream()) {
+ avroProperties.load(in);
+ }
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception e) {
+ log.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
+ }
+ String manifestVersion = Schema.class.getPackage() == null ? null : Schema.class.getPackage().getImplementationVersion();
+ if (manifestVersion == null) {
+ log.warn("Could not resolve the avro version from {} nor from the jar manifest, "
+ + "avro version checks will fall back to pre-1.9 behaviour. Check that avro jar is on the classpath.", path);
+ }
+ return manifestVersion;
+ }
+
+ private static String archiveOf(URL url) {
+ String s = url.toString();
Review Comment:
๐ค nit: could you rename `s` to `urlString` (or `urlStr`)? Single-letter variable names in short methods are fine for counters, but here it's the method's whole raison d'รชtre and a more descriptive name would make the subsequent `indexOf` / `substring` chain self-explanatory at a glance.
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
##########
hudi-common/src/test/java/org/apache/hudi/common/avro/TestHoodieAvroUtils.java:
##########
@@ -1191,4 +1192,14 @@ public void testConvertToRecord() throws IOException {
assertEquals(NUM_FIELDS_IN_EXAMPLE_SCHEMA, stripped.getSchema().getFields().size());
assertEquals("key1", stripped.get("_row_key").toString());
}
+
+ /**
+ * Verifies whether loaded avro version from pom.properties matches with implementation version from manifest
+ */
+ @Test
+ void testAvroVersionMatchesLoadedAvroJar() {
+ assertNotNull(HoodieAvroUtils.AVRO_VERSION);
+ // the pom.properties lookup must agree with the jar that actually defines Schema
Review Comment:
๐ค nit: the test asserts equality with `Schema.class.getPackage().getImplementationVersion()`, but that's exactly the old fallback path โ so in a shaded-jar environment (the scenario this PR is fixing) the assertion would fail. It might be worth guarding with `assumeTrue(manifestVersion != null)` or just asserting `assertNotNull` only, leaving a comment that the pom.properties path is tested implicitly by the non-null check.
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -112,7 +113,7 @@
*/
public class HoodieAvroUtils {
- public static final String AVRO_VERSION = Schema.class.getPackage().getImplementationVersion();
+ public static final String AVRO_VERSION = resolveAvroVersion();
Review Comment:
๐ค The PR description does already state a backport is intended ("Will backport this to release-1.2 branch as well"), so that part looks covered โ though it'd be worth @Rajeev-01 confirming the exact target (release-1.2.0, which is where you verified the pre-rename `org.apache.hudi.avro.HoodieAvroUtils` defect) so the reporter on 1.2.x actually gets the fix.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5269808354
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5278608454
Thanks @voonhous for reviewing this PR. I have addressed all the comments. PTAL if it looks good. Thanks.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774780644
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
Ohh forgot to push the log you asked ๐
. Added now.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous merged PR #19596:
URL: https://github.com/apache/hudi/pull/19596
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5268045358
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 1b591d449cbf3ff5ce99bcf0b70aea77a01ac911 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246)
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-agent (via GitHub)" <gi...@apache.org>.
hudi-agent commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774218981
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +129,49 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);
+
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter comes from whatever manifest happens to
+ * seal the package, which is only avro's own manifest when avro ships as a standalone jar. But once
+ * its classes get merged or relocated into a shaded/fat jar, that lookup silently returns the
+ * assembling jar's version instead of avro's or nothing at all. So better to resolve with pom.properties
+ * followed by manifest version.
+ */
+ private static String resolveAvroVersion() {
+ final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try {
+ URL schemaClassUrl = Schema.class.getResource("Schema.class");
+ String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
+ Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
+ while (candidates.hasMoreElements()) {
+ URL candidate = candidates.nextElement();
+ // only use the pom.properties that ships in the same archive as the loaded Schema class
+ if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
+ continue;
+ }
+ Properties avroProperties = new Properties();
+ try (InputStream in = candidate.openStream()) {
+ avroProperties.load(in);
+ }
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception e) {
+ LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
Review Comment:
๐ค `LOG` (line 132) is declared after `AVRO_VERSION` (line 120), and static fields initialize in textual order โ so `AVRO_VERSION = resolveAvroVersion()` runs while `LOG` is still null. If the try block throws (e.g. `getResources`/`openStream` IOException), this `LOG.warn(...)` would NPE inside the catch and surface as an `ExceptionInInitializerError` โ arguably worse than the original NPE this PR is fixing. Could you move the `LOG` declaration above `AVRO_VERSION`?
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +129,49 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);
+
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter comes from whatever manifest happens to
+ * seal the package, which is only avro's own manifest when avro ships as a standalone jar. But once
+ * its classes get merged or relocated into a shaded/fat jar, that lookup silently returns the
+ * assembling jar's version instead of avro's or nothing at all. So better to resolve with pom.properties
+ * followed by manifest version.
+ */
+ private static String resolveAvroVersion() {
+ final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try {
+ URL schemaClassUrl = Schema.class.getResource("Schema.class");
+ String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
+ Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
+ while (candidates.hasMoreElements()) {
+ URL candidate = candidates.nextElement();
+ // only use the pom.properties that ships in the same archive as the loaded Schema class
+ if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
+ continue;
+ }
+ Properties avroProperties = new Properties();
+ try (InputStream in = candidate.openStream()) {
+ avroProperties.load(in);
+ }
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception e) {
+ LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
+ }
+ return Schema.class.getPackage() == null ? null : Schema.class.getPackage().getImplementationVersion();
+ }
+
+ private static String archiveOf(URL url) {
+ String s = url.toString();
Review Comment:
๐ค nit: `bang` is familiar in shell/Unix circles but might read as jargon to Java developers who haven't seen `!` called that before. Could you rename it to `separatorIdx` or `jarSeparatorIdx` to make it self-evident without needing the mental translation?
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279639779
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
}, {
"hash" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"triggerType" : "PUSH"
}, {
"hash" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
* a2746d3ae659e381262e7069d7f2b06da67cf822 UNKNOWN
* 79021dc37087f2b08da7073cccab89be1c3e1eca UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774139038
##########
hudi-hadoop-common/src/main/java/org/apache/parquet/avro/AvroSchemaConverterWithTimestampNTZ.java:
##########
@@ -669,15 +669,11 @@ private static String appendPath(String path, String fieldName) {
/* Avro <= 1.9 does not support conversions to LocalTimestamp{Micros, Millis} classes */
private static boolean avroVersionSupportsLocalTimestampTypes() {
- final String avroVersion = getRuntimeAvroVersion();
+ final String avroVersion = HoodieAvroUtils.AVRO_VERSION;
return avroVersion == null
|| !(avroVersion.startsWith("1.7.")
|| avroVersion.startsWith("1.8.")
|| avroVersion.startsWith("1.9."));
}
Review Comment:
Removed these changes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5267978761
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 1b591d449cbf3ff5ce99bcf0b70aea77a01ac911 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-agent (via GitHub)" <gi...@apache.org>.
hudi-agent commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3769135060
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
Review Comment:
๐ค nit: silently swallowing the exception makes it hard to diagnose a misconfigured classpath in the future โ could you at least log at DEBUG/WARN level (e.g. `LOG.warn("Failed to read avro pom.properties, falling back to manifest version", e)`) rather than fully ignoring it?
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
๐ค The fallback still returns `Schema.class.getPackage().getImplementationVersion()`, which is exactly the value that came back `null` in the reported crash. If `pom.properties` is also missing (e.g. a bundle that strips `META-INF/maven/**`), `AVRO_VERSION` stays null and `StringUtils.compareVersions(null, ...)` in `gteqAvro1_12()`/`gteqAvro1_9()` will still NPE. Would it be worth guarding the null case here (or in the `gteqAvro*` helpers) so the NPE is eliminated in all paths rather than just the common one?
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773768843
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Thanks for confirming the behavior by reproducing when multiple shaded jars. I think it's better to go with your proposed approach of enumerating all available ones and pick the correct one.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774676691
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Correction to what I suggested above: rather than moving the field, please use lombok's `@Slf4j`. It fixes the same ordering problem and is what the rest of the module does.
We have lombok in the build now (`hudi-common/pom.xml:129`, provided scope), and `@Slf4j` is the established idiom: 704 files repo-wide, and within `hudi-common/src/main` it is 106 `@Slf4j` classes against 10 hand-rolled loggers, none of them recent.
It also removes the hazard by construction rather than by placement. Lombok injects the generated field at the top of the class body, so it is assigned first in `<clinit>`. Compiled against lombok 1.18.36 (our pinned version) on JDK 11:
```
static {};
0: ldc // class OrderProbe
2: invokestatic // LoggerFactory.getLogger
5: putstatic // Field log <- logger assigned first
8: invokestatic // resolveAvroVersion
11: putstatic // Field AVRO_VERSION
```
The hand-written field keeps working only until someone adds another static field above it; lombok re-derives the position on every compile.
Concretely:
- drop the two `org.slf4j.Logger` / `org.slf4j.LoggerFactory` imports at lines 67-68
- add `import lombok.extern.slf4j.Slf4j;` at line 41, at the top of the third-party group -- `lombok` sorts before `org.apache` under the `org.apache.hudi,*,javax,java,scala` order in `style/checkstyle.xml:294`
- annotate the class with `@Slf4j` and delete the `LOG` field at line 132
- use `log.warn(...)` at line 164 and for the warn-on-null case on the other thread
The lowercase `log` is fine despite the `ConstantName` check at `style/checkstyle.xml:307`, since generated fields never appear in the source that checkstyle parses.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774618510
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Thanks, the anchoring is what I had in mind and the `separatorIdx` rename reads better than my `bang`.
One ordering problem in what landed, though. `LOG` is declared at `HoodieAvroUtils.java:132`, below `AVRO_VERSION` at `:120`. Static initializers run in textual order, so `LOG` is still null while `resolveAvroVersion()` executes in `<clinit>`. If anything in the try block throws (IOException out of `getResources`/`openStream`, or `IllegalArgumentException` out of `Properties.load` on a malformed entry), the catch's `LOG.warn(...)` NPEs and that propagates out of the class initializer as `ExceptionInInitializerError`, followed by a permanent `NoClassDefFoundError` for the rest of the JVM's life.
That is the exact failure mode I described on the other thread, and it triggers on the broken-classpath path this PR exists to handle. My suggested snippet did not say where to put the field, so this one is on me.
Please move the declaration above `AVRO_VERSION`:
```java
public class HoodieAvroUtils {
private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);
public static final String AVRO_VERSION = resolveAvroVersion();
```
hudi-agent flagged the same thing at line 164, so that comment can be closed by the same change.
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
The guards on `gteqAvro1_9()` / `gteqAvro1_10()` / `gteqAvro1_12()` are what I was after, thanks.
The other half of that ask is still open: `resolveAvroVersion()` returns null silently when both sources miss. Only the exception path logs today, and the `return Schema.class.getPackage() == null ? null : ...` line at the bottom hands back null with nothing written anywhere. Combined with the new guards, an unresolvable version now degrades quietly to pre-1.9 behaviour, which is a better outcome than the NPE but leaves no trace naming avro or the classpath, so nobody can diagnose it from a log.
Please warn once at resolution time:
```java
} catch (Exception e) {
LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
}
String manifestVersion = Schema.class.getPackage() == null
? null : Schema.class.getPackage().getImplementationVersion();
if (manifestVersion == null) {
LOG.warn("Could not resolve the avro version from {} nor from the jar manifest; "
+ "avro version checks will fall back to pre-1.9 behaviour. Check that avro is on the classpath.", path);
}
return manifestVersion;
```
Note this needs the `LOG` declaration moved above `AVRO_VERSION` to work at all, see the other thread.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774702384
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +129,49 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);
+
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter comes from whatever manifest happens to
+ * seal the package, which is only avro's own manifest when avro ships as a standalone jar. But once
+ * its classes get merged or relocated into a shaded/fat jar, that lookup silently returns the
+ * assembling jar's version instead of avro's or nothing at all. So better to resolve with pom.properties
+ * followed by manifest version.
+ */
+ private static String resolveAvroVersion() {
+ final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try {
+ URL schemaClassUrl = Schema.class.getResource("Schema.class");
+ String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
+ Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
+ while (candidates.hasMoreElements()) {
+ URL candidate = candidates.nextElement();
+ // only use the pom.properties that ships in the same archive as the loaded Schema class
+ if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
+ continue;
+ }
+ Properties avroProperties = new Properties();
+ try (InputStream in = candidate.openStream()) {
+ avroProperties.load(in);
+ }
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception e) {
+ LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
+ }
+ return Schema.class.getPackage() == null ? null : Schema.class.getPackage().getImplementationVersion();
+ }
+
+ private static String archiveOf(URL url) {
+ String s = url.toString();
Review Comment:
done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774746661
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +129,49 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);
+
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter comes from whatever manifest happens to
+ * seal the package, which is only avro's own manifest when avro ships as a standalone jar. But once
+ * its classes get merged or relocated into a shaded/fat jar, that lookup silently returns the
+ * assembling jar's version instead of avro's or nothing at all. So better to resolve with pom.properties
+ * followed by manifest version.
+ */
+ private static String resolveAvroVersion() {
+ final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try {
+ URL schemaClassUrl = Schema.class.getResource("Schema.class");
+ String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
+ Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
+ while (candidates.hasMoreElements()) {
+ URL candidate = candidates.nextElement();
+ // only use the pom.properties that ships in the same archive as the loaded Schema class
+ if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
+ continue;
+ }
+ Properties avroProperties = new Properties();
+ try (InputStream in = candidate.openStream()) {
+ avroProperties.load(in);
+ }
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception e) {
+ LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
Review Comment:
Removed the Logger and using lombok for logging
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774743920
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Ohh okay if we already migrated to use lombok, then better to use it for logging. Thanks updated the PR
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5268599069
## [Codecov](https://app.codecov.io/gh/apache/hudi/pull/19596?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `53.84615%` with `6 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 77.48%. Comparing base ([`3ba31dd`](https://app.codecov.io/gh/apache/hudi/commit/3ba31dd37fffa5521c8100d5e8f4617af5596048?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`526b243`](https://app.codecov.io/gh/apache/hudi/commit/526b24309d258fd9dd61b31e03acfd7bc83ccf79?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
:warning: Report is 1 commits behind head on master.
| [Files with missing lines](https://app.codecov.io/gh/apache/hudi/pull/19596?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...a/org/apache/hudi/common/avro/HoodieAvroUtils.java](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&filepath=hudi-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fhudi%2Fcommon%2Favro%2FHoodieAvroUtils.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aHVkaS1jb21tb24vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2h1ZGkvY29tbW9uL2F2cm8vSG9vZGllQXZyb1V0aWxzLmphdmE=) | 58.33% | [2 Missing and 3 partials :warning: ](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...quet/avro/AvroSchemaConverterWithTimestampNTZ.java](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&filepath=hudi-hadoop-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fparquet%2Favro%2FAvroSchemaConverterWithTimestampNTZ.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aHVkaS1oYWRvb3AtY29tbW9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9wYXJxdWV0L2F2cm8vQXZyb1NjaGVtYUNvbnZlcnRlcldpdGhUaW1lc3RhbXBOVFouamF2YQ==) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## master #19596 +/- ##
============================================
- Coverage 77.49% 77.48% -0.01%
+ Complexity 32799 32797 -2
============================================
Files 2522 2522
Lines 139179 139189 +10
Branches 16734 16737 +3
============================================
+ Hits 107855 107857 +2
- Misses 23748 23752 +4
- Partials 7576 7580 +4
```
| [Components](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=components&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage ฮ | |
|---|---|---|
| [hudi-common](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `83.25% <58.33%> (-0.02%)` | :arrow_down: |
| [hudi-client](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `82.70% <รธ> (รธ)` | |
| [hudi-flink](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `85.74% <รธ> (รธ)` | |
| [hudi-spark-datasource](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `70.60% <รธ> (รธ)` | |
| [hudi-utilities](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `73.64% <รธ> (รธ)` | |
| [hudi-cli](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `15.32% <รธ> (รธ)` | |
| [hudi-hadoop](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `68.93% <0.00%> (-0.02%)` | :arrow_down: |
| [hudi-sync](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `75.11% <รธ> (รธ)` | |
| [hudi-io](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `79.47% <รธ> (รธ)` | |
| [hudi-timeline-service](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `83.44% <รธ> (รธ)` | |
| [hudi-cloud](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `64.06% <รธ> (รธ)` | |
| [hudi-kafka-connect](https://app.codecov.io/gh/apache/hudi/pull/19596/components?src=pr&el=component&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `53.20% <รธ> (รธ)` | |
| [Flag](https://app.codecov.io/gh/apache/hudi/pull/19596/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage ฮ | |
|---|---|---|
| [hadoop-mr-java-client](https://app.codecov.io/gh/apache/hudi/pull/19596/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `43.84% <53.84%> (+<0.01%)` | :arrow_up: |
Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more.
| [Files with missing lines](https://app.codecov.io/gh/apache/hudi/pull/19596?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage ฮ | |
|---|---|---|
| [...quet/avro/AvroSchemaConverterWithTimestampNTZ.java](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&filepath=hudi-hadoop-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fparquet%2Favro%2FAvroSchemaConverterWithTimestampNTZ.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aHVkaS1oYWRvb3AtY29tbW9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9wYXJxdWV0L2F2cm8vQXZyb1NjaGVtYUNvbnZlcnRlcldpdGhUaW1lc3RhbXBOVFouamF2YQ==) | `76.01% <0.00%> (-0.46%)` | :arrow_down: |
| [...a/org/apache/hudi/common/avro/HoodieAvroUtils.java](https://app.codecov.io/gh/apache/hudi/pull/19596?src=pr&el=tree&filepath=hudi-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fhudi%2Fcommon%2Favro%2FHoodieAvroUtils.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aHVkaS1jb21tb24vc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2h1ZGkvY29tbW9uL2F2cm8vSG9vZGllQXZyb1V0aWxzLmphdmE=) | `78.34% <58.33%> (-0.46%)` | :arrow_down: |
... and [1 file with indirect coverage changes](https://app.codecov.io/gh/apache/hudi/pull/19596/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)
</details>
<details><summary> :rocket: New features to boost your workflow: </summary>
- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5280843087
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
}, {
"hash" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"triggerType" : "PUSH"
}, {
"hash" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"triggerType" : "PUSH"
}, {
"hash" : "84dcefb78e672129be9904f6155cf1027a29872d",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16274",
"triggerID" : "84dcefb78e672129be9904f6155cf1027a29872d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
* a2746d3ae659e381262e7069d7f2b06da67cf822 UNKNOWN
* 79021dc37087f2b08da7073cccab89be1c3e1eca UNKNOWN
* 84dcefb78e672129be9904f6155cf1027a29872d Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16274)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773062069
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
Review Comment:
Ack. will update the java doc and update the risk level as well.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279575155
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
}, {
"hash" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
* a2746d3ae659e381262e7069d7f2b06da67cf822 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279693562
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
}, {
"hash" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"triggerType" : "PUSH"
}, {
"hash" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"triggerType" : "PUSH"
}, {
"hash" : "84dcefb78e672129be9904f6155cf1027a29872d",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "84dcefb78e672129be9904f6155cf1027a29872d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
* a2746d3ae659e381262e7069d7f2b06da67cf822 UNKNOWN
* 79021dc37087f2b08da7073cccab89be1c3e1eca UNKNOWN
* 84dcefb78e672129be9904f6155cf1027a29872d UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773742219
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
Strongly agree with `not just a narrower NPE - it poisons a static initializer.`
I'm thinking better to go with adding NULL guard in those helpers
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773046554
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -112,7 +113,7 @@
*/
public class HoodieAvroUtils {
- public static final String AVRO_VERSION = Schema.class.getPackage().getImplementationVersion();
+ public static final String AVRO_VERSION = resolveAvroVersion();
Review Comment:
Yeah backport is planned. Will add in description as once landed in master will backport it to `release-1.2` branch as well
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5278419199
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249)
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5278480363
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249)
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5278593541
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "SUCCESS",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "PENDING",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249)
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774140931
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
Review Comment:
Done added
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279898098
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
}, {
"hash" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "a2746d3ae659e381262e7069d7f2b06da67cf822",
"triggerType" : "PUSH"
}, {
"hash" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "79021dc37087f2b08da7073cccab89be1c3e1eca",
"triggerType" : "PUSH"
}, {
"hash" : "84dcefb78e672129be9904f6155cf1027a29872d",
"status" : "PENDING",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16274",
"triggerID" : "84dcefb78e672129be9904f6155cf1027a29872d",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
* a2746d3ae659e381262e7069d7f2b06da67cf822 UNKNOWN
* 79021dc37087f2b08da7073cccab89be1c3e1eca UNKNOWN
* 84dcefb78e672129be9904f6155cf1027a29872d Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16274)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5268577046
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 1b591d449cbf3ff5ce99bcf0b70aea77a01ac911 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246)
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-agent (via GitHub)" <gi...@apache.org>.
hudi-agent commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3767153484
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
Review Comment:
๐ค nit: could you make `resolveAvroVersion()` `private`? It's only used to initialise `AVRO_VERSION`, so exposing it as `public` widens the API surface unnecessarily โ callers should read the constant, not invoke the resolver directly.
<sub><i>โ ๏ธ AI-generated; verify before applying. React ๐/๐ to flag quality.</i></sub>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5268717847
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "PENDING",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 1b591d449cbf3ff5ce99bcf0b70aea77a01ac911 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246)
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* 526b24309d258fd9dd61b31e03acfd7bc83ccf79 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3772678100
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
Without knowing the version we can't choose the if we need to apply schema changes. Better to keep it as is which helps us to know if we didn't able to find out the correct version
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3772927936
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
+ if (inputStream != null) {
+ Properties avroProperties = new Properties();
+ avroProperties.load(inputStream);
+ String version = avroProperties.getProperty("version");
+ if (version != null) {
+ return version;
+ }
+ }
+ } catch (Exception ignored) {
+ // Ignoring the exception and falling back to the manifest-based version below
+ }
+ return Schema.class.getPackage().getImplementationVersion();
Review Comment:
Following up on this thread with more evidence, because the residual null is not just a narrower NPE - it poisons a static initializer.
The consumer named in the reporter's stack trace is `HoodieSchemaUtils.java:66`:
```java
public static final HoodieSchema RECORD_KEY_SCHEMA = initRecordKeySchema();
```
So a null `AVRO_VERSION` gives `ExceptionInInitializerError` on first touch and then a permanent `NoClassDefFoundError: Could not initialize class HoodieSchemaUtils` for the rest of the JVM's life, with the real cause visible only in the very first stack trace. That is the same failure mode `2092890af292` ("fix: ProtoConversionUtil$AvroSupport static init under Avro 1.12", #18571) was written to fix in this module.
@Rajeev-01 your point about needing to know when the version could not be resolved is fair, and the ask is not to hide it - it is to fail in a way that names the problem. The repo already has both idioms: `HoodieSchema.java:1069-1071` guards `pkg != null` and returns `"unknown"`, and `HoodieVersion.get()` falls back to a default.
Concretely, pick one of:
- null-guard the three helpers, e.g. `return AVRO_VERSION != null && StringUtils.compareVersions(AVRO_VERSION, "1.12") >= 0;`, and log a warning once at resolution time; or
- have `resolveAvroVersion()` throw explicitly when both sources miss, with a message naming avro and the classpath.
Either is better than the current outcome, which surfaces as a `ComparableVersion` NPE that mentions neither avro nor the classpath.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3772923046
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Blocker: this lookup is not anchored to the jar that actually defines `Schema`, so it can report the version of an Avro that is not the one executing.
`ClassLoader.getResourceAsStream` returns the first hit in classpath/delegation order. maven-shade relocates the Avro *classes* but leaves `META-INF/maven/org.apache.avro/avro/pom.properties` at the original coordinate, so a different jar can answer the query. Checked against the built bundles: `hudi-hadoop-mr-bundle`, `hudi-presto-bundle`, `hudi-trino-bundle`, `hudi-flink1.20-bundle` and `hudi-timeline-server-bundle` each contain `org/apache/hudi/org/apache/avro/Schema.class` plus an unrelocated `META-INF/maven/org.apache.avro/avro/pom.properties`.
Reproduced on the standard Hive layout (hive-exec on the parent loader, hudi-hadoop-mr-bundle on a child loader, which is what `ADD JAR` / `hive.aux.jars.path` produce):
```
loaded class : org.apache.hudi.org.apache.avro.Schema
codeSource (jar) : hudi-hadoop-mr-bundle-1.3.0-SNAPSHOT.jar <- avro 1.11.4 is what executes
OLD implVersion : 1.3.0-SNAPSHOT
NEW resolved ver : 1.8.2
resource URL won : jar:file:.../hive-exec-3.1.3.jar!/META-INF/maven/org.apache.avro/avro/pom.properties
```
`hive-exec` 3.1.3 and 2.3.10 both ship that resource with `version=1.8.2`. This is not an exotic classpath. Other jars that ship that exact resource while shipping no `org/apache/avro/Schema.class` at all: `hadoop-client-runtime` 3.4.2 and 3.4.3 (claims 1.11.4, classes relocated under `org/apache/hadoop/shaded/`), `pulsar-spark-connector_2.12` (1.8.2) and `_2.13` (1.10.2) which is a `provided` dependency of hudi-utilities, `pulsar-client-*`, and `iceberg-flink-runtime-1.19-1.6.1`.
Please bind the lookup to the archive that defines `Schema` before falling back:
```java
private static String resolveAvroVersion() {
final String path = "META-INF/maven/org.apache.avro/avro/pom.properties";
try {
URL schemaClassUrl = Schema.class.getResource("Schema.class");
String schemaArchive = schemaClassUrl == null ? null : archiveOf(schemaClassUrl);
Enumeration<URL> candidates = Schema.class.getClassLoader().getResources(path);
while (candidates.hasMoreElements()) {
URL candidate = candidates.nextElement();
// only trust a pom.properties that ships in the same archive as the loaded Schema class
if (schemaArchive != null && !schemaArchive.equals(archiveOf(candidate))) {
continue;
}
Properties avroProperties = new Properties();
try (InputStream in = candidate.openStream()) {
avroProperties.load(in);
}
String version = avroProperties.getProperty("version");
if (version != null) {
return version;
}
}
} catch (Exception e) {
LOG.warn("Failed to resolve the avro version from {}, falling back to the jar manifest", path, e);
}
return Schema.class.getPackage() == null ? null : Schema.class.getPackage().getImplementationVersion();
}
private static String archiveOf(URL url) {
String s = url.toString();
int bang = s.indexOf("!/");
return bang < 0 ? s : s.substring(0, bang);
}
```
This needs imports for `java.net.URL` and `java.util.Enumeration`, and a `private static final Logger LOG = LoggerFactory.getLogger(HoodieAvroUtils.class);` field since `HoodieAvroUtils` has no logger today. The `LOG.warn` also covers the swallowed-exception point raised earlier in this review.
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
Review Comment:
The premise in this javadoc is not correct, and fixing it matters because the real defect is worse than the one described.
The manifest entry is not "dropped" when avro is merged into a fat jar. `URLClassLoader.definePackage` falls back to the uber jar's main manifest attributes, so the avro package inherits the *assembling* jar's version. Checked against the built bundles:
```
$ unzip -p hudi-hive-sync-bundle-1.3.0-SNAPSHOT.jar META-INF/MANIFEST.MF | grep Implementation-Version
Implementation-Version: 1.3.0-SNAPSHOT
$ unzip -p hudi-hive-sync-bundle-1.3.0-SNAPSHOT.jar META-INF/maven/org.apache.avro/avro/pom.properties
version=1.12.1
```
So `AVRO_VERSION` is `"1.3.0-SNAPSHOT"` in that bundle today, and `gteqAvro1_12()` returns false while the bundle ships avro 1.12.1. That is a real pre-existing bug that this PR fixes, and it is a stronger motivation than the null NPE. Same shape in hudi-presto-bundle, hudi-trino-bundle and hudi-timeline-server-bundle (all avro 1.12.1), and in hudi-hadoop-mr-bundle and hudi-flink1.20-bundle (avro 1.11.4).
Two asks:
1. Reword the javadoc along the lines of "the manifest belongs to the assembling jar, so once avro is merged or relocated it reports that jar's version rather than avro's, or none at all".
2. `gteqAvro1_12()` flips false -> true in the hive-sync / presto / trino / timeline-server bundles, which changes `convertDefaultValueForAvroCompatibility` behaviour in shipped artifacts. Please update "Risk Level: low" in the PR description to say so, and run bundle validation on at least one avro-merging bundle before merge.
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -112,7 +113,7 @@
*/
public class HoodieAvroUtils {
- public static final String AVRO_VERSION = Schema.class.getPackage().getImplementationVersion();
+ public static final String AVRO_VERSION = resolveAvroVersion();
Review Comment:
Backport ask: the reporter on #19595 is on 1.2.x, and their stack trace shows the pre-rename `org.apache.hudi.avro.HoodieAvroUtils` package. The defect is present unchanged on the release branch:
```
$ git show release-1.2.0:hudi-common/src/main/java/org/apache/hudi/avro/HoodieAvroUtils.java | grep -n 'AVRO_VERSION = '
109: public static final String AVRO_VERSION = Schema.class.getPackage().getImplementationVersion();
```
(verified against both `refs/heads/release-1.2.0` at `f05c83f2b977` and the `release-1.2.0` tag)
A master-only fix lands nothing for the reporter. Please confirm whether a `release-1.2.0` backport is planned and note it in the PR description either way.
##########
hudi-hadoop-common/src/main/java/org/apache/parquet/avro/AvroSchemaConverterWithTimestampNTZ.java:
##########
@@ -669,15 +669,11 @@ private static String appendPath(String path, String fieldName) {
/* Avro <= 1.9 does not support conversions to LocalTimestamp{Micros, Millis} classes */
private static boolean avroVersionSupportsLocalTimestampTypes() {
- final String avroVersion = getRuntimeAvroVersion();
+ final String avroVersion = HoodieAvroUtils.AVRO_VERSION;
return avroVersion == null
|| !(avroVersion.startsWith("1.7.")
|| avroVersion.startsWith("1.8.")
|| avroVersion.startsWith("1.9."));
}
Review Comment:
This one-line refactor is what turns the classloader issue in the other comment into a data-semantics bug, and it is not needed to fix the NPE.
Before this PR, `AVRO_VERSION` had exactly one production consumer: `gteqAvro1_12()` feeding `convertDefaultValueForAvroCompatibility` (`HoodieAvroUtils.java:1570`). `gteqAvro1_9()` and `gteqAvro1_10()` are public but have no non-test callers. This change adds a second consumer, and it is the timestamp one.
In the Hive reproduction from the other comment:
```
avroVersionSupportsLocalTimestampTypes() [OLD, via Schema.Parser manifest] = true
avroVersionSupportsLocalTimestampTypes() [NEW, via AVRO_VERSION] = false
```
The old local probe returned the bundle's own `1.3.0-SNAPSHOT`, which is garbage but happens to satisfy the `!startsWith("1.7."/"1.8."/"1.9.")` predicate. Routing through `AVRO_VERSION` yields `1.8.2` and flips it. At line 574 that sends a parquet `TIMESTAMP(isAdjustedToUTC=false)` column down the `createTimestampMillis()`/`createTimestampMicros()` branch instead of `createLocalTimestampMillis()`/`Micros()`, i.e. a TIMESTAMP_NTZ column silently reads back as a UTC-adjusted instant. The path is live in that bundle: `HoodieAvroParquetReader` -> `HoodieAvroParquetSchemaConverter` -> this class, all three present in `hudi-hadoop-mr-bundle-1.3.0-SNAPSHOT.jar`.
The PR describes this change as "to keep the consistent behavior", so it is a pure refactor carrying all of the risk and none of the fix. Please drop it from this PR and keep the local probe:
```suggestion
private static boolean avroVersionSupportsLocalTimestampTypes() {
final String avroVersion = getRuntimeAvroVersion();
return avroVersion == null
|| !(avroVersion.startsWith("1.7.")
|| avroVersion.startsWith("1.8.")
|| avroVersion.startsWith("1.9."));
}
private static String getRuntimeAvroVersion() {
return Schema.Parser.class.getPackage().getImplementationVersion();
}
```
(the `org.apache.avro.Schema` import and the `HoodieAvroUtils` import need reverting too)
If you do want to dedupe the two probes in a follow-up, use a feature check rather than a version check - it is classloader-consistent by construction and immune to the whole problem:
```java
private static boolean avroVersionSupportsLocalTimestampTypes() {
try {
LogicalTypes.localTimestampMillis(); // added in avro 1.10, absent in 1.7 - 1.9
return true;
} catch (NoSuchMethodError e) {
return false;
}
}
```
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
Review Comment:
No test covers the new resolver, and CI cannot catch a regression here as things stand. `avro.version` is pinned to 1.11.4 in every profile (`pom.xml:184`, plus the profile overrides at `:2660`, `:2723`, `:2770`), so the `1.7`/`1.8`/`1.9` branch of `avroVersionSupportsLocalTimestampTypes()` is never exercised, and `packaging/bundle-validation/` does not touch version resolution or timestamp-NTZ. Codecov reports 5 uncovered lines here for the same reason.
A cheap discriminating assertion needs no refactor: under surefire, avro is a plain jar carrying both the manifest and the pom.properties, so the two sources must agree. Please add to `hudi-common/src/test/java/org/apache/hudi/common/avro/TestHoodieAvroUtils.java`:
```java
@Test
void testAvroVersionMatchesLoadedAvroJar() {
assertNotNull(HoodieAvroUtils.AVRO_VERSION);
// the pom.properties lookup must agree with the jar that actually defines Schema
assertEquals(Schema.class.getPackage().getImplementationVersion(), HoodieAvroUtils.AVRO_VERSION);
}
```
That fails exactly when the resource lookup drifts from the loaded avro, which is the regression in the other comment.
If you also want the shaded-jar branch covered, there is an in-repo precedent for this exact pattern: `HoodieVersion` reads `META-INF/maven/org.apache.hudi/hudi-common/pom.properties` the same way (`hudi-common/src/main/java/org/apache/hudi/HoodieVersion.java:59`) and made itself testable with `setVersionOverride` at `:114`, used throughout `hudi-common/src/test/java/org/apache/hudi/TestHoodieVersion.java:29`. Worth following that here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773068854
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -112,7 +113,7 @@
*/
public class HoodieAvroUtils {
- public static final String AVRO_VERSION = Schema.class.getPackage().getImplementationVersion();
+ public static final String AVRO_VERSION = resolveAvroVersion();
Review Comment:
Cool, we are in the midst of planning a release for 1.2.1. I'll let you know if i need help backporting it if cherrypicking leads to strange conflicts which i am not familiar with. Thank you.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3773768843
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
+ */
+ private static String resolveAvroVersion() {
+ String avroPomPropertiesPath = "META-INF/maven/org.apache.avro/avro/pom.properties";
+ try (InputStream inputStream = Schema.class.getClassLoader().getResourceAsStream(avroPomPropertiesPath)) {
Review Comment:
Thanks for confirming the behavior by reproducing with multiple shaded jars. I think it's better to go with your proposed approach of enumerating all available ones and pick the correct one.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on code in PR #19596:
URL: https://github.com/apache/hudi/pull/19596#discussion_r3774136070
##########
hudi-common/src/main/java/org/apache/hudi/common/avro/HoodieAvroUtils.java:
##########
@@ -124,6 +125,29 @@ public class HoodieAvroUtils {
private static final Properties PROPERTIES = new Properties();
+ /**
+ * Resolves the Avro library version, preferring Maven's generated pom.properties over
+ * {@link Package#getImplementationVersion()}. The latter reads the jar manifest, which is
+ * present for a standalone avro-*.jar but is usually dropped for the avro package once its
+ * classes are merged into a shaded/fat jar.
Review Comment:
Updated
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch avro version from pom.properties to fix NPE [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5278928193
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279241323
<!--
Meta data
{
"version" : 1,
"metaDataEntries" : [ {
"hash" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16246",
"triggerID" : "1b591d449cbf3ff5ce99bcf0b70aea77a01ac911",
"triggerType" : "PUSH"
}, {
"hash" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "0c4ea5d15e366e4cb98cc776ab121ddb641520a9",
"triggerType" : "PUSH"
}, {
"hash" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"status" : "DELETED",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16249",
"triggerID" : "526b24309d258fd9dd61b31e03acfd7bc83ccf79",
"triggerType" : "PUSH"
}, {
"hash" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "c1428d3d727cfddebb5f474ef5c9738ebbcab1cb",
"triggerType" : "PUSH"
}, {
"hash" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"status" : "FAILURE",
"url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269",
"triggerID" : "f9b27380a96b12100990cd7f66d5756ecf5699c3",
"triggerType" : "PUSH"
}, {
"hash" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"status" : "UNKNOWN",
"url" : "TBD",
"triggerID" : "203b5b10b529991bd4ba8dea191ff0ff0fe635ab",
"triggerType" : "PUSH"
} ]
}-->
## CI report:
* 0c4ea5d15e366e4cb98cc776ab121ddb641520a9 UNKNOWN
* c1428d3d727cfddebb5f474ef5c9738ebbcab1cb UNKNOWN
* f9b27380a96b12100990cd7f66d5756ecf5699c3 Azure: [FAILURE](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=16269)
* 203b5b10b529991bd4ba8dea191ff0ff0fe635ab UNKNOWN
<details>
<summary>Bot commands</summary>
@hudi-bot supports the following commands:
- `@hudi-bot run azure` re-run the last Azure build
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279369731
@Rajeev-01 If possible, can you please address the unresolved nits too? Thank you.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(avro): fetch correct avro version from pom.properties for shade / fat jars [hudi]
Posted by "Rajeev-01 (via GitHub)" <gi...@apache.org>.
Rajeev-01 commented on PR #19596:
URL: https://github.com/apache/hudi/pull/19596#issuecomment-5279615708
> @Rajeev-01 If possible, can you please address the unresolved nits too? Thank you.
@voonhous addressed the unresolved nits as well. Thanks for mentioning
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org