omar
omar
CDCloudflare Developers
Created by omar on 2/20/2025 in #workers-help
Duplicate log from RPC
No description
1 replies
CDCloudflare Developers
Created by omar on 2/1/2025 in #workers-help
Log push sends a single log line from an RPC service twice
Any console.log from this RPC stub gets sent twice to my log sink
class Payments extends RpcTarget {
logger: Logger;

constructor(ctx: CallerContext) {
super();
this.logger = new ConsoleLogger({
requestId: ctx.requestId,
application: "payments",
defaultFields: {
rpcClient: ctx.application
}
})
}

async queryPaymentStatus(data: any) {
... // this log is received twice in my http log sink (always)
this.logger.info("tsq completed successfully", {
event: "event.payments.tsq",
...data
});
...
}
}
class Payments extends RpcTarget {
logger: Logger;

constructor(ctx: CallerContext) {
super();
this.logger = new ConsoleLogger({
requestId: ctx.requestId,
application: "payments",
defaultFields: {
rpcClient: ctx.application
}
})
}

async queryPaymentStatus(data: any) {
... // this log is received twice in my http log sink (always)
this.logger.info("tsq completed successfully", {
event: "event.payments.tsq",
...data
});
...
}
}
1 replies
CDCloudflare Developers
Created by omar on 1/31/2025 in #workers-help
Getting DataCloneError while using instance of a class as return value of RPC method
Error message: DataCloneError: Could not serialize object of type "st". This type does not support serialization. Hono route
app.get("/pay/:id", async (c) => {
const id = c.req.param("id");
const services = c.get("services");

const paymentService = await c.env.PAYMENTS.newPaymentService(services.logger);
try {
const response = await paymentService.queryPaymentStatus({
pspReference: id,
reference: id,
sessionId: id
});

return c.json({
status: "successful",
message: "api request completed",
rpcResponse: response
})
} finally {
paymentService[Symbol.dispose]()
}
})
app.get("/pay/:id", async (c) => {
const id = c.req.param("id");
const services = c.get("services");

const paymentService = await c.env.PAYMENTS.newPaymentService(services.logger);
try {
const response = await paymentService.queryPaymentStatus({
pspReference: id,
reference: id,
sessionId: id
});

return c.json({
status: "successful",
message: "api request completed",
rpcResponse: response
})
} finally {
paymentService[Symbol.dispose]()
}
})
RPC class
export class PaymentService extends WorkerEntrypoint<Env> {
fetch(request: Request): Response | Promise<Response> {
return new Response("Hello from payments RPC")
}

async newPaymentService(logger: Logger) {
initCache(this.ctx, this.env);
return new Payments(logger);
}
}
export class PaymentService extends WorkerEntrypoint<Env> {
fetch(request: Request): Response | Promise<Response> {
return new Response("Hello from payments RPC")
}

async newPaymentService(logger: Logger) {
initCache(this.ctx, this.env);
return new Payments(logger);
}
}
11 replies