Skip to content

Commit 87cbe92

Browse files
authored
imrpoved logging (#5448)
1 parent 5611e3e commit 87cbe92

File tree

3 files changed

+44
-8
lines changed

3 files changed

+44
-8
lines changed

worker/src/lib/ai-gateway/AttemptBuilder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export class AttemptBuilder {
170170
}
171171

172172
const providerData = providerDataResult.data;
173-
173+
174174
// Build BYOK and PTB attempts in parallel since they're independent
175175
const [byokAttempts, ptbAttempts] = await Promise.all([
176176
this.buildByokAttempts(

worker/src/lib/durable-objects/Wallet.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,11 @@ export class Wallet extends DurableObject<Env> {
535535
orgId: string,
536536
escrowId: string,
537537
actualCost: number
538-
): { clickhouseLastCheckedAt: number; remainingBalance: number } {
538+
): {
539+
clickhouseLastCheckedAt: number;
540+
remainingBalance: number;
541+
staleEscrowsCleared?: number;
542+
} {
539543
const actualCostScaled = actualCost * SCALE_FACTOR;
540544
if (actualCostScaled < 0) {
541545
throw new Error("actualCost cannot be negative");
@@ -595,15 +599,31 @@ export class Wallet extends DurableObject<Env> {
595599
(totalCreditsPurchased - totalDebits - totalEscrow) / SCALE_FACTOR;
596600

597601
// Probabilistic cleanup: 1% chance to clean stale escrows
602+
let staleEscrowsCleared: number | undefined;
598603
if (Math.random() < 0.01) {
599604
const oneHourAgo = Date.now() - 60 * 60 * 1000;
600-
this.ctx.storage.sql.exec(
601-
"DELETE FROM escrows WHERE created_at < ?",
602-
oneHourAgo
603-
);
605+
// Count before delete
606+
const countBefore = this.ctx.storage.sql
607+
.exec<{ count: number }>(
608+
"SELECT COUNT(*) as count FROM escrows WHERE created_at < ?",
609+
oneHourAgo
610+
)
611+
.one().count;
612+
613+
if (countBefore > 0) {
614+
this.ctx.storage.sql.exec(
615+
"DELETE FROM escrows WHERE created_at < ?",
616+
oneHourAgo
617+
);
618+
staleEscrowsCleared = countBefore;
619+
}
604620
}
605621

606-
return { clickhouseLastCheckedAt: result.checked_at, remainingBalance };
622+
return {
623+
clickhouseLastCheckedAt: result.checked_at,
624+
remainingBalance,
625+
staleEscrowsCleared,
626+
};
607627
});
608628
}
609629

worker/src/lib/managers/WalletManager.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export class WalletManager {
6969
}
7070
const escrowId = escrowResult.data.reservedEscrowId;
7171

72-
const { clickhouseLastCheckedAt, remainingBalance } =
72+
const { clickhouseLastCheckedAt, remainingBalance, staleEscrowsCleared } =
7373
await this.walletStub.finalizeEscrow(
7474
organizationId,
7575
escrowId,
@@ -80,6 +80,22 @@ export class WalletManager {
8080
const walletKVSync = new WalletKVSync(this.env.WALLET_KV, organizationId);
8181
await walletKVSync.storeWalletState(remainingBalance);
8282

83+
// Log stale escrow cleanup to DataDog
84+
if (staleEscrowsCleared !== undefined && staleEscrowsCleared > 0) {
85+
const tracer = createDataDogTracer(this.env);
86+
tracer.startTrace(
87+
"ptb.stale_escrows_cleared",
88+
"escrow_cleanup",
89+
{
90+
org_id: organizationId,
91+
escrows_cleared: String(staleEscrowsCleared),
92+
},
93+
true // forceSample - always log cleanup events
94+
);
95+
tracer.finishTrace();
96+
this.ctx.waitUntil(tracer.sendTrace());
97+
}
98+
8399
if (
84100
cost === undefined &&
85101
statusCode >= 200 &&

0 commit comments

Comments
 (0)