From 8a58957bfca9048f464dfe3dfdac79f3d6f27b0c Mon Sep 17 00:00:00 2001
From: Mariusz <mtrela@syncad.com>
Date: Fri, 31 Jul 2020 19:30:10 +0200
Subject: [PATCH] Slowdown fix - part 2

---
 hive/indexer/blocks.py | 20 +++++++++++++-------
 hive/indexer/sync.py   |  3 +--
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/hive/indexer/blocks.py b/hive/indexer/blocks.py
index d4ba4ef9d..db1b49424 100644
--- a/hive/indexer/blocks.py
+++ b/hive/indexer/blocks.py
@@ -101,9 +101,10 @@ class Blocks:
         return cls.ops_stats
 
     @staticmethod
-    def prepare_vops( comment_payout_ops, vopsList, date):
+    def prepare_vops(vopsList, date):
         vote_ops = {}
 
+        comment_payout_ops = {}
         ops_stats = { 'author_reward_operation' : 0, 'comment_reward_operation' : 0, 'effective_comment_vote_operation' : 0, 'comment_payout_update_operation' : 0 }
 
         for vop in vopsList:
@@ -151,7 +152,7 @@ class Blocks:
 
                 comment_payout_ops[key][op_type] = op_value
 
-        return (vote_ops, ops_stats)
+        return (vote_ops, comment_payout_ops, ops_stats)
 
 
     @classmethod
@@ -235,21 +236,26 @@ class Blocks:
             cls.ops_stats = Blocks.merge_ops_stats(cls.ops_stats, custom_ops_stats)
 
         # virtual ops
-        comment_payout_stats = {}
+        comment_payout_ops = {}
         vote_ops = {}
+        comment_payout_stats = {}
 
-        empty_vops = (vote_ops, comment_payout_stats)
+        empty_vops = (vote_ops, comment_payout_ops, comment_payout_stats)
 
         if is_initial_sync:
-            (vote_ops, comment_payout_stats) = virtual_operations[num] if num in virtual_operations else empty_vops
+            (vote_ops, comment_payout_ops, comment_payout_stats) = virtual_operations[num] if num in virtual_operations else empty_vops
         else:
             vops = hived.get_virtual_operations(num)
-            (vote_ops, comment_payout_stats) = Blocks.prepare_vops(Posts.comment_payout_ops, vops, cls._head_block_date)
-            cls.ops_stats = Blocks.merge_ops_stats(cls.ops_stats, comment_payout_stats)
+            (vote_ops, comment_payout_ops, comment_payout_stats) = Blocks.prepare_vops(vops, cls._head_block_date)
+
+        cls.comment_payout_ops = {**Posts.comment_payout_ops, **comment_payout_ops}
 
         for k, v in vote_ops.items():
             Votes.effective_comment_vote_op(v, cls._head_block_date)
 
+        if comment_payout_ops:
+            cls.ops_stats = Blocks.merge_ops_stats(cls.ops_stats, comment_payout_stats)
+
         cls._head_block_date = block_date
 
         return num
diff --git a/hive/indexer/sync.py b/hive/indexer/sync.py
index 878aea039..806f71844 100644
--- a/hive/indexer/sync.py
+++ b/hive/indexer/sync.py
@@ -19,7 +19,6 @@ from hive.db.db_state import DbState
 from hive.utils.timer import Timer
 from hive.steem.block.stream import MicroForkException
 
-from hive.indexer.posts import Posts
 from hive.indexer.blocks import Blocks
 from hive.indexer.accounts import Accounts
 from hive.indexer.feed_cache import FeedCache
@@ -46,7 +45,7 @@ def prepare_vops(vops_by_block):
     for blockNum, blockDict in vops_by_block.items():
         vopsList = blockDict['ops']
         date = blockDict['timestamp']
-        preparedVops[blockNum] = Blocks.prepare_vops(Posts.comment_payout_ops, vopsList, date)
+        preparedVops[blockNum] = Blocks.prepare_vops(vopsList, date)
   
     return preparedVops
 
-- 
GitLab