fix: ip更新失败时任务无法重新开始.
This commit is contained in:
@@ -210,7 +210,7 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
|
|
||||||
scheduledProvider.whenUpdate(ip -> {
|
scheduledProvider.whenUpdate(ip -> {
|
||||||
NetworkContextHolder.setIpAddress(ip);
|
NetworkContextHolder.setIpAddress(ip);
|
||||||
log.info("本机最新公网IP地址 => {}", ip);
|
log.debug("本机最新公网IP地址 => {}", ip);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,20 +113,29 @@ public class ScheduledProvider extends AbstractProvider implements AutoCloseable
|
|||||||
* 提交任务逻辑
|
* 提交任务逻辑
|
||||||
*/
|
*/
|
||||||
private void submitTask() {
|
private void submitTask() {
|
||||||
task = poolExecutor.scheduleAtFixedRate(this::doAction, 0, timePeriod, TimeUnit.SECONDS);
|
task = poolExecutor.scheduleAtFixedRate(this, 0, timePeriod, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行逻辑
|
* 执行逻辑
|
||||||
*/
|
*/
|
||||||
private void doAction() {
|
private synchronized void doAction() {
|
||||||
// 打断时, 终止已有的任务. (逻辑上不应该发生)
|
// 打断时, 终止已有的任务. (逻辑上不应该发生)
|
||||||
if (Thread.currentThread().isInterrupted()) {
|
if (Thread.currentThread().isInterrupted()) {
|
||||||
log.debug("上一个ip更新任务已终止.");
|
log.debug("上一个ip更新任务已终止.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
InstanceContextHolder.setAdditional("ip-update");
|
InstanceContextHolder.setAdditional("ip-update");
|
||||||
internalCache = internalProvider.get().trim();
|
String rawValue = internalProvider.get();
|
||||||
|
if (rawValue == null || rawValue.isEmpty()) {
|
||||||
|
internalCache = null;
|
||||||
|
} else {
|
||||||
|
internalCache = rawValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (internalCache != null) {
|
||||||
|
internalCache = internalCache.trim();
|
||||||
|
}
|
||||||
|
|
||||||
if (valueConsumer != null) {
|
if (valueConsumer != null) {
|
||||||
valueConsumer.accept(internalCache);
|
valueConsumer.accept(internalCache);
|
||||||
|
|||||||
Reference in New Issue
Block a user