Skip to content

Conversation

@duxiao1212
Copy link
Contributor

@duxiao1212 duxiao1212 commented Apr 7, 2025

Description

The original pull request #24614 incorrectly compares canonicalizedJsonExtract and legacyJsonCast in the equals function of an object. This issue can be seen in the code here.

As a result, whenever a SQL function requires caching, the cache is never hit, leading to the creation of new SQL function objects repeatedly. This behavior eventually causes an OOM error in the JVM metaspace. and eventually this error led to UER SEV.

After the problematic comparison was updated and tested through shadow cluster by @rschlussel , we are confident that the issue has been resolved in this PR. Therefore, we plan to bring back the json canonicalized extract

Motivation and Context

Reintroduced json_extract to generate canonicalized output

Impact

low impact

Test Plan

N/A

Contributor checklist

  • Please make sure your submission complies with our contributing guide, in particular code style and commit standards.
  • PR description addresses the issue accurately and concisely. If the change is non-trivial, a GitHub Issue is referenced.
  • Documented new properties (with its default value), SQL syntax, functions, or other functionality.
  • If release notes are required, they follow the release notes guidelines.
  • Adequate tests were added if applicable.
  • CI passed.

Release Notes

Please follow release notes guidelines and fill in the release notes below.

== NO RELEASE NOTE ==

@duxiao1212 duxiao1212 requested review from a team and elharo as code owners April 7, 2025 00:17
@duxiao1212 duxiao1212 requested a review from jaystarshot April 7, 2025 00:17
@prestodb-ci prestodb-ci added the from:Meta PR from Meta label Apr 7, 2025
@duxiao1212 duxiao1212 requested a review from rschlussel April 7, 2025 00:18
@shangm2
Copy link
Contributor

shangm2 commented Apr 7, 2025

@duxiao1212 is there a way to verify the fix is working?

@rschlussel
Copy link
Contributor

@duxiao1212 is there a way to verify the fix is working?

I shadowed the previous version with the equals fix and confirmed that it fixed the issue.

@rschlussel
Copy link
Contributor

@duxiao1212 please add more details to the PR description about why the change was reverted, the root cause, and how this fixes it.

@duxiao1212 duxiao1212 merged commit 02a65c0 into prestodb:master Apr 7, 2025
97 checks passed
Leziak pushed a commit to Leziak/presto that referenced this pull request Apr 9, 2025
# This is the 1st commit message:

[native] Add a test group for async data cache e2e tests.

# This is the commit message prestodb#2:

[native] Advance velox.

# This is the commit message prestodb#3:

Fix error when describing a nonexistent table

# This is the commit message prestodb#4:

[native] test modification.

# This is the commit message prestodb#5:

Changes to enable ssl/tls in hms
Co-authored-by: Arin Mathew <[email protected]>

Changes to move ssl related properties to seperate class

# This is the commit message prestodb#6:

[native] Add tests for UUID type

# This is the commit message prestodb#7:

