From 727aa532c6a28a3e61015c0570ef847d4eb3c356 Mon Sep 17 00:00:00 2001 From: SerLiunx-ctrl <17689543@qq.com> Date: Wed, 5 Feb 2025 15:07:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ip=E6=9B=B4=E6=96=B0=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=97=A0=E6=B3=95=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=BC=80=E5=A7=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serliunx/ddns/support/SystemInitializer.java | 2 +- .../support/ipprovider/ScheduledProvider.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/serliunx/ddns/support/SystemInitializer.java b/src/main/java/com/serliunx/ddns/support/SystemInitializer.java index d73f040..1c91d5b 100644 --- a/src/main/java/com/serliunx/ddns/support/SystemInitializer.java +++ b/src/main/java/com/serliunx/ddns/support/SystemInitializer.java @@ -210,7 +210,7 @@ public final class SystemInitializer implements Refreshable, Clearable { scheduledProvider.whenUpdate(ip -> { NetworkContextHolder.setIpAddress(ip); - log.info("本机最新公网IP地址 => {}", ip); + log.debug("本机最新公网IP地址 => {}", ip); }); } diff --git a/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java b/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java index 13ee8d2..8711888 100644 --- a/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java +++ b/src/main/java/com/serliunx/ddns/support/ipprovider/ScheduledProvider.java @@ -113,20 +113,29 @@ public class ScheduledProvider extends AbstractProvider implements AutoCloseable * 提交任务逻辑 */ 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()) { log.debug("上一个ip更新任务已终止."); return; } 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) { valueConsumer.accept(internalCache);