This is an automated email from the ASF dual-hosted git repository.

jmclean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 23a13e40d3 [#8385] Make JsonCodec.java is thread safe (#8399)
23a13e40d3 is described below

commit 23a13e40d3642786f82ed1e9ff753b189ccdc3fe
Author: Surya B <[email protected]>
AuthorDate: Wed Sep 3 11:47:22 2025 +0530

    [#8385] Make JsonCodec.java is thread safe (#8399)
    
    ### What changes were proposed in this pull request?
    
    - Made `JsonCodec` thread-safe by marking `mapper` and `jsonType` as
    `volatile`.
    - Applied double-checked locking in `getMapper` and `getJsonType` to
    ensure proper lazy initialization in concurrent scenarios.
    - No functional changes to the JSON serialization/deserialization
    behavior.
    
    ### Why are the changes needed?
    
    - `JsonCodec` was not thread-safe: concurrent access to `mapper` and
    `jsonType` could cause race conditions or inconsistent initialization.
    
    Fix: #8385
    
    ### Does this PR introduce  any user-facing change?
    
    - No user-facing API changes.
    - No properties or configuration keys were added or removed.
    - Existing functionality behaves identically, but now safely under
    concurrent access.
---
 .../org/apache/gravitino/trino/connector/util/json/JsonCodec.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/util/json/JsonCodec.java
 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/util/json/JsonCodec.java
index 4f0f21c3b4..7a7c5559fd 100644
--- 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/util/json/JsonCodec.java
+++ 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/util/json/JsonCodec.java
@@ -52,8 +52,8 @@ import 
org.apache.gravitino.trino.connector.GravitinoConnectorPluginManager;
  * Provides functionality for handling various Trino-specific types and plugin 
classes.
  */
 public class JsonCodec {
-  private static ObjectMapper mapper;
-  private static Type jsonType;
+  private static volatile ObjectMapper mapper;
+  private static volatile Type jsonType;
 
   private static ObjectMapper buildMapper(ClassLoader classLoader) {
     try {

Reply via email to