From 8b644a9b67f442b7ee521b7c33e977168728ddff Mon Sep 17 00:00:00 2001 From: godmodegalactus Date: Fri, 15 Dec 2023 12:01:06 +0100 Subject: [PATCH] Populating page even if block is not found --- app.py | 8 +--- block_details_database.py | 72 ++++++++++++++++++------------------ templates/block_details.html | 7 ++++ 3 files changed, 46 insertions(+), 41 deletions(-) diff --git a/app.py b/app.py index 77cd393..856a1b9 100644 --- a/app.py +++ b/app.py @@ -80,15 +80,11 @@ def recent_blocks(): def get_block(slot): this_config = config.get_config() start = time.time() - maprows = list(block_details_database.find_block_by_slotnumber(slot)) + block = block_details_database.find_block_by_slotnumber(slot) elapsed = time.time() - start if elapsed > .5: print("block_details_database.find_block_by_slotnumber() took", elapsed, "seconds") - if len(maprows): - return render_template('block_details.html', config=this_config, block=maprows[0]) - else: - return "Block not found", 404 - + return render_template('block_details.html', config=this_config, block=block) def is_slot_number(raw_string): return re.fullmatch("[0-9,]+", raw_string) is not None diff --git a/block_details_database.py b/block_details_database.py index 5d80ab7..d76b9a9 100644 --- a/block_details_database.py +++ b/block_details_database.py @@ -28,19 +28,46 @@ def find_block_by_slotnumber(slot_number: int): """, args=[slot_number]) assert len(maprows) <= 1, "Slot is primary key - find zero or one" + next_slot = ( + postgres_connection.query( + """ + SELECT + min(slot) as next_slot + FROM banking_stage_results_2.blocks + WHERE slot > %s + """, args=[slot_number]) + ) + prev_slot = ( + postgres_connection.query( + """ + SELECT + max(slot) as prev_slot + FROM banking_stage_results_2.blocks + WHERE slot < %s + """, args=[slot_number]) + ) + next_block = list(next_slot)[0]['next_slot'] + prev_block = list(prev_slot)[0]['prev_slot'] - for row in maprows: - slot = row["slot"] + if len(maprows) == 0: + block = {} + block["next_block"] = next_block + block["prev_block"] = prev_block + block["supp_infos"] = {} + return block + else: + block = list(maprows)[0] + slot = block["slot"] - row['supp_infos'] = json.loads(row['supp_infos']) + block['supp_infos'] = json.loads(block['supp_infos']) # note: sort order is undefined accountinfos = ( postgres_connection.query( """ SELECT - amb.*, - acc.account_key + amb.*, + acc.account_key FROM banking_stage_results_2.accounts_map_blocks amb INNER JOIN banking_stage_results_2.accounts acc ON acc.acc_id=amb.acc_id WHERE slot = %s @@ -62,36 +89,11 @@ def find_block_by_slotnumber(slot_number: int): account_info_expanded.append(info) account_info_expanded.sort(key=lambda acc: int(acc['cu_consumed']), reverse=True) - row["heavily_writelocked_accounts_parsed"] = [acc for acc in account_info_expanded if acc['is_write_locked'] is True] - row["heavily_readlocked_accounts_parsed"] = [acc for acc in account_info_expanded if acc['is_write_locked'] is False] - next_slot = ( - postgres_connection.query( - """ - SELECT - slot - FROM banking_stage_results_2.blocks - WHERE slot > %s ORDER BY slot LIMIT 1 - """, args=[slot]) - ) - prev_slot = ( - postgres_connection.query( - """ - SELECT - slot - FROM banking_stage_results_2.blocks - WHERE slot < %s ORDER BY slot desc LIMIT 1 - """, args=[slot]) - ) - next_block = None - for block in next_slot: - next_block = block['slot'] - - prev_block = None - for block in prev_slot: - prev_block = block['slot'] - row["next_block"] = next_block - row["prev_block"] = prev_block - return maprows + block["heavily_writelocked_accounts_parsed"] = [acc for acc in account_info_expanded if acc['is_write_locked'] is True] + block["heavily_readlocked_accounts_parsed"] = [acc for acc in account_info_expanded if acc['is_write_locked'] is False] + block["next_block"] = next_block + block["prev_block"] = prev_block + return block def is_matching_blockhash(block_hash): diff --git a/templates/block_details.html b/templates/block_details.html index 76f8944..08eb4a6 100644 --- a/templates/block_details.html +++ b/templates/block_details.html @@ -27,8 +27,13 @@ + {% if block.slot %} + {% else %} + + + {% endif %} @@ -47,6 +52,7 @@ + {% if block.slot %} @@ -79,6 +85,7 @@ + {% endif %}
Slot {{ block.slot | slotnumber }}StatusBlock Not Found
BlockhashPrevious Block {{ block.prev_block | slotnumber }}
Processed Transactions {{ block.processed_transactions | count }}Prioritization Fees p90 {{ block.supp_infos.p_90 | lamports }} micro-lamports/CU