From e18ac4d79eb788be819eef38781dab588ca888a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Wed, 18 Sep 2024 23:45:05 +0200 Subject: [PATCH] fix(buffer): fixed issues with buffer --- packages/db/src/buffers/buffer.ts | 5 +++-- packages/db/src/buffers/event-buffer.ts | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/db/src/buffers/buffer.ts b/packages/db/src/buffers/buffer.ts index de3299be..2035223c 100644 --- a/packages/db/src/buffers/buffer.ts +++ b/packages/db/src/buffers/buffer.ts @@ -103,6 +103,7 @@ export class RedisBuffer { await cb(); } catch (e) { this.logger.error(`#2 Failed to execute callback: ${cb.name}`, e); + throw e; } } } @@ -160,14 +161,14 @@ export class RedisBuffer { }, ); } catch (error) { - this.logger.error('Failed to process queue while flushing buffer}:', { + this.logger.error('Failed to process queue while flushing buffer', { error, queueSize: items.length, }); if (items.length > 0) { // Add back items to keep - this.logger.debug('Adding all items back to buffer'); + this.logger.info('Adding all items back to buffer'); await getRedisCache().lpush( this.getKey(), ...items.map((item) => JSON.stringify(item)), diff --git a/packages/db/src/buffers/event-buffer.ts b/packages/db/src/buffers/event-buffer.ts index 1253d5d8..3920c589 100644 --- a/packages/db/src/buffers/event-buffer.ts +++ b/packages/db/src/buffers/event-buffer.ts @@ -67,7 +67,8 @@ export class EventBuffer extends RedisBuffer { return ( lastEvent.project_id === item.project_id && lastEvent.profile_id === item.profile_id && - lastEvent.path !== '' + lastEvent.path !== '' && + lastEvent.name === 'screen_view' ); }); @@ -76,6 +77,10 @@ export class EventBuffer extends RedisBuffer { item, ); + if (!event.properties) { + event.properties = {}; + } + if (lastEventWithData) { event.properties.__properties_from = lastEventWithData.id; } @@ -114,9 +119,12 @@ export class EventBuffer extends RedisBuffer { new Date(item.created_at).getTime(); const event = { ...item, + properties: { + ...(item?.properties || {}), + __duration_from: nextScreenView.id, + }, duration, }; - event.properties.__duration_from = nextScreenView.id; toInsert.add(event); } else if (hasSessionEnd) { // push last event in session if we have a session_end event