From 1f13a7b0866f430d5c7b1af67017453f7d42998b Mon Sep 17 00:00:00 2001
From: Marcin Ickiewicz <mickiewicz@syncad.com>
Date: Thu, 25 Jul 2024 11:08:39 +0200
Subject: [PATCH] fix for massive_with_indexes wrongly recalculate all posts
 childs

Previously sync cannot leave MASSIVE_WITH_INDEXES because update_all_hive_posts_children_count()
and VACUUM were called
---
 hive/db/db_state.py | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/hive/db/db_state.py b/hive/db/db_state.py
index 3b3b656be..deeb13d18 100644
--- a/hive/db/db_state.py
+++ b/hive/db/db_state.py
@@ -13,6 +13,7 @@ import sqlalchemy
 from hive.conf import (
    SCHEMA_NAME
   ,SCHEMA_OWNER_NAME
+  ,ONE_WEEK_IN_BLOCKS
   )
 
 from hive.db.adapter import Db
@@ -553,9 +554,15 @@ class DbState:
                 cls.db().query_no_return("COMMIT")
             cls.ensure_reputations_recalculated(last_completed_blocks, last_imported_blocks)
 
-            cls._execute_query(db=cls.db(), sql="VACUUM (VERBOSE,ANALYZE)")
-            cls._finish_all_tables(True, last_completed_blocks, last_imported_blocks)
-            cls._execute_query(db=cls.db(), sql="VACUUM (VERBOSE,ANALYZE)")
+            is_initial_massive = (last_imported_blocks - last_completed_blocks) > ONE_WEEK_IN_BLOCKS
+
+            if is_initial_massive:
+                cls._execute_query(db=cls.db(), sql="VACUUM (VERBOSE,ANALYZE)")
+
+            cls._finish_all_tables( is_initial_massive, last_completed_blocks, last_imported_blocks)
+
+            if is_initial_massive:
+                cls._execute_query(db=cls.db(), sql="VACUUM (VERBOSE,ANALYZE)")
 
             log.info("[MASSIVE] Massive sync complete!")
             return True
-- 
GitLab