From 4e02140dea8661b36bdfcd710f944bfcb64a7c54 Mon Sep 17 00:00:00 2001
From: Bartek Wrona <wrona@syncad.com>
Date: Tue, 8 Sep 2020 21:44:52 +0200
Subject: [PATCH] - LOGGED/UNLOCGGED attributes applied to mostly used tables -
 Temporary disabled reputation data collection

---
 hive/db/db_state.py         | 11 +++--
 hive/db/schema.py           |  8 +++-
 hive/indexer/reputations.py | 87 +++++++++++++++++++------------------
 3 files changed, 58 insertions(+), 48 deletions(-)

diff --git a/hive/db/db_state.py b/hive/db/db_state.py
index 9b6134b49..d146f7245 100644
--- a/hive/db/db_state.py
+++ b/hive/db/db_state.py
@@ -8,7 +8,7 @@ from time import perf_counter
 import logging
 import sqlalchemy
 
-from hive.db.schema import (setup, reset_autovac, build_metadata,
+from hive.db.schema import (setup, reset_autovac, set_logged_table_attribute, build_metadata,
                             build_metadata_community, teardown, DB_VERSION)
 from hive.db.adapter import Db
 
@@ -148,10 +148,12 @@ class DbState:
             except sqlalchemy.exc.ProgrammingError as ex:
                 log.warning("Ignoring ex: {}".format(ex))
 
-        from hive.db.schema import drop_fk, create_fk
+        from hive.db.schema import drop_fk, set_logged_table_attribute
         log.info("Dropping FKs")
         drop_fk(cls.db())
 
+        set_logged_table_attribute(cls.db(), False)
+
         log.info("[INIT] Finish pre-initial sync hooks")
 
     @classmethod
@@ -229,8 +231,11 @@ class DbState:
         time_end = perf_counter()
         log.info("[INIT] update_all_posts_active executed in %fs", time_end - time_start)
 
+
+        from hive.db.schema import create_fk, set_logged_table_attribute
+        set_logged_table_attribute(cls.db(), True)
+
         log.info("Recreating FKs")
-        from hive.db.schema import create_fk
         create_fk(cls.db())
 
     @staticmethod
diff --git a/hive/db/schema.py b/hive/db/schema.py
index 14459b409..f9917be87 100644
--- a/hive/db/schema.py
+++ b/hive/db/schema.py
@@ -8,6 +8,9 @@ from sqlalchemy.types import VARCHAR
 from sqlalchemy.types import TEXT
 from sqlalchemy.types import BOOLEAN
 
+import logging
+log = logging.getLogger(__name__)
+
 #pylint: disable=line-too-long, too-many-lines, bad-whitespace
 
 # [DK] we changed and removed some tables so i upgraded DB_VERSION to 18
@@ -1505,11 +1508,11 @@ def set_fillfactor(db):
         sql = """ALTER TABLE {} SET (FILLFACTOR = {})"""
         db.query(sql.format(table, fillfactor))
 
-def set_logged(db, logged):
+def set_logged_table_attribute(db, logged):
     """Initializes/resets LOGGED/UNLOGGED attribute for tables which are intesively updated"""
 
     logged_config = [
-        'hive_author',
+        'hive_accounts',
         'hive_permlink_data',
         'hive_post_tags',
         'hive_posts',
@@ -1519,5 +1522,6 @@ def set_logged(db, logged):
     ]
 
     for table in logged_config:
+        log.info("Setting {} attribute on a table: {}".format('LOGGED' if logged else 'UNLOGGED', table))
         sql = """ALTER TABLE {} SET {}"""
         db.query_no_return(sql.format(table, 'LOGGED' if logged else 'UNLOGGED'))
diff --git a/hive/indexer/reputations.py b/hive/indexer/reputations.py
index 127c9fce1..e14a5484f 100644
--- a/hive/indexer/reputations.py
+++ b/hive/indexer/reputations.py
@@ -1,47 +1,48 @@
-""" Reputation update support """
-
-import logging
-from hive.indexer.db_adapter_holder import DbAdapterHolder
-
-log = logging.getLogger(__name__)
-
-CACHED_ITEMS_LIMIT = 200
-
-class Reputations(DbAdapterHolder):
-    _queries = []
-
-    @classmethod
-    def process_vote(self, block_num, effective_vote_op):
-        self._queries.append("\nSELECT process_reputation_data({}, '{}', '{}', '{}', {});".format(block_num, effective_vote_op['author'], effective_vote_op['permlink'],
-             effective_vote_op['voter'], effective_vote_op['rshares']))
-
-    @classmethod
-    def flush(self):
+""" Reputation update support """
+
+import logging
+from hive.indexer.db_adapter_holder import DbAdapterHolder
+
+log = logging.getLogger(__name__)
+
+CACHED_ITEMS_LIMIT = 200
+
+class Reputations(DbAdapterHolder):
+    _queries = []
+
+    @classmethod
+    def process_vote(self, block_num, effective_vote_op):
+        return 
+        self._queries.append("\nSELECT process_reputation_data({}, '{}', '{}', '{}', {});".format(block_num, effective_vote_op['author'], effective_vote_op['permlink'],
+             effective_vote_op['voter'], effective_vote_op['rshares']))
+
+    @classmethod
+    def flush(self):
         if not self._queries:
             return 0
 
         self.beginTx()
-
-        query = ""
-        i = 0
-        items = 0
-        for s in self._queries:
-            query = query + str(self._queries[i]) + ";\n"
-            i = i + 1
-            items = items + 1
-            if items >= CACHED_ITEMS_LIMIT:
-                self.db.query_no_return(query)
-                query = ""
-                items = 0
-
-        if items >= CACHED_ITEMS_LIMIT:
-            self.db.query_no_return(query)
-            query = ""
-            items = 0
-
-        n = len(self._queries)
-        self._queries.clear()
-
-        self.commitTx()
-        return n
-
+
+        query = ""
+        i = 0
+        items = 0
+        for s in self._queries:
+            query = query + str(self._queries[i]) + ";\n"
+            i = i + 1
+            items = items + 1
+            if items >= CACHED_ITEMS_LIMIT:
+                self.db.query_no_return(query)
+                query = ""
+                items = 0
+
+        if items >= CACHED_ITEMS_LIMIT:
+            self.db.query_no_return(query)
+            query = ""
+            items = 0
+
+        n = len(self._queries)
+        self._queries.clear()
+
+        self.commitTx()
+        return n
+
-- 
GitLab