From d5d2073e922dce671be65010ed20e674bb6369be Mon Sep 17 00:00:00 2001 From: Jia Fan Date: Sat, 29 Mar 2025 18:23:56 +0800 Subject: [PATCH] Reduce the number of ObjectMapper creations to improve performance Signed-off-by: Jia Fan --- src/main/java/org/tikv/common/PDClient.java | 2 +- src/main/java/org/tikv/common/TiDBJDBCClient.java | 2 +- src/main/java/org/tikv/common/catalog/CatalogTransaction.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/tikv/common/PDClient.java b/src/main/java/org/tikv/common/PDClient.java index e2c1f30f426..e24d742d6fa 100644 --- a/src/main/java/org/tikv/common/PDClient.java +++ b/src/main/java/org/tikv/common/PDClient.java @@ -113,6 +113,7 @@ public class PDClient extends AbstractGRPCClient private static final int PAUSE_CHECKER_TIMEOUT = 300; // in seconds private static final int KEEP_CHECKER_PAUSE_PERIOD = PAUSE_CHECKER_TIMEOUT / 5; // in seconds private static final Logger logger = LoggerFactory.getLogger(PDClient.class); + private static final ObjectMapper mapper = new ObjectMapper(); private final RequestKeyCodec codec; private RequestHeader header; @@ -226,7 +227,6 @@ public Boolean isCheckerPaused(PDChecker checker) { URI url = pdAddrs.get(0); String api = url.toString() + "/pd/api/v1/checker/" + checker.apiName(); try { - ObjectMapper mapper = new ObjectMapper(); HashMap status = mapper.readValue(new URL(api), new TypeReference>() {}); return status.get("paused"); diff --git a/src/main/java/org/tikv/common/TiDBJDBCClient.java b/src/main/java/org/tikv/common/TiDBJDBCClient.java index 1e05d04cfc7..06eaa9d892c 100644 --- a/src/main/java/org/tikv/common/TiDBJDBCClient.java +++ b/src/main/java/org/tikv/common/TiDBJDBCClient.java @@ -41,6 +41,7 @@ public class TiDBJDBCClient implements AutoCloseable { private static final int DELAY_CLEAN_TABLE_LOCK_DEFAULT = 0; private static final String TIDB_ROW_FORMAT_VERSION_SQL = "select @@tidb_row_format_version"; private static final int TIDB_ROW_FORMAT_VERSION_DEFAULT = 1; + private static final ObjectMapper objectMapper = new ObjectMapper(); private final Logger logger = LoggerFactory.getLogger(getClass().getName()); private final Connection connection; @@ -120,7 +121,6 @@ public boolean dropTable(String databaseName, String tableName) throws SQLExcept private Map readConfMapFromTiDB() throws SQLException, IOException { String configJSON = (String) queryTiDBViaJDBC(SELECT_TIDB_CONFIG_SQL).get(0).get(0); - ObjectMapper objectMapper = new ObjectMapper(); TypeReference> typeRef = new TypeReference>() {}; return objectMapper.readValue(configJSON, typeRef); diff --git a/src/main/java/org/tikv/common/catalog/CatalogTransaction.java b/src/main/java/org/tikv/common/catalog/CatalogTransaction.java index 9a19abb279c..8fcdee03f01 100644 --- a/src/main/java/org/tikv/common/catalog/CatalogTransaction.java +++ b/src/main/java/org/tikv/common/catalog/CatalogTransaction.java @@ -40,6 +40,7 @@ public class CatalogTransaction { protected static final Logger logger = LoggerFactory.getLogger(CatalogTransaction.class); + private static final ObjectMapper mapper = new ObjectMapper(); private final Snapshot snapshot; CatalogTransaction(Snapshot snapshot) { @@ -51,7 +52,6 @@ public static T parseFromJson(ByteString json, Class cls) { Objects.requireNonNull(cls, "cls is null"); logger.debug(String.format("Parse Json %s : %s", cls.getSimpleName(), json.toStringUtf8())); - ObjectMapper mapper = new ObjectMapper(); try { return mapper.readValue(json.toStringUtf8(), cls); } catch (JsonParseException | JsonMappingException e) {