Skip to content

Commit 21b0355

Browse files
chore: better store logs (#3103)
* simple change better waku store debug logs with some timing info * dbconn: give some more name clarity and more log detail
1 parent c3756e3 commit 21b0355

File tree

3 files changed

+42
-22
lines changed

3 files changed

+42
-22
lines changed

waku/common/databases/db_postgres/dbconn.nim

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ proc dbConnQuery*(
230230
return err("error in dbConnQuery calling sendQuery: " & $error)
231231

232232
let sendDuration = getTime().toUnixFloat() - queryStartTime
233-
query_time_secs.set(sendDuration, [querySummary, "sendQuery"])
233+
query_time_secs.set(sendDuration, [querySummary, "sendToDBQuery"])
234234

235235
queryStartTime = getTime().toUnixFloat()
236236

@@ -246,9 +246,10 @@ proc dbConnQuery*(
246246
debug "dbConnQuery",
247247
requestId,
248248
query = $query,
249+
args,
249250
querySummary,
250-
waitDurationSecs = waitDuration,
251-
sendDurationSecs = sendDuration
251+
waitDbQueryDurationSecs = waitDuration,
252+
sendToDBDurationSecs = sendDuration
252253

253254
return ok()
254255

@@ -270,7 +271,7 @@ proc dbConnQueryPrepared*(
270271
return err("error in dbConnQueryPrepared calling sendQuery: " & $error)
271272

272273
let sendDuration = getTime().toUnixFloat() - queryStartTime
273-
query_time_secs.set(sendDuration, [stmtName, "sendQuery"])
274+
query_time_secs.set(sendDuration, [stmtName, "sendToDBQuery"])
274275

275276
queryStartTime = getTime().toUnixFloat()
276277

@@ -286,7 +287,8 @@ proc dbConnQueryPrepared*(
286287
debug "dbConnQueryPrepared",
287288
requestId,
288289
stmtName,
289-
waitDurationSecs = waitDuration,
290-
sendDurationSecs = sendDuration
290+
paramValues,
291+
waitDbQueryDurationSecs = waitDuration,
292+
sendToDBDurationSecs = sendDuration
291293

292294
return ok()

waku/waku_store/protocol.nim

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ proc initProtocolHandler(self: WakuStore) =
9191
proc handler(conn: Connection, proto: string) {.async, gcsafe, closure.} =
9292
var successfulQuery = false ## only consider the correct queries in metrics
9393
var resBuf: StoreResp
94+
var queryDuration: float
9495
self.requestRateLimiter.checkUsageLimit(WakuStoreCodec, conn):
9596
let readRes = catch:
9697
await conn.readLp(DefaultMaxRpcSize.int)
@@ -107,7 +108,7 @@ proc initProtocolHandler(self: WakuStore) =
107108

108109
resBuf = await self.handleQueryRequest(conn.peerId, reqBuf)
109110

110-
let queryDuration = getTime().toUnixFloat() - queryStartTime
111+
queryDuration = getTime().toUnixFloat() - queryStartTime
111112
waku_store_time_seconds.set(queryDuration, ["query-db-time"])
112113
successfulQuery = true
113114
do:
@@ -124,10 +125,13 @@ proc initProtocolHandler(self: WakuStore) =
124125
error "Connection write error", error = writeRes.error.msg
125126
return
126127

127-
debug "after sending response", requestId = resBuf.requestId
128128
if successfulQuery:
129129
let writeDuration = getTime().toUnixFloat() - writeRespStartTime
130130
waku_store_time_seconds.set(writeDuration, ["send-store-resp-time"])
131+
debug "after sending response",
132+
requestId = resBuf.requestId,
133+
queryDurationSecs = queryDuration,
134+
writeStreamDurationSecs = writeDuration
131135

132136
waku_service_network_bytes.inc(
133137
amount = resBuf.resp.len().int64, labelValues = [WakuStoreCodec, "out"]

waku/waku_store_legacy/protocol.nim

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,23 @@ type WakuStore* = ref object of LPProtocol
3737

3838
## Protocol
3939

40+
type StoreResp = tuple[resp: seq[byte], requestId: string]
41+
4042
proc handleLegacyQueryRequest(
4143
self: WakuStore, requestor: PeerId, raw_request: seq[byte]
42-
): Future[seq[byte]] {.async.} =
44+
): Future[StoreResp] {.async.} =
4345
let decodeRes = HistoryRPC.decode(raw_request)
4446
if decodeRes.isErr():
45-
error "failed to decode rpc", peerId = requestor
47+
error "failed to decode rpc", peerId = requestor, error = $decodeRes.error
4648
waku_legacy_store_errors.inc(labelValues = [decodeRpcFailure])
47-
# TODO: Return (BAD_REQUEST, cause: "decode rpc failed")
48-
return
49+
return (newSeq[byte](), "failed to decode rpc")
4950

5051
let reqRpc = decodeRes.value
5152

5253
if reqRpc.query.isNone():
5354
error "empty query rpc", peerId = requestor, requestId = reqRpc.requestId
5455
waku_legacy_store_errors.inc(labelValues = [emptyRpcQueryFailure])
55-
# TODO: Return (BAD_REQUEST, cause: "empty query")
56-
return
56+
return (newSeq[byte](), "empty query rpc")
5757

5858
let requestId = reqRpc.requestId
5959
var request = reqRpc.query.get().toAPI()
@@ -72,21 +72,30 @@ proc handleLegacyQueryRequest(
7272

7373
let error = HistoryError(kind: HistoryErrorKind.UNKNOWN).toRPC()
7474
let response = HistoryResponseRPC(error: error)
75-
return HistoryRPC(requestId: requestId, response: some(response)).encode().buffer
75+
return (
76+
HistoryRPC(requestId: requestId, response: some(response)).encode().buffer,
77+
requestId,
78+
)
7679

7780
if responseRes.isErr():
7881
error "history query failed",
7982
peerId = requestor, requestId = requestId, error = responseRes.error
8083

8184
let response = responseRes.toRPC()
82-
return HistoryRPC(requestId: requestId, response: some(response)).encode().buffer
85+
return (
86+
HistoryRPC(requestId: requestId, response: some(response)).encode().buffer,
87+
requestId,
88+
)
8389

8490
let response = responseRes.toRPC()
8591

8692
info "sending history response",
8793
peerId = requestor, requestId = requestId, messages = response.messages.len
8894

89-
return HistoryRPC(requestId: requestId, response: some(response)).encode().buffer
95+
return (
96+
HistoryRPC(requestId: requestId, response: some(response)).encode().buffer,
97+
requestId,
98+
)
9099

91100
proc initProtocolHandler(ws: WakuStore) =
92101
let rejectResponseBuf = HistoryRPC(
@@ -103,7 +112,8 @@ proc initProtocolHandler(ws: WakuStore) =
103112

104113
proc handler(conn: Connection, proto: string) {.async, closure.} =
105114
var successfulQuery = false ## only consider the correct queries in metrics
106-
var resBuf: seq[byte]
115+
var resBuf: StoreResp
116+
var queryDuration: float
107117
ws.requestRateLimiter.checkUsageLimit(WakuLegacyStoreCodec, conn):
108118
let readRes = catch:
109119
await conn.readLp(DefaultMaxRpcSize.int)
@@ -118,17 +128,17 @@ proc initProtocolHandler(ws: WakuStore) =
118128

119129
let queryStartTime = getTime().toUnixFloat()
120130
resBuf = await ws.handleLegacyQueryRequest(conn.peerId, reqBuf)
121-
let queryDuration = getTime().toUnixFloat() - queryStartTime
131+
queryDuration = getTime().toUnixFloat() - queryStartTime
122132
waku_legacy_store_time_seconds.set(queryDuration, ["query-db-time"])
123133
successfulQuery = true
124134
do:
125135
debug "Legacy store query request rejected due rate limit exceeded",
126136
peerId = conn.peerId, limit = $ws.requestRateLimiter.setting
127-
resBuf = rejectResponseBuf
137+
resBuf = (rejectResponseBuf, "rejected")
128138

129139
let writeRespStartTime = getTime().toUnixFloat()
130140
let writeRes = catch:
131-
await conn.writeLp(resBuf)
141+
await conn.writeLp(resBuf.resp)
132142

133143
if writeRes.isErr():
134144
error "Connection write error", error = writeRes.error.msg
@@ -137,9 +147,13 @@ proc initProtocolHandler(ws: WakuStore) =
137147
if successfulQuery:
138148
let writeDuration = getTime().toUnixFloat() - writeRespStartTime
139149
waku_legacy_store_time_seconds.set(writeDuration, ["send-store-resp-time"])
150+
debug "after sending response",
151+
requestId = resBuf.requestId,
152+
queryDurationSecs = queryDuration,
153+
writeStreamDurationSecs = writeDuration
140154

141155
waku_service_network_bytes.inc(
142-
amount = resBuf.len().int64, labelValues = [WakuLegacyStoreCodec, "out"]
156+
amount = resBuf.resp.len().int64, labelValues = [WakuLegacyStoreCodec, "out"]
143157
)
144158

145159
ws.handler = handler

0 commit comments

Comments
 (0)