From a164bcae6462f0f7078372cae3549d91989f7383 Mon Sep 17 00:00:00 2001 From: Dmitry Kryukov Date: Sat, 6 Jul 2024 04:12:13 +0300 Subject: [PATCH] fix: fix resource leaks in 3 classes (#4449) --- .../http/service/DeleteLedgerService.java | 21 ++++++++++--------- .../BKDistributedLogNamespace.java | 7 ++++--- .../impl/BKNamespaceDriver.java | 3 +-- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/http/service/DeleteLedgerService.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/http/service/DeleteLedgerService.java index b4d465650c3..57cc127908d 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/http/service/DeleteLedgerService.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/http/service/DeleteLedgerService.java @@ -56,19 +56,20 @@ public HttpServiceResponse handle(HttpServiceRequest request) throws Exception { if (params != null && params.containsKey("ledger_id")) { ClientConfiguration clientConf = new ClientConfiguration(); clientConf.addConfiguration(conf); - BookKeeper bk = new BookKeeper(clientConf); - Long ledgerId = Long.parseLong(params.get("ledger_id")); + try (BookKeeper bk = new BookKeeper(clientConf)) { + Long ledgerId = Long.parseLong(params.get("ledger_id")); - bk.deleteLedger(ledgerId); + bk.deleteLedger(ledgerId); - String output = "Deleted ledger: " + ledgerId; - String jsonResponse = JsonUtil.toJson(output); - if (LOG.isDebugEnabled()) { - LOG.debug("output body:" + jsonResponse); + String output = "Deleted ledger: " + ledgerId; + String jsonResponse = JsonUtil.toJson(output); + if (LOG.isDebugEnabled()) { + LOG.debug("output body:" + jsonResponse); + } + response.setBody(jsonResponse); + response.setCode(HttpServer.StatusCode.OK); + return response; } - response.setBody(jsonResponse); - response.setCode(HttpServer.StatusCode.OK); - return response; } else { response.setCode(HttpServer.StatusCode.NOT_FOUND); response.setBody("Not ledger found. Should provide ledger_id="); diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/BKDistributedLogNamespace.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/BKDistributedLogNamespace.java index 0a3677d9560..8ed2cfeb362 100644 --- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/BKDistributedLogNamespace.java +++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/BKDistributedLogNamespace.java @@ -158,12 +158,13 @@ public void deleteLog(String logName) if (!uri.isPresent()) { throw new LogNotFoundException("Log " + logName + " isn't found."); } - DistributedLogManager dlm = openLogInternal( + try (DistributedLogManager dlm = openLogInternal( uri.get(), logName, Optional.empty(), - Optional.empty()); - dlm.delete(); + Optional.empty())) { + dlm.delete(); + } } @Override diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/BKNamespaceDriver.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/BKNamespaceDriver.java index ea17ed76931..957995b3fd6 100644 --- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/BKNamespaceDriver.java +++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/BKNamespaceDriver.java @@ -533,8 +533,7 @@ public Map enumerateLogsWithMetadataInNamespace() String namespaceRootPath = namespace.getPath(); HashMap result = new HashMap(); ZooKeeperClient zkc = writerZKC; - try { - ZooKeeper zk = Utils.sync(zkc, namespaceRootPath); + try (ZooKeeper zk = Utils.sync(zkc, namespaceRootPath)) { Stat currentStat = zk.exists(namespaceRootPath, false); if (currentStat == null) { return result;