From f197196c21d8607a439bdef9df69c259ddc1457c04ca005973a7fb7544259d34 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Fri, 24 Jul 2026 22:26:59 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B2=D0=B5=D1=80:=20=D1=83?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BA=D0=BE=D0=B8=D1=82=D1=8C=20AddBlock=20s?= =?UTF-8?q?ync=20=D0=BF=D1=80=D0=B8=20=D1=83=D0=B6=D0=B5=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B3=D0=BD=D0=B0=D0=BD=D0=BD=D0=BE=D0=BC=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D0=BD=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/server/sync/AddBlockSyncService.java | 14 +++++++++++++- VERSION.properties | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/SHiNE-server/shine-server-net-protocol/src/main/java/server/sync/AddBlockSyncService.java b/SHiNE-server/shine-server-net-protocol/src/main/java/server/sync/AddBlockSyncService.java index b2fd337f..2e4741ab 100644 --- a/SHiNE-server/shine-server-net-protocol/src/main/java/server/sync/AddBlockSyncService.java +++ b/SHiNE-server/shine-server-net-protocol/src/main/java/server/sync/AddBlockSyncService.java @@ -114,6 +114,12 @@ public final class AddBlockSyncService { return; } + if (firstTry.serverAlreadyHasBlock(blockNumber)) { + log.info("AddBlock sync skipped: partner already has block. partner={} blockchainName={} blockNumber={} remoteLast={}", + partner.getLogin(), blockchainName, blockNumber, firstTry.serverLastGlobalNumber()); + return; + } + if (!firstTry.needsBackfill()) { log.warn("AddBlock sync failed without backfill: partner={} blockchainName={} blockNumber={} code={}", partner.getLogin(), blockchainName, blockNumber, firstTry.code()); @@ -123,7 +129,7 @@ public final class AddBlockSyncService { int remoteLast = firstTry.serverLastGlobalNumber(); int fromBlockNumber = remoteLast + 1; if (fromBlockNumber > blockNumber) { - log.warn("AddBlock sync inconsistent backfill window: partner={} blockchainName={} remoteLast={} target={}", + log.info("AddBlock sync skipped: partner already caught up during backfill window. partner={} blockchainName={} remoteLast={} target={}", partner.getLogin(), blockchainName, remoteLast, blockNumber); return; } @@ -295,6 +301,12 @@ public final class AddBlockSyncService { boolean needsBackfill() { return !ok && ("bad_prev_hash".equalsIgnoreCase(code) || "bad_block_number".equalsIgnoreCase(code)); } + + boolean serverAlreadyHasBlock(int targetBlockNumber) { + return !ok + && serverLastGlobalNumber != Integer.MIN_VALUE + && serverLastGlobalNumber >= targetBlockNumber; + } } private static final class SyncWsListener implements WebSocket.Listener { diff --git a/VERSION.properties b/VERSION.properties index e63d5594..a83f4e2b 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ client.version=1.2.354 -server.version=1.2.323 +server.version=1.2.324