Skip to content

Commit eb07648

Browse files
committed
Parse RBReceived events
1 parent deadb51 commit eb07648

File tree

1 file changed

+62
-2
lines changed

1 file changed

+62
-2
lines changed

ui/src/components/Sim/hooks/useLokiWebSocket.ts

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
IServerMessage,
44
EServerMessageType,
55
IRankingBlockSent,
6+
IRankingBlockReceived,
67
} from "@/components/Sim/types";
78
import { useRef } from "react";
89

@@ -56,7 +57,7 @@ const parseBlockFetchServerLog = (
5657
const message: IRankingBlockSent = {
5758
type: EServerMessageType.RBSent,
5859
slot: 0, // FIXME: Use proper slot number
59-
id: `rb-blockfetch-${logData.block.substring(0, 8)}`,
60+
id: `rb-${logData.block.substring(0, 8)}`,
6061
sender,
6162
recipient,
6263
};
@@ -121,6 +122,60 @@ const parseUpstreamNodeLog = (
121122
return null;
122123
};
123124

125+
const parseCompletedBlockFetchLog = (
126+
streamLabels: any,
127+
timestamp: number,
128+
logLine: string,
129+
): IServerMessage | null => {
130+
try {
131+
const logData = JSON.parse(logLine);
132+
133+
// Handle CompletedBlockFetch kind
134+
if (
135+
logData.kind === "CompletedBlockFetch" &&
136+
logData.peer &&
137+
logData.block
138+
) {
139+
// Extract recipient from stream labels (process name)
140+
const recipient = streamLabels.process;
141+
142+
// Parse connection to extract sender
143+
// connectionId format: "127.0.0.1:3003 127.0.0.1:3002"
144+
const connectionId = logData.peer.connectionId;
145+
let sender = "Node0"; // fallback
146+
if (connectionId) {
147+
// Split connectionId to get both endpoints
148+
const endpoints = connectionId.split(" ");
149+
if (endpoints.length === 2) {
150+
const senderEndpoint = endpoints[1];
151+
sender = HOST_PORT_TO_NODE[senderEndpoint] || sender;
152+
}
153+
}
154+
155+
const message: IRankingBlockReceived = {
156+
type: EServerMessageType.RBReceived,
157+
slot: 0, // FIXME: Use proper slot number
158+
id: `rb-${logData.block.substring(0, 8)}`,
159+
sender,
160+
recipient,
161+
};
162+
163+
return {
164+
time_s: timestamp,
165+
message,
166+
};
167+
}
168+
} catch (error) {
169+
console.warn(
170+
"Failed to parse CompletedBlockFetch log line:",
171+
logLine,
172+
error,
173+
);
174+
}
175+
176+
return null;
177+
};
178+
124179
// Query configurations
125180
const QUERY_CONFIGS: QueryConfig[] = [
126181
{
@@ -131,6 +186,11 @@ const QUERY_CONFIGS: QueryConfig[] = [
131186
query: '{service="cardano-node", process="UpstreamNode"} |= `MsgBlock`',
132187
parser: parseUpstreamNodeLog,
133188
},
189+
{
190+
query:
191+
'{service="cardano-node", ns="BlockFetch.Client.CompletedBlockFetch"}',
192+
parser: parseCompletedBlockFetchLog,
193+
},
134194
];
135195

136196
function connectLokiWebSockets(lokiHost: string, dispatch: any): () => void {
@@ -179,7 +239,7 @@ function connectLokiWebSockets(lokiHost: string, dispatch: any): () => void {
179239
logLine,
180240
);
181241
if (event) {
182-
console.debug("Parsed", event.time_s, event.message);
242+
console.warn("Parsed", event.time_s, event.message);
183243
events.push(event);
184244
}
185245
},

0 commit comments

Comments
 (0)