Reintroduced json_extract to generate canonicalized output (prestodb#24879)

## Description
The original pull request
[prestodb#24614](prestodb#24614) incorrectly
compares canonicalizedJsonExtract and legacyJsonCast in the equals
function of an object. This issue can be seen in the code
[here](https://github.com/prestodb/presto/pull/24614/files#diff-e921c5d186f9d5daa836bc7330f52caf8c1b84d19cf42288d5a8a7c9a6d2a5d5R156).

As a result, whenever a SQL function requires caching, the cache is
never hit, leading to the creation of new SQL function objects
repeatedly. This behavior eventually causes an OOM error in the JVM
metaspace. and eventually this error led to UER SEV.

After the problematic comparison was updated and tested through shadow
cluster by @rschlussel , we are confident that the issue has been
resolved in this PR. Therefore, we plan to bring back the json
canonicalized extract


## Motivation and Context
Reintroduced json_extract to generate canonicalized output

## Impact
<!---Describe any public API or user-facing feature change or any
performance impact-->
low impact 

## Test Plan
<!---Please fill in how you tested your change-->
N/A

## Contributor checklist

- [x] Please make sure your submission complies with our [contributing
guide](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md),
in particular [code
style](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md#code-style)
and [commit
standards](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md#commit-standards).
- [x] PR description addresses the issue accurately and concisely. If
the change is non-trivial, a GitHub Issue is referenced.
- [x] Documented new properties (with its default value), SQL syntax,
functions, or other functionality.
- [x] If release notes are required, they follow the [release notes
guidelines](https://github.com/prestodb/presto/wiki/Release-Notes-Guidelines).
- [x] Adequate tests were added if applicable.
- [x] CI passed.

## Release Notes
Please follow [release notes
guidelines](https://github.com/prestodb/presto/wiki/Release-Notes-Guidelines)
and fill in the release notes below.

```
== NO RELEASE NOTE ==
```
# This is the commit message prestodb#8:

Reuse JoinType in IndexJoinNode

Reuse JoinType instead of creating IndexJoinNode's own. JoinType is
already part of Prestissimo protocol. Adding IndexJoinNode with another
JoinType would cause naming conflict.

# This is the commit message prestodb#9:

Add jaro-winkler implementation, documentation and tests

# This is the commit message prestodb#10:

Add documentation for Iceberg support in PrestoCPP

# This is the commit message prestodb#11:

Add memory pool debug regex

# This is the commit message prestodb#12:

doc on hive csv limitations

# This is the commit message prestodb#13:

Add support for S3 WebIdentity authentication

# This is the commit message prestodb#14:

use com.facebook.airlift:security in presto-hive-metastore

# This is the commit message prestodb#15:

[native] Advance Velox

# This is the commit message prestodb#16:

[native] Add protocol for index lookup join plan

# This is the commit message prestodb#17:

[native] Add sidecar and sidecar plugin documentation
pradeepvaka pushed a commit to pradeepvaka/presto that referenced this pull request Apr 11, 2025
…24879)

## Description
The original pull request
[prestodb#24614](prestodb#24614) incorrectly
compares canonicalizedJsonExtract and legacyJsonCast in the equals
function of an object. This issue can be seen in the code
[here](https://github.com/prestodb/presto/pull/24614/files#diff-e921c5d186f9d5daa836bc7330f52caf8c1b84d19cf42288d5a8a7c9a6d2a5d5R156).

As a result, whenever a SQL function requires caching, the cache is
never hit, leading to the creation of new SQL function objects
repeatedly. This behavior eventually causes an OOM error in the JVM
metaspace. and eventually this error led to UER SEV.

After the problematic comparison was updated and tested through shadow
cluster by @rschlussel , we are confident that the issue has been
resolved in this PR. Therefore, we plan to bring back the json
canonicalized extract


## Motivation and Context
Reintroduced json_extract to generate canonicalized output

## Impact
<!---Describe any public API or user-facing feature change or any
performance impact-->
low impact 

## Test Plan
<!---Please fill in how you tested your change-->
N/A

## Contributor checklist

- [x] Please make sure your submission complies with our [contributing
guide](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md),
in particular [code
style](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md#code-style)
and [commit
standards](https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md#commit-standards).
- [x] PR description addresses the issue accurately and concisely. If
the change is non-trivial, a GitHub Issue is referenced.
- [x] Documented new properties (with its default value), SQL syntax,
functions, or other functionality.
- [x] If release notes are required, they follow the [release notes
guidelines](https://github.com/prestodb/presto/wiki/Release-Notes-Guidelines).
- [x] Adequate tests were added if applicable.
- [x] CI passed.

## Release Notes
Please follow [release notes
guidelines](https://github.com/prestodb/presto/wiki/Release-Notes-Guidelines)
and fill in the release notes below.

```
== NO RELEASE NOTE ==
```
@ZacBlanco ZacBlanco mentioned this pull request May 29, 2025
21 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

from:Meta PR from Meta

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants