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 {