fix(telemetry): review findings
- wau/mau trailing scans run hourly and on day finalization, not every tick - exclusion lookup failures cached 30s so an st outage cannot amplify - unverified relation filter dropped; player emptiness checked in js - anonymous unauthenticated read failures no longer logged - alerts and exclusions ensure supertokens init on cold pods
This commit is contained in:
@@ -30,7 +30,7 @@ const dayFilter = (dateStr: string): string =>
|
||||
|
||||
const distinctPlayersInWindow = async (fromDate: string, toDateExclusive: string): Promise<number> => {
|
||||
const players = new Set<string>();
|
||||
const filter = `created >= '${bound(fromDate)}' && created < '${bound(toDateExclusive)}' && player != ''`;
|
||||
const filter = `created >= '${bound(fromDate)}' && created < '${bound(toDateExclusive)}'`;
|
||||
|
||||
await pbAdmin.pageCollection<{ player?: string }>("activities", { filter, fields: "player,created" }, (rows) => {
|
||||
for (const row of rows) if (row.player) players.add(row.player);
|
||||
@@ -42,7 +42,10 @@ const distinctPlayersInWindow = async (fromDate: string, toDateExclusive: string
|
||||
return players.size;
|
||||
};
|
||||
|
||||
export const runRollups = async (dateStr: string): Promise<number> => {
|
||||
export const runRollups = async (
|
||||
dateStr: string,
|
||||
opts: { trailing?: boolean } = {}
|
||||
): Promise<number> => {
|
||||
await pbAdmin.authPromise;
|
||||
|
||||
const activities = newActivityAccumulator();
|
||||
@@ -65,11 +68,16 @@ export const runRollups = async (dateStr: string): Promise<number> => {
|
||||
(rows) => accumulateClientErrors(clientErrors, rows)
|
||||
);
|
||||
|
||||
const nextDay = addDays(dateStr, 1);
|
||||
const [wau, mau] = await Promise.all([
|
||||
distinctPlayersInWindow(addDays(dateStr, -6), nextDay),
|
||||
distinctPlayersInWindow(addDays(dateStr, -29), nextDay),
|
||||
]);
|
||||
// Trailing scans re-read the full 7/30-day windows; hourly at most.
|
||||
let wau: number | undefined;
|
||||
let mau: number | undefined;
|
||||
if (opts.trailing !== false) {
|
||||
const nextDay = addDays(dateStr, 1);
|
||||
[wau, mau] = await Promise.all([
|
||||
distinctPlayersInWindow(addDays(dateStr, -6), nextDay),
|
||||
distinctPlayersInWindow(addDays(dateStr, -29), nextDay),
|
||||
]);
|
||||
}
|
||||
|
||||
const partial = dateStr >= utcDay(new Date());
|
||||
const rollups = buildDayRollups(dateStr, {
|
||||
@@ -89,11 +97,14 @@ export const runRollups = async (dateStr: string): Promise<number> => {
|
||||
return rollups.length;
|
||||
};
|
||||
|
||||
export const runScheduledRollups = async (lastRunDay?: string): Promise<string> => {
|
||||
export const runScheduledRollups = async (
|
||||
lastRunDay: string | undefined,
|
||||
opts: { trailing?: boolean } = {}
|
||||
): Promise<string> => {
|
||||
const today = utcDay(new Date());
|
||||
if (lastRunDay && lastRunDay !== today) {
|
||||
await runRollups(lastRunDay);
|
||||
await runRollups(lastRunDay, { trailing: true });
|
||||
}
|
||||
await runRollups(today);
|
||||
await runRollups(today, opts);
|
||||
return today;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user