You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(timing): instrument eth_sendUserOperation handler and validator
Adds a small `timed()` helper and wraps the 6 parallel async ops in
addToMempoolIfValid plus the validator's inner simulation RPC calls
(simulateValidation + simulateHandleOp for v0.6; simulateValidation for
v0.7). Replaces the unstructured console.log with a Pino structured log
at handler entry and adds a total-duration log on exit.
This makes wall-clock latency attributable to the slowest parallel step
and surfaces debug_traceCall / simulation RPC time, which is the typical
bottleneck for first-deploy boosted userOps (factory + initCode trace).
* refactor(timing): use performance.now() for monotonic duration measurement
Date.now() is wall-clock and can jump backward on NTP corrections or
manual clock changes, producing negative or wildly inflated durations.
performance.now() is monotonic by spec and has sub-ms resolution.
Round the float delta to whole ms for log readability — sub-ms precision
isn't useful for the network/RPC timings being measured (10s-100s of ms).
* fix(logging): emit single-line JSON when Betterstack token is unset
initProductionLogger previously fell back to initDebugLogger (pino-pretty)
when BETTER_STACK_TOKEN was missing. pino-pretty splits one structured
log across multiple lines, and Render's syslog forwarder treats each
line as a separate Betterstack record -- making the structured object
impossible to filter or correlate downstream.
Switch the no-token fallback to plain pino (single-line JSON to STDOUT)
while keeping the level + customSerializer formatters. Local-dev users
who want pretty output should keep using initDebugLogger directly.
* using betterstack endpoint for logs
0 commit comments