修复延迟基线bug
Timer改成线程池,修复系统时间改变导致定时任务无法执行的bug
This commit is contained in:
@@ -17,14 +17,8 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
@@ -67,7 +61,7 @@ public class KLALBController {
|
||||
public HighAccuracyClock getClock() {
|
||||
return clock;
|
||||
}
|
||||
private final long TIME_WINDOW=2000000000L;
|
||||
private final long TIME_WINDOW=50000000000L;
|
||||
private SpeedAndTrafficMonitorDataImpl linkMonitor = new SpeedAndTrafficMonitorDataImpl(
|
||||
new HashMapTimestampMonitor<UUID>(HighAccuracyClock.SYSTEM_CLOCK, "up", 100,TIME_WINDOW ),
|
||||
new HashMapTimestampMonitor<UUID>(HighAccuracyClock.SYSTEM_CLOCK, "down", 100, TIME_WINDOW));
|
||||
@@ -104,23 +98,9 @@ public class KLALBController {
|
||||
public List<InetAddress> getDnsAddresses() {
|
||||
return dnsAddresses;
|
||||
}
|
||||
private ScheduledExecutorService scheduleTimer=Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors(),new ThreadFactory() {
|
||||
|
||||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
return ThreadTool.makeVDaemonThreadIfSupport("计时器线程", r);
|
||||
}
|
||||
});
|
||||
|
||||
public ScheduledExecutorService getScheduleTimer() {
|
||||
return scheduleTimer;
|
||||
}
|
||||
|
||||
private Timer twk = new Timer("网卡检测扫描计时器", true);
|
||||
|
||||
|
||||
|
||||
private TimerTask tsk1 = new TimerTask() {
|
||||
private Runnable tsk1 = new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -306,7 +286,7 @@ public class KLALBController {
|
||||
return srv6Router.getLocator().getAddress().toInet6Address().equals(inetAddress);
|
||||
}
|
||||
|
||||
private TimerTask tsk2 = new TimerTask() {
|
||||
private Runnable tsk2 = new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -734,8 +714,8 @@ public class KLALBController {
|
||||
private void loadController() {
|
||||
this.apiServer = new KLALBRoutingProtocolAPIServer(routingProtocol, this);
|
||||
this.apiClient = new KLALBRoutingProtocolAPIClient(routingProtocol);
|
||||
twk.schedule(tsk1, 5000, 5000);
|
||||
twk.schedule(tsk2, 5000, 5000);
|
||||
KLALBScheduler.getScheduler().scheduleAtFixedRate(tsk1, 5000, 5000,TimeUnit.MILLISECONDS);
|
||||
KLALBScheduler.getScheduler().scheduleAtFixedRate(tsk2, 5000, 5000,TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
public KLALBController() {
|
||||
@@ -753,17 +733,10 @@ public class KLALBController {
|
||||
}
|
||||
|
||||
protected void initKLALB(boolean enableVirtualAdapter, IPv6AddressGroup selfg) {
|
||||
ThreadTool.makeVDaemonThread("线路性能采样线程", ()->{
|
||||
while(true) {
|
||||
KLALBScheduler.getScheduler().scheduleAtFixedRate( ()->{
|
||||
linkMonitor.update();
|
||||
datatMonitor.update();
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
},1,1,TimeUnit.MILLISECONDS);
|
||||
loadSRv6ProtocolStack(selfg, enableVirtualAdapter);
|
||||
loadController();
|
||||
}
|
||||
@@ -804,7 +777,7 @@ public class KLALBController {
|
||||
List<MultiProtocolSocketAddress> linele = configItem.getExternalEndpoints();
|
||||
if (linele != null) {
|
||||
getExternalEndpoints().addAll(linele);
|
||||
}
|
||||
}
|
||||
List<MultiProtocolSocketAddress> linetoc = configItem.getAutoConnections();
|
||||
if (linetoc != null) {
|
||||
linetoc.forEach((aline) -> {
|
||||
@@ -856,9 +829,8 @@ public class KLALBController {
|
||||
return srv6Router;
|
||||
}
|
||||
|
||||
private Timer trtr = new Timer("路由表刷新计时器", true);
|
||||
{
|
||||
trtr.scheduleAtFixedRate(new TimerTask() {
|
||||
KLALBScheduler.getScheduler().scheduleAtFixedRate(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -869,9 +841,9 @@ public class KLALBController {
|
||||
srv6Router.updateRouteTabel();
|
||||
}
|
||||
}
|
||||
}, 100, 100);
|
||||
}, 100, 100, TimeUnit.MILLISECONDS);
|
||||
|
||||
trtr.scheduleAtFixedRate(new TimerTask() {
|
||||
KLALBScheduler.getScheduler().scheduleAtFixedRate(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -880,7 +852,7 @@ public class KLALBController {
|
||||
}
|
||||
|
||||
}
|
||||
}, 10, 10);
|
||||
}, 1, 1,TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
public IPv6Packet createPacketToAddress(IPv6Address addr, int flowlabel, IPv6Packet.IPv6Payload packet) {
|
||||
|
||||
Reference in New Issue
Block a user