You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gitbox@hive.apache.org by "deniskuzZ (via GitHub)" <gi...@apache.org> on 2026/07/07 09:38:34 UTC
[PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache - RuntimeException: Trying to allocate N; max is M [hive]
deniskuzZ opened a new pull request, #6584:
URL: https://github.com/apache/hive/pull/6584
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines: https://cwiki.apache.org/confluence/display/Hive/HowToContribute
2. Ensure that you have created an issue on the Hive project JIRA: https://issues.apache.org/jira/projects/HIVE/summary
3. Ensure you have added or run the appropriate tests for your PR:
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]HIVE-XXXXX: Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
6. Please write your PR title to summarize what this PR proposes.
7. If possible, provide a concise example to reproduce the issue for a faster review.
-->
### What changes were proposed in this pull request?
<!--
Please clarify what changes you are proposing. The purpose of this section is to outline the changes and how this PR fixes the issue.
If possible, please consider writing useful notes for better and faster reviews in your PR. See the examples below.
1. If you refactor some codes with changing classes, showing the class hierarchy will help reviewers.
2. If you fix some SQL features, you can provide some references of other DBMSes.
3. If there is design documentation, please add the link.
4. If there is a discussion in the mailing list, please add the link.
-->
### Why are the changes needed?
<!--
Please clarify why the changes are needed. For instance,
1. If you propose a new API, clarify the use case for a new API.
2. If you fix a bug, you can clarify why it is a bug.
-->
### Does this PR introduce _any_ user-facing change?
<!--
Note that it means *any* user-facing change including all aspects such as the documentation fix.
If yes, please clarify the previous behavior and the change this PR proposes - provide the console output, description, screenshot and/or a reproducable example to show the behavior difference if possible.
If possible, please also clarify if this is a user-facing change compared to the released Hive versions or within the unreleased branches such as master.
If no, write 'No'.
-->
### How was this patch tested?
<!--
If tests were added, say they were added here. Please make sure to add some test cases that check the changes thoroughly including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future.
If tests were not added, please describe why they were not added and/or why it was difficult to add.
-->
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3579169276
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ LlapMetadataBuffer<Object> smallBuffer = null;
+ boolean done = false;
+ try {
for (int i = 0; i < largeBuffers.length; ++i) {
readIntoCacheBuffer(stream, maxAlloc, largeBuffers[i]);
}
- }
- int smallSize = length % maxAlloc;
- if (smallSize == 0) {
- return new LlapMetadataBuffers(largeBuffers);
- } else {
- LlapMetadataBuffer<Object>[] smallBuffer = new LlapMetadataBuffer[1];
- smallBuffer[0] = new LlapMetadataBuffer(fileKey, tag);
- allocator.allocateMultiple(smallBuffer, length, null, isStopped);
- readIntoCacheBuffer(stream, smallSize, smallBuffer[0]);
- if (largeBuffers == null) {
- return smallBuffer[0]; // This is the overwhelmingly common case.
- } else {
- LlapMetadataBuffer<Object>[] cacheData = new LlapMetadataBuffer[largeBuffers.length + 1];
- System.arraycopy(largeBuffers, 0, cacheData, 0, largeBuffers.length);
- cacheData[largeBuffers.length] = smallBuffer[0];
- return new LlapMetadataBuffers<>(cacheData);
+ int smallSize = length % maxAlloc;
Review Comment:
i would prefer to keep the original naming so we stay consistent with other var names in particular largeBuffers
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ LlapMetadataBuffer<Object> smallBuffer = null;
Review Comment:
https://github.com/apache/hive/pull/6584#discussion_r3579169276
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3543748393
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
oh, haven't noticed your latest comment and decided to fix it 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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "Aggarwal-Raghav (via GitHub)" <gi...@apache.org>.
Aggarwal-Raghav commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3538474672
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
Question? If there are any exceptions like `IOException` or `AllocatorOutOfMemoryException` in `readIntoCacheBuffer()`/` allocateMultiple()` shouldn't there be a `finally` block to deallocate the previously allocated buffer memory?
In `readIntoCacheBuffer()` there is no finally block. In `allocateMultiple()` there is finally block but will deallocate the current buffer not previously allocated buffer.
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4970475535
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [15 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ merged PR #6584:
URL: https://github.com/apache/hive/pull/6584
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "Aggarwal-Raghav (via GitHub)" <gi...@apache.org>.
Aggarwal-Raghav commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3542947690
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
yeah, its outside the scope of current JIRA. If it's ok , can I pick it up as separate JIRA? Will come up with a UT for this?
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "abstractdog (via GitHub)" <gi...@apache.org>.
abstractdog commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3570796939
##########
llap-server/src/test/org/apache/hadoop/hive/llap/cache/TestMetadataCache.java:
##########
@@ -185,6 +185,104 @@ public void testBuffers() throws Exception {
assertFalse(b0.incRef() > 0); // Should have also been thrown out.
}
+ /**
+ * A footer of exactly maxAlloc: the split condition used a strict {@code <}, so no buffer was
+ * allocated and the InputStream put path returned an empty wrapper (NPE on lock).
+ */
+ @Test
+ public void testStreamFooterEqualToMaxAlloc() throws Exception {
+ verifyFooterFromStream(newMetadataCache(), MAX_ALLOC, true);
+ }
+
+ /**
+ * A footer larger than maxAlloc is split into a multi-buffer wrapper: an exact multiple of maxAlloc
+ * (only full chunks) and a multiple plus a remainder (full chunks + a smaller last chunk). The
+ * remainder buffer used to be allocated with the full footer length, exceeding the max allocation.
+ */
+ @Test
+ public void testStreamFooterLargerThanMaxAlloc() throws Exception {
+ MetadataCache cache = newMetadataCache();
+ verifyFooterFromStream(cache, 2 * MAX_ALLOC, false);
+ verifyFooterFromStream(cache, 2 * MAX_ALLOC + 3, false);
+ }
+
+ /**
+ * If reading the footer stream fails after some buffers were already allocated, every allocated
+ * buffer must be released back to the allocator. Otherwise the long-lived LLAP daemon leaks arena
+ * memory on every failed footer read (a truncated file, an IO error, or an oversized chunk).
+ */
+ @Test
+ public void testStreamFooterReadFailureReleasesBuffers() {
+ assertFooterReadFailureReleasesBuffers(MAX_ALLOC); // single-buffer path
+ assertFooterReadFailureReleasesBuffers(2 * MAX_ALLOC); // multi-buffer, exact multiple
+ assertFooterReadFailureReleasesBuffers(2 * MAX_ALLOC + 3); // multi-buffer, with remainder
+ }
+
+ private void assertFooterReadFailureReleasesBuffers(int length) {
+ final int arenaSize = 4096;
+ DummyMemoryManager mm = new DummyMemoryManager();
+ LlapDaemonCacheMetrics metrics = LlapDaemonCacheMetrics.create("", "");
+ BuddyAllocator alloc = new BuddyAllocator(
+ false, false, 8, MAX_ALLOC, 1, arenaSize, 0, null, mm, metrics, null, true);
+ MetadataCache cache = new MetadataCache(alloc, mm, new DummyCachePolicy(), true, metrics);
+
+ Object fileKey = new Object();
+ // One byte short of the footer, so reading the last chunk hits EOF part-way through.
+ ByteArrayInputStream truncated = new ByteArrayInputStream(new byte[length - 1]);
+ try {
+ cache.putFileMetadata(fileKey, length, truncated, null, null);
+ fail("Expected an EOFException for a truncated footer stream of length " + length);
+ } catch (IOException expected) {
+ // expected
Review Comment:
assert the exact EOF here that we're expecting
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ LlapMetadataBuffer<Object> smallBuffer = null;
Review Comment:
`remainderBuffer` to clarify what is "small" for
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
Review Comment:
nit, maybe add a line break here: next line (`smallBuffer = null`) is about to handle a different thing
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ LlapMetadataBuffer<Object> smallBuffer = null;
+ boolean done = false;
+ try {
for (int i = 0; i < largeBuffers.length; ++i) {
readIntoCacheBuffer(stream, maxAlloc, largeBuffers[i]);
}
- }
- int smallSize = length % maxAlloc;
- if (smallSize == 0) {
- return new LlapMetadataBuffers(largeBuffers);
- } else {
- LlapMetadataBuffer<Object>[] smallBuffer = new LlapMetadataBuffer[1];
- smallBuffer[0] = new LlapMetadataBuffer(fileKey, tag);
- allocator.allocateMultiple(smallBuffer, length, null, isStopped);
- readIntoCacheBuffer(stream, smallSize, smallBuffer[0]);
- if (largeBuffers == null) {
- return smallBuffer[0]; // This is the overwhelmingly common case.
- } else {
- LlapMetadataBuffer<Object>[] cacheData = new LlapMetadataBuffer[largeBuffers.length + 1];
- System.arraycopy(largeBuffers, 0, cacheData, 0, largeBuffers.length);
- cacheData[largeBuffers.length] = smallBuffer[0];
- return new LlapMetadataBuffers<>(cacheData);
+ int smallSize = length % maxAlloc;
Review Comment:
I believe this is rather "remainderSize" for clarity
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "Aggarwal-Raghav (via GitHub)" <gi...@apache.org>.
Aggarwal-Raghav commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4914700067
LGTM +1
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4905630624
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [15 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4980315999
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [15 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "Aggarwal-Raghav (via GitHub)" <gi...@apache.org>.
Aggarwal-Raghav commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3543810739
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
No worries, resolution of issue is important.
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3542236986
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
need to check, but that's seems to be a diff issue
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3543748393
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,39 +257,43 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Review Comment:
oh, haven't noticed your latest comment and decided to fix it here: 3bf78175de8f83c6d9f255ae4ffda546a04273a7
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4915865280
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [15 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3579153081
##########
llap-server/src/test/org/apache/hadoop/hive/llap/cache/TestMetadataCache.java:
##########
@@ -185,6 +185,104 @@ public void testBuffers() throws Exception {
assertFalse(b0.incRef() > 0); // Should have also been thrown out.
}
+ /**
+ * A footer of exactly maxAlloc: the split condition used a strict {@code <}, so no buffer was
+ * allocated and the InputStream put path returned an empty wrapper (NPE on lock).
+ */
+ @Test
+ public void testStreamFooterEqualToMaxAlloc() throws Exception {
+ verifyFooterFromStream(newMetadataCache(), MAX_ALLOC, true);
+ }
+
+ /**
+ * A footer larger than maxAlloc is split into a multi-buffer wrapper: an exact multiple of maxAlloc
+ * (only full chunks) and a multiple plus a remainder (full chunks + a smaller last chunk). The
+ * remainder buffer used to be allocated with the full footer length, exceeding the max allocation.
+ */
+ @Test
+ public void testStreamFooterLargerThanMaxAlloc() throws Exception {
+ MetadataCache cache = newMetadataCache();
+ verifyFooterFromStream(cache, 2 * MAX_ALLOC, false);
+ verifyFooterFromStream(cache, 2 * MAX_ALLOC + 3, false);
+ }
+
+ /**
+ * If reading the footer stream fails after some buffers were already allocated, every allocated
+ * buffer must be released back to the allocator. Otherwise the long-lived LLAP daemon leaks arena
+ * memory on every failed footer read (a truncated file, an IO error, or an oversized chunk).
+ */
+ @Test
+ public void testStreamFooterReadFailureReleasesBuffers() {
+ assertFooterReadFailureReleasesBuffers(MAX_ALLOC); // single-buffer path
+ assertFooterReadFailureReleasesBuffers(2 * MAX_ALLOC); // multi-buffer, exact multiple
+ assertFooterReadFailureReleasesBuffers(2 * MAX_ALLOC + 3); // multi-buffer, with remainder
+ }
+
+ private void assertFooterReadFailureReleasesBuffers(int length) {
+ final int arenaSize = 4096;
+ DummyMemoryManager mm = new DummyMemoryManager();
+ LlapDaemonCacheMetrics metrics = LlapDaemonCacheMetrics.create("", "");
+ BuddyAllocator alloc = new BuddyAllocator(
+ false, false, 8, MAX_ALLOC, 1, arenaSize, 0, null, mm, metrics, null, true);
+ MetadataCache cache = new MetadataCache(alloc, mm, new DummyCachePolicy(), true, metrics);
+
+ Object fileKey = new Object();
+ // One byte short of the footer, so reading the last chunk hits EOF part-way through.
+ ByteArrayInputStream truncated = new ByteArrayInputStream(new byte[length - 1]);
+ try {
+ cache.putFileMetadata(fileKey, length, truncated, null, null);
+ fail("Expected an EOFException for a truncated footer stream of length " + length);
+ } catch (IOException expected) {
+ // expected
Review Comment:
narrowed the catch to EOFException
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "deniskuzZ (via GitHub)" <gi...@apache.org>.
deniskuzZ commented on code in PR #6584:
URL: https://github.com/apache/hive/pull/6584#discussion_r3579150781
##########
llap-server/src/java/org/apache/hadoop/hive/llap/io/metadata/MetadataCache.java:
##########
@@ -257,41 +257,85 @@ public LlapBufferOrBuffers putFileMetadata(Object fileKey, int length, InputStre
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings("unchecked")
private LlapBufferOrBuffers wrapBbForFile(LlapBufferOrBuffers result,
Object fileKey, int length, InputStream stream, CacheTag tag, AtomicBoolean isStopped) throws IOException {
- if (result != null) return result;
+ if (result != null) {
+ return result;
+ }
int maxAlloc = allocator.getMaxAllocation();
- LlapMetadataBuffer<Object>[] largeBuffers = null;
- if (maxAlloc < length) {
- largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
- for (int i = 0; i < largeBuffers.length; ++i) {
- largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ // Buffers are locked and handed to the cache only after this returns, so release whatever we
+ // allocated if a later read or allocation throws - otherwise it leaks (nothing else reclaims it).
+ if (length <= maxAlloc) {
+ // The whole footer fits in a single buffer - the overwhelmingly common case.
+ LlapMetadataBuffer<Object> buffer = new LlapMetadataBuffer<>(fileKey, tag);
+ allocator.allocateMultiple(new MemoryBuffer[] { buffer }, length, null, isStopped);
+ boolean done = false;
+ try {
+ readIntoCacheBuffer(stream, length, buffer);
+ done = true;
+ return buffer;
+ } finally {
+ if (!done) {
+ deallocateQuietly(buffer);
+ }
}
- allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
+ }
+ // Larger footers are split across maxAlloc-sized chunks, the last one holding the remainder.
+ LlapMetadataBuffer<Object>[] largeBuffers = new LlapMetadataBuffer[length / maxAlloc];
+ for (int i = 0; i < largeBuffers.length; ++i) {
+ largeBuffers[i] = new LlapMetadataBuffer<>(fileKey, tag);
+ }
+ // allocateMultiple is all-or-nothing: on success every chunk is allocated; on failure it
+ // releases whatever it reserved, so a throw here needs no cleanup from us.
+ allocator.allocateMultiple(largeBuffers, maxAlloc, null, isStopped);
Review Comment:
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4913337941
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [15 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org
Re: [PR] HIVE-29703: LLAP: Parquet footer larger than alloc.max fails to cache — RuntimeException: Trying to allocate N; max is M [hive]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #6584:
URL: https://github.com/apache/hive/pull/6584#issuecomment-4902982057
## [](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584) **Quality Gate passed**
Issues
 [0 New issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_hive&pullRequest=6584&issueStatuses=ACCEPTED)
Measures
 [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_hive&pullRequest=6584&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)
 [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_coverage&view=list)
 [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_hive&pullRequest=6584&metric=new_duplicated_lines_density&view=list)
<!-- sqra-placement-anchor -->
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_hive&pullRequest=6584)
--
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: gitbox-unsubscribe@hive.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org