Skip to content
This repository was archived by the owner on Mar 6, 2026. It is now read-only.

Commit 88a3b5e

Browse files
pslavovivanovyordan
authored andcommitted
Add timing counter for tap-postgres stages
1 parent c321a62 commit 88a3b5e

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

tap_postgres/sync_strategies/logical_replication.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
UPDATE_BOOKMARK_PERIOD = 1000
2323

24-
COUNTER={'U': 0, 'D': 0, 'I': 0}
24+
COUNTER={'U': 0, 'D': 0, 'I': 0, 'json_load': 0, 'read_message': 0, 'send_message': 0}
2525

2626
def get_pg_version(cur):
2727
cur.execute("SELECT version()")
@@ -274,7 +274,9 @@ def consume_message_format_2(payload, conn_info, streams_lookup, state, time_ext
274274
col_names = col_names + ['_sdc_lsn']
275275

276276
# Yield 1 record to match the API of V1
277+
send_message_start = datetime.datetime.now()
277278
yield row_to_singer_message(target_stream, col_vals, stream_version, col_names, time_extracted, stream_md_map, conn_info)
279+
COUNTER['send_message'] += (datetime.datetime.now() - send_message_start).total_seconds()
278280

279281
state = singer.write_bookmark(state,
280282
target_stream['tap_stream_id'],
@@ -354,7 +356,9 @@ def consume_message_format_1(payload, conn_info, streams_lookup, state, time_ext
354356

355357

356358
def consume_message(streams, state, msg, time_extracted, conn_info, end_lsn, message_format="1"):
359+
load_json_start = datetime.datetime.now()
357360
payload = json.loads(msg.payload)
361+
COUNTER['json_load'] += (datetime.datetime.now() - load_json_start).total_seconds()
358362
lsn = msg.data_start
359363

360364
streams_lookup = {s['tap_stream_id']: s for s in streams}
@@ -451,11 +455,15 @@ def sync_tables(conn_info, logical_streams, state, end_lsn):
451455
cur.send_feedback(flush_lsn=end_lsn)
452456
break
453457

458+
read_message_start = datetime.datetime.now()
454459
msg = cur.read_message()
460+
COUNTER['read_message'] += (datetime.datetime.now() - read_message_start).total_seconds()
455461
if msg:
456462
begin_ts = datetime.datetime.now()
457463
if msg.data_start > end_lsn:
458464
LOGGER.info("gone past end_lsn %s for run. breaking", end_lsn)
465+
if not last_lsn_processed:
466+
cur.send_feedback(flush_lsn=end_lsn)
459467
break
460468

461469
state = consume_message(logical_streams, state, msg, time_extracted,

0 commit comments

Comments
 (0)