From 9d02db0f9a0bfc6fe057f636c53754679b549a43 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 16:52:54 +0300 Subject: [PATCH 1/6] added final to never changing vars, transitioned manuall file close to try with resources, removed redundent assignment for clarity --- .../sentinel/node/metric/MetricSearcher.java | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java index e1e857632e..8aa06ae3a1 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java @@ -36,8 +36,8 @@ public class MetricSearcher { private static final Charset defaultCharset = Charset.forName(SentinelConfig.charset()); private final MetricsReader metricsReader; - private String baseDir; - private String baseFileName; + private final String baseDir; + private final String baseFileName; private Position lastPosition = new Position(); @@ -117,6 +117,7 @@ public synchronized List findByTimeAndResource(long beginTimeMs, lon // + "], " + identity + ")"); int i = 0; long offsetInIndex = 0; + //noinspection StatementWithEmptyBody if (validPosition(beginTimeMs)) { i = fileNames.indexOf(lastPosition.metricFileName); if (i == -1) { @@ -171,22 +172,13 @@ private boolean validPosition(long beginTimeMs) { if (!new File(lastPosition.indexFileName).exists()) { return false; } - FileInputStream in = null; - try { - in = new FileInputStream(lastPosition.indexFileName); + try (FileInputStream in = new FileInputStream(lastPosition.indexFileName)) { in.getChannel().position(lastPosition.offsetInIndex); DataInputStream indexIn = new DataInputStream(in); // timestamp(second) in the specific position == that we cached return indexIn.readLong() == lastPosition.second; } catch (Exception e) { return false; - } finally { - if (in != null) { - try { - in.close(); - } catch (Exception ignore) { - } - } } } @@ -200,13 +192,12 @@ private long findOffset(long beginTime, String metricFileName, long beginSecond = beginTime / 1000; FileInputStream in = new FileInputStream(idxFileName); in.getChannel().position(offsetInIndex); - DataInputStream indexIn = new DataInputStream(in); - long offset; - try { + try (DataInputStream indexIn = new DataInputStream(in)) { + long offset; long second; lastPosition.offsetInIndex = in.getChannel().position(); while ((second = indexIn.readLong()) < beginSecond) { - offset = indexIn.readLong(); + indexIn.readLong(); lastPosition.offsetInIndex = in.getChannel().position(); } offset = indexIn.readLong(); @@ -216,8 +207,6 @@ private long findOffset(long beginTime, String metricFileName, return offset; } catch (EOFException ignore) { return -1; - } finally { - indexIn.close(); } } } From e5f082bea58814f5feb5b32cf4325c9ad0903d71 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 17:05:17 +0300 Subject: [PATCH 2/6] refactored weird variable assignment and transitioned to try with resources --- .../alibaba/csp/sentinel/node/metric/MetricSearcher.java | 5 +++-- .../alibaba/csp/sentinel/node/metric/MetricsReader.java | 8 +------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java index 8aa06ae3a1..3ddf94db74 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java @@ -64,10 +64,11 @@ public MetricSearcher(String baseDir, String baseFileName, Charset charset) { if (charset == null) { throw new IllegalArgumentException("charset can't be null"); } - this.baseDir = baseDir; + String baseDirContainer = baseDir; if (!baseDir.endsWith(File.separator)) { - this.baseDir += File.separator; + baseDirContainer += File.separator; } + this.baseDir = baseDirContainer; this.baseFileName = baseFileName; metricsReader = new MetricsReader(charset); } diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java index b705b34a2e..2a77d34d6c 100644 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java @@ -43,11 +43,9 @@ public MetricsReader(Charset charset) { */ boolean readMetricsInOneFileByEndTime(List list, String fileName, long offset, long beginTimeMs, long endTimeMs, String identity) throws Exception { - FileInputStream in = null; long beginSecond = beginTimeMs / 1000; long endSecond = endTimeMs / 1000; - try { - in = new FileInputStream(fileName); + try (FileInputStream in = new FileInputStream(fileName)) { in.getChannel().position(offset); BufferedReader reader = new BufferedReader(new InputStreamReader(in, charset)); String line; @@ -72,10 +70,6 @@ boolean readMetricsInOneFileByEndTime(List list, String fileName, lo return false; } } - } finally { - if (in != null) { - in.close(); - } } return true; } From 4e67c93d40e989cc5515ba36d1da935271af5b19 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 17:08:01 +0300 Subject: [PATCH 3/6] transitioned another file read to try with resources --- .../alibaba/csp/sentinel/node/metric/MetricsReader.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java index 2a77d34d6c..8aec8f732f 100644 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java @@ -83,9 +83,7 @@ void readMetricsInOneFile(List list, String fileName, if (list.size() > 0) { lastSecond = list.get(list.size() - 1).getTimestamp() / 1000; } - FileInputStream in = null; - try { - in = new FileInputStream(fileName); + try (FileInputStream in = new FileInputStream(fileName)) { in.getChannel().position(offset); BufferedReader reader = new BufferedReader(new InputStreamReader(in, charset)); String line; @@ -102,10 +100,6 @@ void readMetricsInOneFile(List list, String fileName, } lastSecond = currentSecond; } - } finally { - if (in != null) { - in.close(); - } } } From 99df7fb8d8c51f2a73b2ac93386d7152384ce6c3 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 17:08:47 +0300 Subject: [PATCH 4/6] fixed typo --- .../com/alibaba/csp/sentinel/node/metric/MetricsReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java index 8aec8f732f..6a6c2204ec 100644 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java @@ -39,7 +39,7 @@ public MetricsReader(Charset charset) { } /** - * @return if should continue read, return true, else false. + * @return if it should continue read, return true, else false. */ boolean readMetricsInOneFileByEndTime(List list, String fileName, long offset, long beginTimeMs, long endTimeMs, String identity) throws Exception { From 9dae5adeeb7e62f3bd24a1f0884db9697e2f0d93 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 17:10:07 +0300 Subject: [PATCH 5/6] removed explicit type reference --- .../com/alibaba/csp/sentinel/node/metric/MetricsReader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java index 6a6c2204ec..7303b1f307 100644 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricsReader.java @@ -109,7 +109,7 @@ void readMetricsInOneFile(List list, String fileName, */ List readMetricsByEndTime(List fileNames, int pos, long offset, long beginTimeMs, long endTimeMs, String identity) throws Exception { - List list = new ArrayList(1024); + List list = new ArrayList<>(1024); if (readMetricsInOneFileByEndTime(list, fileNames.get(pos++), offset, beginTimeMs, endTimeMs, identity)) { while (pos < fileNames.size() && readMetricsInOneFileByEndTime(list, fileNames.get(pos++), 0, beginTimeMs, endTimeMs, identity)) { @@ -120,7 +120,7 @@ && readMetricsInOneFileByEndTime(list, fileNames.get(pos++), 0, beginTimeMs, end List readMetrics(List fileNames, int pos, long offset, int recommendLines) throws Exception { - List list = new ArrayList(recommendLines); + List list = new ArrayList<>(recommendLines); readMetricsInOneFile(list, fileNames.get(pos++), offset, recommendLines); while (list.size() < recommendLines && pos < fileNames.size()) { readMetricsInOneFile(list, fileNames.get(pos++), 0, recommendLines); From 61b8e52e89906050631533b060d21ea4943d4c24 Mon Sep 17 00:00:00 2001 From: JhonDoe15 Date: Sat, 1 Oct 2022 17:18:27 +0300 Subject: [PATCH 6/6] added static import and try with resources --- .../zookeeper/ZookeeperConfigSender.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/sentinel-demo/sentinel-demo-zookeeper-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/zookeeper/ZookeeperConfigSender.java b/sentinel-demo/sentinel-demo-zookeeper-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/zookeeper/ZookeeperConfigSender.java index 4b1e422340..7d977da312 100644 --- a/sentinel-demo/sentinel-demo-zookeeper-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/zookeeper/ZookeeperConfigSender.java +++ b/sentinel-demo/sentinel-demo-zookeeper-datasource/src/main/java/com/alibaba/csp/sentinel/demo/datasource/zookeeper/ZookeeperConfigSender.java @@ -6,6 +6,8 @@ import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.data.Stat; +import static org.apache.curator.framework.CuratorFrameworkFactory.newClient; + /** * Zookeeper config sender for demo * @@ -31,22 +33,21 @@ public static void main(String[] args) throws Exception { + " }\n" + "]"; - CuratorFramework zkClient = CuratorFrameworkFactory.newClient(remoteAddress, new ExponentialBackoffRetry(SLEEP_TIME, RETRY_TIMES)); - zkClient.start(); - String path = getPath(groupId, dataId); - Stat stat = zkClient.checkExists().forPath(path); - if (stat == null) { - zkClient.create().creatingParentContainersIfNeeded().withMode(CreateMode.PERSISTENT).forPath(path, null); - } - zkClient.setData().forPath(path, rule.getBytes()); + try(CuratorFramework zkClient = newClient(remoteAddress, new ExponentialBackoffRetry(SLEEP_TIME, RETRY_TIMES))) { + zkClient.start(); + String path = getPath(groupId, dataId); + Stat stat = zkClient.checkExists().forPath(path); + if (stat == null) { + zkClient.create().creatingParentContainersIfNeeded().withMode(CreateMode.PERSISTENT).forPath(path, null); + } + zkClient.setData().forPath(path, rule.getBytes()); - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } } - - zkClient.close(); } private static String getPath(String groupId, String dataId) {