From 0cf4683a1040f6e897d101b23909a8adae85dd25 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Mon, 7 Nov 2016 23:41:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0close=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E4=BB=A5=E5=8F=8AIndexDataCapacityMonitor=E6=94=B9=E6=88=90?= =?UTF-8?q?=E5=AE=88=E6=8A=A4=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/IndexDataCapacityMonitor.java | 23 ++++++++++++------- .../storage/data/index/IndexDBConnector.java | 8 +++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/IndexDataCapacityMonitor.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/IndexDataCapacityMonitor.java index 66e827d80..608ee39af 100644 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/IndexDataCapacityMonitor.java +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/IndexDataCapacityMonitor.java @@ -2,6 +2,7 @@ package com.a.eye.skywalking.storage.data; import com.a.eye.skywalking.storage.block.index.BlockIndexEngine; import com.a.eye.skywalking.storage.data.index.IndexDBConnector; +import org.apache.jute.Index; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -13,10 +14,9 @@ import static com.a.eye.skywalking.storage.config.Config.DataIndex.MAX_CAPACITY_ /** * Created by xin on 2016/11/6. */ -public class IndexDataCapacityMonitor { +public class IndexDataCapacityMonitor extends Thread { private static Logger logger = LogManager.getLogger(IndexDataCapacityMonitor.class); - private static Detector detector; public static void addIndexData(long timestamp, int size) { @@ -25,7 +25,7 @@ public class IndexDataCapacityMonitor { } } - private static class Detector { + private class Detector { private AtomicLong currentSize; private long timestamp; @@ -46,21 +46,27 @@ public class IndexDataCapacityMonitor { public void add(int updateRecordSize) { if (currentSize.addAndGet(updateRecordSize) > MAX_CAPACITY_PER_INDEX * 0.8) { - notificationAddNewBlockIndex(); + notificationAddNewBlockIndexAndCreateNewIndexDB(); } } } - private static void notificationAddNewBlockIndex() { + private void notificationAddNewBlockIndexAndCreateNewIndexDB() { long timestamp = System.currentTimeMillis() + 5 * 60 * 1000; BlockIndexEngine.newUpdator().addRecord(timestamp); + createNewIndexDB(timestamp); detector = new Detector(timestamp); } - public static void start() { + private void createNewIndexDB(long timestamp) { + IndexDBConnector connector = new IndexDBConnector(timestamp); + connector.close(); + } + + @Override + public void run() { long timestamp = BlockIndexEngine.newFinder().findLastBlockIndex(); - //TODO: 为IndexDBConnector增加闭包执行函数 IndexDBConnector dbConnector = null; try { dbConnector = new IndexDBConnector(timestamp); @@ -72,9 +78,10 @@ public class IndexDataCapacityMonitor { } detector = new Detector(timestamp, count); } finally { - if(dbConnector != null){ + if (dbConnector != null) { dbConnector.close(); } } } + } diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java index 272663be0..c06e3093c 100644 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java @@ -137,7 +137,11 @@ public class IndexDBConnector { } } - public void close(){ - //TODO: + public void close() { + try { + connection.close(); + } catch (SQLException e) { + logger.error("Failed to close index db connector", e); + } } }