citusdata / citusdata/citus_docs

How to identify origin of worker sessions

Open
#613 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
CSS
Stars
58
Forks
60
PR merge metrics
No merged PRs in 30d

Description

## Communication goals (e.g. detailed howto vs orientation)

Sai asked, "is there a way to identify the worker sessions (generated by say a router query) given a coordinator session?"

### Good locations for content in docs structure

https://docs.citusdata.com/en/v7.2/admin_guide/cluster_management.html?highlight=diagnostic#useful-diagnostic-queries

## How does this work? (devs)

### Example sql

Sai cooked up these queries:

```sql
CREATE TEMP TABLE transactions_on_workers
AS
SELECT
nodename,
split_part(txn_on_worker, '$', 1) process_id,
split_part(txn_on_worker, '$', 2) initiator_node_identifier,
split_part(txn_on_worker, '$', 3) transaction_number,
split_part(txn_on_worker, '$', 4) transaction_stamp
FROM (
SELECT
UNNEST(result::text [ ]) txn_on_worker,
nodename
FROM
run_command_on_workers ($cmd$
SELECT
array_agg(process_id || '$' || initiator_node_identifier || '$' || transaction_number || '$' || transaction_stamp)
FROM
get_all_active_transactions () $cmd$)) a;

SELECT
tw.nodename,
tm.process_id coordinator_process,
tw.process_id worker_process
FROM
get_all_active_transactions () tm
JOIN transactions_on_workers tw ON tm.initiator_node_identifier::text = tw.initiator_node_identifier::text
AND tm.transaction_number::text = tw.transaction_number::text
AND tm.transaction_stamp::text = tw.transaction_stamp::text;

-- If you want it more realtime you could remove the TEMP TABLE and do a subquery join.
```

### Corner cases, gotchas

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.