fix: overall perf improvements
* fix: ignore private ips * fix: performance related fixes * fix: simply event buffer * fix: default to 1 events queue shard * add: cleanup scripts * fix: comments * fix comments * fix * fix: groupmq * wip * fix: sync cachable * remove cluster names and add it behind env flag (if someone want to scale) * fix * wip * better logger * remove reqid and user agent * fix lock * remove wait_for_async_insert
This commit is contained in:
committed by
GitHub
parent
38cc53890a
commit
da59622dce
@@ -18,9 +18,7 @@ import {
|
||||
} from '@openpanel/db';
|
||||
import type { ILogger } from '@openpanel/logger';
|
||||
import type { EventsQueuePayloadIncomingEvent } from '@openpanel/queue';
|
||||
import type { Job } from 'bullmq';
|
||||
import * as R from 'ramda';
|
||||
import { omit } from 'ramda';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
|
||||
const GLOBAL_PROPERTIES = ['__path', '__referrer'];
|
||||
@@ -33,10 +31,9 @@ const merge = <A, B>(a: Partial<A>, b: Partial<B>): A & B =>
|
||||
|
||||
async function createEventAndNotify(
|
||||
payload: IServiceCreateEventPayload,
|
||||
jobData: Job<EventsQueuePayloadIncomingEvent>['data']['payload'],
|
||||
logger: ILogger,
|
||||
) {
|
||||
logger.info('Creating event', { event: payload, jobData });
|
||||
logger.info('Creating event', { event: payload });
|
||||
const [event] = await Promise.all([
|
||||
createEvent(payload),
|
||||
checkNotificationRulesForEvent(payload).catch(() => {}),
|
||||
@@ -45,16 +42,7 @@ async function createEventAndNotify(
|
||||
}
|
||||
|
||||
export async function incomingEvent(
|
||||
job: Job<EventsQueuePayloadIncomingEvent>,
|
||||
token?: string,
|
||||
) {
|
||||
return incomingEventPure(job.data.payload, job, token);
|
||||
}
|
||||
|
||||
export async function incomingEventPure(
|
||||
jobPayload: EventsQueuePayloadIncomingEvent['payload'],
|
||||
job?: Job<EventsQueuePayloadIncomingEvent>,
|
||||
token?: string,
|
||||
) {
|
||||
const {
|
||||
geo,
|
||||
@@ -63,6 +51,7 @@ export async function incomingEventPure(
|
||||
projectId,
|
||||
currentDeviceId,
|
||||
previousDeviceId,
|
||||
uaInfo: _uaInfo,
|
||||
} = jobPayload;
|
||||
const properties = body.properties ?? {};
|
||||
const reqId = headers['request-id'] ?? 'unknown';
|
||||
@@ -93,18 +82,17 @@ export async function incomingEventPure(
|
||||
const userAgent = headers['user-agent'];
|
||||
const sdkName = headers['openpanel-sdk-name'];
|
||||
const sdkVersion = headers['openpanel-sdk-version'];
|
||||
const uaInfo = parseUserAgent(userAgent, properties);
|
||||
// TODO: Remove both user-agent and parseUserAgent
|
||||
const uaInfo = _uaInfo ?? parseUserAgent(userAgent, properties);
|
||||
|
||||
const baseEvent = {
|
||||
name: body.name,
|
||||
profileId,
|
||||
projectId,
|
||||
properties: omit(GLOBAL_PROPERTIES, {
|
||||
properties: R.omit(GLOBAL_PROPERTIES, {
|
||||
...properties,
|
||||
__user_agent: userAgent,
|
||||
__hash: hash,
|
||||
__query: query,
|
||||
__reqId: reqId,
|
||||
}),
|
||||
createdAt,
|
||||
duration: 0,
|
||||
@@ -161,7 +149,7 @@ export async function incomingEventPure(
|
||||
origin: screenView?.origin ?? baseEvent.origin,
|
||||
};
|
||||
|
||||
return createEventAndNotify(payload as IServiceEvent, jobPayload, logger);
|
||||
return createEventAndNotify(payload as IServiceEvent, logger);
|
||||
}
|
||||
|
||||
const sessionEnd = await getSessionEnd({
|
||||
@@ -197,7 +185,7 @@ export async function incomingEventPure(
|
||||
});
|
||||
}
|
||||
|
||||
const event = await createEventAndNotify(payload, jobPayload, logger);
|
||||
const event = await createEventAndNotify(payload, logger);
|
||||
|
||||
if (!sessionEnd) {
|
||||
logger.info('Creating session end job', { event: payload });
|
||||
|
||||
Reference in New Issue
Block a user