This is an automated email from the ASF dual-hosted git repository.
mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new b570491ed4 [NO ISSUE][GEO] Reuse ObjectMapper instances in geo
functions
b570491ed4 is described below
commit b570491ed490053212c5d855d1d7641de102ba9c
Author: sshiv012 <[email protected]>
AuthorDate: Mon Jan 5 03:09:20 2026 -0800
[NO ISSUE][GEO] Reuse ObjectMapper instances in geo functions
- user model changes: no
- storage format changes: no
- interface changes: no
Details :
- Refactor PrintTools.geometryToGeoJSON() to use a static ObjectMapper
- Refactor AGeometry.toJSON() to use a static ObjectMapper
- Avoids creating new ObjectMapper and registering JtsModule on every call
- Added right number of args for Parsing Error, 124
Change-Id: Ib4cd841fa40d4fdd5bd350d6167a6737e5ad6767
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20763
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Ian Maxon <[email protected]>
---
.../evaluators/functions/STAsGeoJSONDescriptor.java | 17 ++++++++---------
.../dataflow/data/nontagged/printers/PrintTools.java | 11 ++++++++---
.../java/org/apache/asterix/om/base/AGeometry.java | 18 +++++++++++-------
3 files changed, 27 insertions(+), 19 deletions(-)
diff --git
a/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java
b/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java
index f5d2217005..55fffcbe4e 100644
---
a/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java
+++
b/asterixdb/asterix-geo/src/main/java/org/apache/asterix/geo/evaluators/functions/STAsGeoJSONDescriptor.java
@@ -36,23 +36,22 @@ public class STAsGeoJSONDescriptor extends
AbstractSTSingleGeometryDescriptor {
private static final long serialVersionUID = 1L;
public static final IFunctionDescriptorFactory FACTORY =
STAsGeoJSONDescriptor::new;
private static final Logger LOGGER = LogManager.getLogger();
- private final ObjectMapper mapper;
+ private static final ObjectMapper GEO_JSON_MAPPER = createObjectMapper();
- public STAsGeoJSONDescriptor() {
- mapper = new ObjectMapper();
+ private static ObjectMapper createObjectMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JtsModule());
+ return mapper;
}
@Override
protected Object evaluateOGCGeometry(Geometry geometry) throws
HyracksDataException {
- String geoJson = null;
try {
- mapper.registerModule(new JtsModule());
- geoJson = mapper.writeValueAsString(geometry);
+ return GEO_JSON_MAPPER.writeValueAsString(geometry);
} catch (JsonProcessingException e) {
- LOGGER.debug("JSON Processing exception during STAsGeoJSON
function");
- throw HyracksDataException.create(ErrorCode.PARSING_ERROR);
+ LOGGER.debug("JSON Processing exception during STAsGeoJSON
function", e);
+ throw HyracksDataException.create(ErrorCode.PARSING_ERROR,
"STAsGeoJSON", e.getMessage());
}
- return geoJson;
}
@Override
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
index 92fb1bb359..8c5dfbbbbb 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/PrintTools.java
@@ -47,6 +47,13 @@ public class PrintTools {
private static final GregorianCalendarSystem gCalInstance =
GregorianCalendarSystem.getInstance();
private static final long CHRONON_OF_DAY = TimeUnit.DAYS.toMillis(1);
+ private static final ObjectMapper GEO_JSON_MAPPER = createGeoJsonMapper();
+
+ private static ObjectMapper createGeoJsonMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JtsModule());
+ return mapper;
+ }
public static void printDateString(byte[] b, int s, int l, PrintStream ps)
throws HyracksDataException {
long chrononTime = getDateChronon(b, s + 1);
@@ -517,10 +524,8 @@ public class PrintTools {
if (geometry == null) {
return "";
}
- ObjectMapper mapper = new ObjectMapper();
- mapper.registerModule(new JtsModule());
try {
- return mapper.writeValueAsString(geometry);
+ return GEO_JSON_MAPPER.writeValueAsString(geometry);
} catch (JsonProcessingException e) {
return "";
}
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java
index c9d66b4e67..94b00579ae 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AGeometry.java
@@ -30,6 +30,14 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
public class AGeometry implements IAObject {
+ private static final ObjectMapper GEO_JSON_MAPPER = createObjectMapper();
+
+ private static ObjectMapper createObjectMapper() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JtsModule());
+ return mapper;
+ }
+
protected Geometry geometry;
public AGeometry(Geometry geometry) {
@@ -67,15 +75,11 @@ public class AGeometry implements IAObject {
@Override
public ObjectNode toJSON() {
- ObjectMapper om = new ObjectMapper();
- om.registerModule(new JtsModule());
- ObjectNode json;
try {
- String geoJson = om.writeValueAsString(geometry);
- json = (ObjectNode) om.readTree(geoJson);
+ String geoJson = GEO_JSON_MAPPER.writeValueAsString(geometry);
+ return (ObjectNode) GEO_JSON_MAPPER.readTree(geoJson);
} catch (IOException e) {
- return om.createObjectNode();
+ return GEO_JSON_MAPPER.createObjectNode();
}
- return json;
}
}