[GLUTEN-8685][VL] Add null check to avoid core dump when rss push partition data size is large #8686
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What changes were proposed in this pull request?
When JavaRssClient push partition data once exceeds Int.MAX_VALUE or when executor memory is in a pressure situation, It's possible that https://github.com/apache/incubator-gluten/blob/main/cpp/core/jni/JniCommon.h#L500
array_ = env->NewByteArray(size);
will return a null ptr, due to int64_t cast to a int32_t or there no enough memory, and following logic will cause a unexpected core dump as described in #8685 .This PR split the bytes into serval chunk if the bytes length is very large and add the check logic to make sure throwing exception when get a null ptr array!
(Fixes: #8685)
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
manual tests in my own local environment.