From fad9f5eb1753e0fcb199324e7b20685882cd81f8 Mon Sep 17 00:00:00 2001 From: Zach Waterfield Date: Mon, 25 Mar 2024 16:05:33 -0600 Subject: [PATCH 01/10] feat: add reverse proxy checker (#21030) * Add reverse proper checker * Create reverseProxyCheckerLogic.test.ts * Update reverseProxyCheckerLogic.test.ts * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Hook up reverseProxyCheckerLogic to the quick start menu task * Add a timestamp so it doesn't request too often --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../panels/activation/activationLogic.ts | 9 ++- .../reverseProxyCheckerLogic.test.ts | 63 +++++++++++++++++++ .../reverseProxyCheckerLogic.ts | 49 +++++++++++++++ .../VersionChecker/versionCheckerLogic.ts | 2 +- 4 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.test.ts create mode 100644 frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.ts diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/activation/activationLogic.ts b/frontend/src/layout/navigation-3000/sidepanel/panels/activation/activationLogic.ts index e8afd00aea1ed..b0be99d68f438 100644 --- a/frontend/src/layout/navigation-3000/sidepanel/panels/activation/activationLogic.ts +++ b/frontend/src/layout/navigation-3000/sidepanel/panels/activation/activationLogic.ts @@ -2,6 +2,7 @@ import { actions, connect, events, kea, listeners, path, reducers, selectors } f import { loaders } from 'kea-loaders' import { router } from 'kea-router' import api from 'lib/api' +import { reverseProxyCheckerLogic } from 'lib/components/ReverseProxyChecker/reverseProxyCheckerLogic' import { permanentlyMount } from 'lib/utils/kea-logic-builders' import posthog from 'posthog-js' import { membersLogic } from 'scenes/organization/membersLogic' @@ -58,6 +59,8 @@ export const activationLogic = kea([ ['insights'], dashboardsModel, ['rawDashboards'], + reverseProxyCheckerLogic, + ['hasReverseProxy'], ], actions: [ inviteLogic, @@ -193,6 +196,7 @@ export const activationLogic = kea([ s.customEventsCount, s.installedPlugins, s.currentTeamSkippedTasks, + s.hasReverseProxy, ], ( currentTeam, @@ -202,7 +206,8 @@ export const activationLogic = kea([ dashboards, customEventsCount, installedPlugins, - skippedTasks + skippedTasks, + hasReverseProxy ) => { const tasks: ActivationTaskType[] = [] for (const task of Object.values(ActivationTasks)) { @@ -286,7 +291,7 @@ export const activationLogic = kea([ id: ActivationTasks.SetUpReverseProxy, name: 'Set up a reverse proxy', description: 'Send your events from your own domain to avoid tracking blockers', - completed: false, + completed: hasReverseProxy || false, canSkip: true, skipped: skippedTasks.includes(ActivationTasks.SetUpReverseProxy), url: 'https://posthog.com/docs/advanced/proxy', diff --git a/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.test.ts b/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.test.ts new file mode 100644 index 0000000000000..5ea635b7e4f90 --- /dev/null +++ b/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.test.ts @@ -0,0 +1,63 @@ +import { expectLogic } from 'kea-test-utils' + +import { useMocks } from '~/mocks/jest' +import { initKeaTests } from '~/test/init' + +import { reverseProxyCheckerLogic } from './reverseProxyCheckerLogic' + +const hasReverseProxyValues = [['https://proxy.example.com'], [null]] +const doesNotHaveReverseProxyValues = [[null], [null]] + +const useMockedValues = (results: (string | null)[][]): void => { + useMocks({ + post: { + '/api/projects/:team/query': () => [ + 200, + { + results, + }, + ], + }, + }) +} + +describe('reverseProxyCheckerLogic', () => { + let logic: ReturnType + + beforeEach(() => { + initKeaTests() + localStorage.clear() + logic = reverseProxyCheckerLogic() + }) + + afterEach(() => { + logic.unmount() + }) + + it('should not have a reverse proxy set - when no data', async () => { + useMockedValues([]) + + logic.mount() + await expectLogic(logic).toFinishAllListeners().toMatchValues({ + hasReverseProxy: false, + }) + }) + + it('should not have a reverse proxy set - when data with no lib_custom_api_host values', async () => { + useMockedValues(doesNotHaveReverseProxyValues) + + logic.mount() + await expectLogic(logic).toFinishAllListeners().toMatchValues({ + hasReverseProxy: false, + }) + }) + + it('should have a reverse proxy set', async () => { + useMockedValues(hasReverseProxyValues) + + logic.mount() + await expectLogic(logic).toFinishAllListeners().toMatchValues({ + hasReverseProxy: true, + }) + }) +}) diff --git a/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.ts b/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.ts new file mode 100644 index 0000000000000..6b945e5c94c48 --- /dev/null +++ b/frontend/src/lib/components/ReverseProxyChecker/reverseProxyCheckerLogic.ts @@ -0,0 +1,49 @@ +import { afterMount, kea, path, reducers } from 'kea' +import { loaders } from 'kea-loaders' +import api from 'lib/api' + +import { HogQLQuery, NodeKind } from '~/queries/schema' +import { hogql } from '~/queries/utils' + +import type { reverseProxyCheckerLogicType } from './reverseProxyCheckerLogicType' + +const CHECK_INTERVAL_MS = 1000 * 60 * 60 // 1 hour + +export const reverseProxyCheckerLogic = kea([ + path(['components', 'ReverseProxyChecker', 'reverseProxyCheckerLogic']), + loaders({ + hasReverseProxy: [ + false as boolean | null, + { + loadHasReverseProxy: async () => { + const query: HogQLQuery = { + kind: NodeKind.HogQLQuery, + query: hogql`SELECT properties.$lib_custom_api_host AS lib_custom_api_host + FROM events + WHERE timestamp >= now() - INTERVAL 1 DAY + AND timestamp <= now() + ORDER BY timestamp DESC + limit 10`, + } + + const res = await api.query(query) + return !!res.results?.find((x) => !!x[0]) + }, + }, + ], + }), + reducers({ + lastCheckedTimestamp: [ + 0, + { persist: true }, + { + loadHasReverseProxySuccess: () => Date.now(), + }, + ], + }), + afterMount(({ actions, values }) => { + if (values.lastCheckedTimestamp < Date.now() - CHECK_INTERVAL_MS) { + actions.loadHasReverseProxy() + } + }), +]) diff --git a/frontend/src/lib/components/VersionChecker/versionCheckerLogic.ts b/frontend/src/lib/components/VersionChecker/versionCheckerLogic.ts index cc26d0eff45fc..ce53ba46d5db8 100644 --- a/frontend/src/lib/components/VersionChecker/versionCheckerLogic.ts +++ b/frontend/src/lib/components/VersionChecker/versionCheckerLogic.ts @@ -7,7 +7,7 @@ import { hogql } from '~/queries/utils' import type { versionCheckerLogicType } from './versionCheckerLogicType' -const CHECK_INTERVAL_MS = 1000 * 60 * 60 // 6 hour +const CHECK_INTERVAL_MS = 1000 * 60 * 60 * 6 // 6 hour export type SDKVersion = { version: string From 93f47ade2923b0d7f1c097cb836749a71ac9aaac Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Tue, 26 Mar 2024 12:28:50 +0100 Subject: [PATCH 02/10] feat(insights): Warn about WAU/MAU in total value trends (#21067) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(insights): Warn about WAU/MAU in total value trends * Update trends.cy.ts * Reword warning * Reword warning more * Update frontend/src/scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow.tsx Co-authored-by: Thomas Obermüller * Update UI snapshots for `chromium` (2) * Update query snapshots * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * Update query snapshots * Update UI snapshots for `chromium` (2) --------- Co-authored-by: Thomas Obermüller Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- cypress/e2e/trends.cy.ts | 34 +++++++++----- frontend/src/lib/constants.tsx | 26 ++++++---- .../lib/lemon-ui/LemonSelect/LemonSelect.tsx | 1 + frontend/src/queries/schema.json | 10 ++-- frontend/src/queries/schema.ts | 3 ++ .../filters/ActionFilter/ActionFilter.tsx | 14 +++++- .../ActionFilterRow/ActionFilterRow.tsx | 47 ++++++++++++++----- frontend/src/types.ts | 13 +++-- posthog/schema.py | 8 ++-- 9 files changed, 109 insertions(+), 47 deletions(-) diff --git a/cypress/e2e/trends.cy.ts b/cypress/e2e/trends.cy.ts index a1aa9d31a5594..36809958d7c25 100644 --- a/cypress/e2e/trends.cy.ts +++ b/cypress/e2e/trends.cy.ts @@ -24,7 +24,7 @@ describe('Trends', () => { cy.get('[data-attr=trend-element-subject-1]').click() cy.get('[data-attr=taxonomic-tab-actions]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click().type('home') - cy.contains('Hogflix homepage view').click({ force: true }) + cy.contains('Hogflix homepage view').click() // then cy.get('[data-attr=trend-line-graph]').should('exist') @@ -66,15 +66,15 @@ describe('Trends', () => { it('Apply specific filter on default pageview event', () => { cy.get('[data-attr=trend-element-subject-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click().type('Pageview') - cy.get('.taxonomic-infinite-list').find('.taxonomic-list-row').contains('Pageview').click({ force: true }) + cy.get('.taxonomic-infinite-list').find('.taxonomic-list-row').contains('Pageview').click() cy.get('[data-attr=trend-element-subject-0]').should('have.text', 'Pageview') // Apply a property filter cy.get('[data-attr=show-prop-filter-0]').click() cy.get('[data-attr=property-select-toggle-0]').click() - cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) + cy.get('[data-attr=prop-filter-event_properties-1]').click() - cy.get('[data-attr=prop-val]').click({ force: true }) + cy.get('[data-attr=prop-val]').click() // cypress is odd and even though when a human clicks this the right dropdown opens // in the test that doesn't happen cy.get('body').then(($body) => { @@ -88,14 +88,14 @@ describe('Trends', () => { it('Apply 1 overall filter', () => { cy.get('[data-attr=trend-element-subject-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click().type('Pageview') - cy.get('.taxonomic-infinite-list').find('.taxonomic-list-row').contains('Pageview').click({ force: true }) + cy.get('.taxonomic-infinite-list').find('.taxonomic-list-row').contains('Pageview').click() cy.get('[data-attr=trend-element-subject-0]').should('have.text', 'Pageview') cy.get('[data-attr$=add-filter-group]').click() cy.get('[data-attr=property-select-toggle-0]').click() cy.get('[data-attr=taxonomic-filter-searchfield]').click() - cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) - cy.get('[data-attr=prop-val]').click({ force: true }) + cy.get('[data-attr=prop-filter-event_properties-1]').click() + cy.get('[data-attr=prop-val]').click() // cypress is odd and even though when a human clicks this the right dropdown opens // in the test that doesn't happen cy.get('body').then(($body) => { @@ -103,7 +103,7 @@ describe('Trends', () => { cy.get('[data-attr=taxonomic-value-select]').click() } }) - cy.get('[data-attr=prop-val-0]').click({ force: true }) + cy.get('[data-attr=prop-val-0]').click() cy.get('[data-attr=trend-line-graph]', { timeout: 8000 }).should('exist') }) @@ -117,14 +117,14 @@ describe('Trends', () => { it('Apply pie filter', () => { cy.get('[data-attr=chart-filter]').click() - cy.get('.Popover').find('.LemonButton').contains('Pie').click({ force: true }) + cy.get('.Popover').find('.LemonButton').contains('Pie').click() cy.get('[data-attr=trend-pie-graph]').should('exist') }) it('Apply table filter', () => { cy.get('[data-attr=chart-filter]').click() - cy.get('.Popover').find('.LemonButton').contains('Table').click({ force: true }) + cy.get('.Popover').find('.LemonButton').contains('Table').click() cy.get('[data-attr=insights-table-graph]').should('exist') @@ -144,7 +144,7 @@ describe('Trends', () => { it('Apply property breakdown', () => { cy.get('[data-attr=add-breakdown-button]').click() - cy.get('[data-attr=prop-filter-event_properties-1]').click({ force: true }) + cy.get('[data-attr=prop-filter-event_properties-1]').click() cy.get('[data-attr=trend-line-graph]').should('exist') }) @@ -154,4 +154,16 @@ describe('Trends', () => { cy.contains('All Users*').click() cy.get('[data-attr=trend-line-graph]').should('exist') }) + + it('Show warning on MAU math in total value insight', () => { + cy.get('[data-attr=chart-filter]').click() + cy.get('.Popover').find('.LemonButton').contains('Pie').click() + cy.get('[data-attr=trend-pie-graph]').should('exist') // Make sure the pie chart is loaded before proceeding + + cy.get('[data-attr=math-selector-0]').click() + cy.get('[data-attr=math-monthly_active-0] .LemonIcon').should('exist') // This should be the warning icon + + cy.get('[data-attr=math-monthly_active-0]').trigger('mouseenter') // Activate warning tooltip + cy.get('.Tooltip').contains('we recommend using "Unique users" here instead').should('exist') + }) }) diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index c2d40d03957fe..292fcb5d957b7 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -1,15 +1,23 @@ import { LemonSelectOptions } from '@posthog/lemon-ui' -import { ChartDisplayType, Region, SSOProvider } from '../types' +import { ChartDisplayCategory, ChartDisplayType, Region, SSOProvider } from '../types' + +// Sync with backend DISPLAY_TYPES_TO_CATEGORIES +export const DISPLAY_TYPES_TO_CATEGORIES: Record = { + [ChartDisplayType.ActionsLineGraph]: ChartDisplayCategory.TimeSeries, + [ChartDisplayType.ActionsBar]: ChartDisplayCategory.TimeSeries, + [ChartDisplayType.ActionsAreaGraph]: ChartDisplayCategory.TimeSeries, + [ChartDisplayType.ActionsLineGraphCumulative]: ChartDisplayCategory.CumulativeTimeSeries, + [ChartDisplayType.BoldNumber]: ChartDisplayCategory.TotalValue, + [ChartDisplayType.ActionsPie]: ChartDisplayCategory.TotalValue, + [ChartDisplayType.ActionsBarValue]: ChartDisplayCategory.TotalValue, + [ChartDisplayType.ActionsTable]: ChartDisplayCategory.TotalValue, + [ChartDisplayType.WorldMap]: ChartDisplayCategory.TotalValue, +} +export const NON_TIME_SERIES_DISPLAY_TYPES = Object.entries(DISPLAY_TYPES_TO_CATEGORIES) + .filter(([, category]) => category === ChartDisplayCategory.TotalValue) + .map(([displayType]) => displayType as ChartDisplayType) -/** Display types which don't allow grouping by unit of time. Sync with backend NON_TIME_SERIES_DISPLAY_TYPES. */ -export const NON_TIME_SERIES_DISPLAY_TYPES = [ - ChartDisplayType.ActionsTable, - ChartDisplayType.ActionsPie, - ChartDisplayType.ActionsBarValue, - ChartDisplayType.WorldMap, - ChartDisplayType.BoldNumber, -] /** Display types for which `breakdown` is hidden and ignored. Sync with backend NON_BREAKDOWN_DISPLAY_TYPES. */ export const NON_BREAKDOWN_DISPLAY_TYPES = [ChartDisplayType.BoldNumber] /** Display types which only work with a single series. */ diff --git a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx index 49e6c6c59190c..8e06a932310ab 100644 --- a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx +++ b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx @@ -154,6 +154,7 @@ export function LemonSelect({ } : null } + tooltip={activeLeaf?.tooltip} {...buttonProps} > diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index 400ef8d1774e3..bb6e2256a43c8 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -501,14 +501,14 @@ "ChartDisplayType": { "enum": [ "ActionsLineGraph", - "ActionsLineGraphCumulative", + "ActionsBar", "ActionsAreaGraph", - "ActionsTable", + "ActionsLineGraphCumulative", + "BoldNumber", "ActionsPie", - "ActionsBar", "ActionsBarValue", - "WorldMap", - "BoldNumber" + "ActionsTable", + "WorldMap" ], "type": "string" }, diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 9bd04dd3c62a9..fc45ff6ecadcb 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -4,6 +4,7 @@ import { Breakdown, BreakdownKeyType, BreakdownType, + ChartDisplayCategory, ChartDisplayType, CountPerActorMathType, EventPropertyFilter, @@ -26,6 +27,8 @@ import { TrendsFilterType, } from '~/types' +export { ChartDisplayCategory } + // Type alias for number to be reflected as integer in json-schema. /** @asType integer */ type integer = number diff --git a/frontend/src/scenes/insights/filters/ActionFilter/ActionFilter.tsx b/frontend/src/scenes/insights/filters/ActionFilter/ActionFilter.tsx index b27d271f53d24..8ebb237640060 100644 --- a/frontend/src/scenes/insights/filters/ActionFilter/ActionFilter.tsx +++ b/frontend/src/scenes/insights/filters/ActionFilter/ActionFilter.tsx @@ -7,13 +7,22 @@ import { IconPlusSmall } from '@posthog/icons' import clsx from 'clsx' import { BindLogic, useActions, useValues } from 'kea' import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' +import { DISPLAY_TYPES_TO_CATEGORIES as DISPLAY_TYPES_TO_CATEGORY } from 'lib/constants' import { LemonButton, LemonButtonProps } from 'lib/lemon-ui/LemonButton' import { verticalSortableListCollisionDetection } from 'lib/sortable' import { eventUsageLogic } from 'lib/utils/eventUsageLogic' import React, { useEffect } from 'react' import { RenameModal } from 'scenes/insights/filters/ActionFilter/RenameModal' +import { isTrendsFilter } from 'scenes/insights/sharedUtils' -import { ActionFilter as ActionFilterType, FilterType, FunnelExclusionLegacy, InsightType, Optional } from '~/types' +import { + ActionFilter as ActionFilterType, + ChartDisplayType, + FilterType, + FunnelExclusionLegacy, + InsightType, + Optional, +} from '~/types' import { teamLogic } from '../../../teamLogic' import { ActionFilterRow, MathAvailability } from './ActionFilterRow/ActionFilterRow' @@ -147,6 +156,9 @@ export const ActionFilter = React.forwardRef( mathAvailability, customRowSuffix, hasBreakdown: !!filters.breakdown, + trendsDisplayCategory: isTrendsFilter(filters) + ? DISPLAY_TYPES_TO_CATEGORY[filters.display || ChartDisplayType.ActionsLineGraph] + : null, actionsTaxonomicGroupTypes, propertiesTaxonomicGroupTypes, propertyFiltersPopover, diff --git a/frontend/src/scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow.tsx b/frontend/src/scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow.tsx index bca5a483baf48..0cb3eaeb086b3 100644 --- a/frontend/src/scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow.tsx +++ b/frontend/src/scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow.tsx @@ -3,7 +3,7 @@ import './ActionFilterRow.scss' import { DraggableSyntheticListeners } from '@dnd-kit/core' import { useSortable } from '@dnd-kit/sortable' import { CSS } from '@dnd-kit/utilities' -import { IconCopy, IconFilter, IconPencil, IconTrash } from '@posthog/icons' +import { IconCopy, IconFilter, IconPencil, IconTrash, IconWarning } from '@posthog/icons' import { LemonSelect, LemonSelectOption, LemonSelectOptions } from '@posthog/lemon-ui' import { BuiltLogic, useActions, useValues } from 'kea' import { EntityFilterInfo } from 'lib/components/EntityFilterInfo' @@ -39,6 +39,7 @@ import { ActionFilter, ActionFilter as ActionFilterType, BaseMathType, + ChartDisplayCategory, CountPerActorMathType, EntityType, EntityTypes, @@ -115,6 +116,7 @@ export interface ActionFilterRowProps { renameRowButton, deleteButton, }: Record) => JSX.Element // build your own row given these components + trendsDisplayCategory: ChartDisplayCategory | null } export function ActionFilterRow({ @@ -142,6 +144,7 @@ export function ActionFilterRow({ disabled = false, readOnly = false, renderRow, + trendsDisplayCategory, }: ActionFilterRowProps): JSX.Element { const { entityFilterVisible } = useValues(logic) const { @@ -377,6 +380,7 @@ export function ActionFilterRow({ disabled={readOnly} style={{ maxWidth: '100%', width: 'initial' }} mathAvailability={mathAvailability} + trendsDisplayCategory={trendsDisplayCategory} /> {mathDefinitions[math || BaseMathType.TotalCount]?.category === MathCategory.PropertyValue && ( @@ -514,6 +518,7 @@ interface MathSelectorProps { disabled?: boolean disabledReason?: string onMathSelect: (index: number, value: any) => any + trendsDisplayCategory: ChartDisplayCategory | null style?: React.CSSProperties } @@ -525,11 +530,14 @@ function isCountPerActorMath(math: string | undefined): math is CountPerActorMat return !!math && math in COUNT_PER_ACTOR_MATH_DEFINITIONS } +const TRAILING_MATH_TYPES = new Set([BaseMathType.WeeklyActiveUsers, BaseMathType.MonthlyActiveUsers]) + function useMathSelectorOptions({ math, index, mathAvailability, onMathSelect, + trendsDisplayCategory, }: MathSelectorProps): LemonSelectOptions { const mountedInsightDataLogic = insightDataLogic.findMounted() const query = mountedInsightDataLogic?.values?.query @@ -550,19 +558,33 @@ function useMathSelectorOptions({ mathAvailability != MathAvailability.ActorsOnly ? staticMathDefinitions : staticActorsOnlyMathDefinitions ) .filter(([key]) => { - if (!isStickiness) { - return true + if (isStickiness) { + // Remove WAU and MAU from stickiness insights + return !TRAILING_MATH_TYPES.has(key) + } + return true + }) + .map(([key, definition]) => { + const shouldWarnAboutTrailingMath = + TRAILING_MATH_TYPES.has(key) && trendsDisplayCategory === ChartDisplayCategory.TotalValue + return { + value: key, + icon: shouldWarnAboutTrailingMath ? : undefined, + label: definition.name, + tooltip: !shouldWarnAboutTrailingMath ? ( + definition.description + ) : ( + <> +

{definition.description}

+ + In total value insights, it's usually not clear what date range "{definition.name}" refers + to. For full clarity, we recommend using "Unique users" here instead. + + + ), + 'data-attr': `math-${key}-${index}`, } - - // Remove WAU and MAU from stickiness insights - return key !== BaseMathType.WeeklyActiveUsers && key !== BaseMathType.MonthlyActiveUsers }) - .map(([key, definition]) => ({ - value: key, - label: definition.name, - tooltip: definition.description, - 'data-attr': `math-${key}-${index}`, - })) if (mathAvailability !== MathAvailability.ActorsOnly) { options.splice(1, 0, { @@ -580,7 +602,6 @@ function useMathSelectorOptions({ options={Object.entries(COUNT_PER_ACTOR_MATH_DEFINITIONS).map(([key, definition]) => ({ value: key, label: definition.shortName, - tooltip: definition.description, 'data-attr': `math-${key}-${index}`, }))} onClick={(e) => e.stopPropagation()} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 131598f9a79d2..58aea7f43fdab 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -1838,14 +1838,19 @@ export interface DatedAnnotationType extends Omit export enum ChartDisplayType { ActionsLineGraph = 'ActionsLineGraph', - ActionsLineGraphCumulative = 'ActionsLineGraphCumulative', + ActionsBar = 'ActionsBar', ActionsAreaGraph = 'ActionsAreaGraph', - ActionsTable = 'ActionsTable', + ActionsLineGraphCumulative = 'ActionsLineGraphCumulative', + BoldNumber = 'BoldNumber', ActionsPie = 'ActionsPie', - ActionsBar = 'ActionsBar', ActionsBarValue = 'ActionsBarValue', + ActionsTable = 'ActionsTable', WorldMap = 'WorldMap', - BoldNumber = 'BoldNumber', +} +export enum ChartDisplayCategory { + TimeSeries = 'TimeSeries', + CumulativeTimeSeries = 'CumulativeTimeSeries', + TotalValue = 'TotalValue', } export type BreakdownType = 'cohort' | 'person' | 'event' | 'group' | 'session' | 'hogql' | 'data_warehouse' diff --git a/posthog/schema.py b/posthog/schema.py index 9d83587351683..7068c39090a2f 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -121,14 +121,14 @@ class ChartAxis(BaseModel): class ChartDisplayType(str, Enum): ActionsLineGraph = "ActionsLineGraph" - ActionsLineGraphCumulative = "ActionsLineGraphCumulative" + ActionsBar = "ActionsBar" ActionsAreaGraph = "ActionsAreaGraph" - ActionsTable = "ActionsTable" + ActionsLineGraphCumulative = "ActionsLineGraphCumulative" + BoldNumber = "BoldNumber" ActionsPie = "ActionsPie" - ActionsBar = "ActionsBar" ActionsBarValue = "ActionsBarValue" + ActionsTable = "ActionsTable" WorldMap = "WorldMap" - BoldNumber = "BoldNumber" class CohortPropertyFilter(BaseModel): From 822cebc5a8e44b9b930ab2db454631ccbc9382bb Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 26 Mar 2024 11:30:45 +0000 Subject: [PATCH 03/10] feat: don't clone replay event data (#21074) * feat: clone once not every * leeory j * make the tests pass --- .../session-recording/utils.ts | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/plugin-server/src/main/ingestion-queues/session-recording/utils.ts b/plugin-server/src/main/ingestion-queues/session-recording/utils.ts index 53ce953e5bd92..2c5637726743e 100644 --- a/plugin-server/src/main/ingestion-queues/session-recording/utils.ts +++ b/plugin-server/src/main/ingestion-queues/session-recording/utils.ts @@ -255,38 +255,34 @@ export const reduceRecordingMessages = (messages: IncomingRecordingMessage[]): I const reducedMessages: Record = {} for (const message of messages) { - const clonedMessage = cloneObject(message) - const key = `${clonedMessage.team_id}-${clonedMessage.session_id}` + const key = `${message.team_id}-${message.session_id}` if (!reducedMessages[key]) { - reducedMessages[key] = clonedMessage + reducedMessages[key] = cloneObject(message) } else { const existingMessage = reducedMessages[key] - for (const [windowId, events] of Object.entries(clonedMessage.eventsByWindowId)) { + for (const [windowId, events] of Object.entries(message.eventsByWindowId)) { if (existingMessage.eventsByWindowId[windowId]) { existingMessage.eventsByWindowId[windowId].push(...events) } else { existingMessage.eventsByWindowId[windowId] = events } } - existingMessage.metadata.rawSize += clonedMessage.metadata.rawSize + existingMessage.metadata.rawSize += message.metadata.rawSize // Update the events ranges existingMessage.metadata.lowOffset = Math.min( existingMessage.metadata.lowOffset, - clonedMessage.metadata.lowOffset + message.metadata.lowOffset ) existingMessage.metadata.highOffset = Math.max( existingMessage.metadata.highOffset, - clonedMessage.metadata.highOffset + message.metadata.highOffset ) // Update the events ranges - existingMessage.eventsRange.start = Math.min( - existingMessage.eventsRange.start, - clonedMessage.eventsRange.start - ) - existingMessage.eventsRange.end = Math.max(existingMessage.eventsRange.end, clonedMessage.eventsRange.end) + existingMessage.eventsRange.start = Math.min(existingMessage.eventsRange.start, message.eventsRange.start) + existingMessage.eventsRange.end = Math.max(existingMessage.eventsRange.end, message.eventsRange.end) } } From 9e837b8f68197bb9443a662e9f28bd095fa704ce Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Tue, 26 Mar 2024 15:21:16 +0100 Subject: [PATCH 04/10] revert(data-warehouse): add linked properties to person filters (#21155) --- cypress/e2e/featureFlags.cy.ts | 3 +- ...el-top-to-bottom-breakdown-edit--light.png | Bin 174976 -> 174641 bytes .../components/TaxonomicPropertyFilter.tsx | 4 +- .../taxonomicPropertyFilterLogic.ts | 14 ++-- .../TaxonomicFilter/taxonomicFilterLogic.tsx | 40 +++++---- .../lib/components/TaxonomicFilter/types.ts | 4 +- frontend/src/models/personPropertiesModel.ts | 79 ------------------ .../src/models/propertyDefinitionsModel.ts | 14 +--- frontend/src/models/types.ts | 6 -- frontend/src/queries/schema.json | 3 - .../events/DefinitionHeader.tsx | 10 +-- .../external/dataWarehouseJoinsLogic.ts | 44 +--------- frontend/src/types.ts | 7 +- plugin-server/src/types.ts | 1 - posthog/hogql/property.py | 5 +- posthog/models/property/property.py | 3 - posthog/schema.py | 1 - 17 files changed, 38 insertions(+), 200 deletions(-) delete mode 100644 frontend/src/models/personPropertiesModel.ts delete mode 100644 frontend/src/models/types.ts diff --git a/cypress/e2e/featureFlags.cy.ts b/cypress/e2e/featureFlags.cy.ts index 78f0bcd0ab8bd..e4f7e35edb718 100644 --- a/cypress/e2e/featureFlags.cy.ts +++ b/cypress/e2e/featureFlags.cy.ts @@ -119,8 +119,9 @@ describe('Feature Flags', () => { // select "add filter" and "property" cy.get('[data-attr=property-select-toggle-0').click() - // select the third property + // select the first property cy.get('[data-attr=taxonomic-filter-searchfield]').click() + cy.get('[data-attr=taxonomic-filter-searchfield]').type('is_demo') cy.get('[data-attr=taxonomic-tab-person_properties]').click() // select numeric $browser_version cy.get('[data-attr=prop-filter-person_properties-2]').click({ force: true }) diff --git a/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png b/frontend/__snapshots__/scenes-app-insights--funnel-top-to-bottom-breakdown-edit--light.png index effe9ed3b3aafc73a7add133d8aed8289fc11aea..ce6b88c8b832a712ad835e33cb075a4eed02c2b6 100644 GIT binary patch delta 122099 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�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

HPPSihN&G&T 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 delta 122489 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

414D?#YU1exl7tQs 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 D&Z|~* diff --git a/frontend/src/lib/components/PropertyFilters/components/TaxonomicPropertyFilter.tsx b/frontend/src/lib/components/PropertyFilters/components/TaxonomicPropertyFilter.tsx index 644b01f74b063..d416c1e0502c3 100644 --- a/frontend/src/lib/components/PropertyFilters/components/TaxonomicPropertyFilter.tsx +++ b/frontend/src/lib/components/PropertyFilters/components/TaxonomicPropertyFilter.tsx @@ -9,7 +9,6 @@ import { propertyFilterLogic } from 'lib/components/PropertyFilters/propertyFilt import { PropertyFilterInternalProps } from 'lib/components/PropertyFilters/types' import { isGroupPropertyFilter, - isPersonPropertyFilter, isPropertyFilterWithOperator, PROPERTY_FILTER_TYPE_TO_TAXONOMIC_FILTER_GROUP_TYPE, propertyFilterTypeToTaxonomicFilterType, @@ -64,7 +63,7 @@ export function TaxonomicPropertyFilter({ value, item ) => { - selectItem(taxonomicGroup, value, item) + selectItem(taxonomicGroup, value, item?.propertyFilterType) if ( taxonomicGroup.type === TaxonomicFilterGroupType.Cohorts || taxonomicGroup.type === TaxonomicFilterGroupType.HogQLExpression @@ -215,7 +214,6 @@ export function TaxonomicPropertyFilter({ value: newValue || null, operator: newOperator, type: filter?.type, - ...(isPersonPropertyFilter(filter) ? { table: filter?.table } : {}), ...(isGroupPropertyFilter(filter) ? { group_type_index: filter.group_type_index } : {}), diff --git a/frontend/src/lib/components/PropertyFilters/components/taxonomicPropertyFilterLogic.ts b/frontend/src/lib/components/PropertyFilters/components/taxonomicPropertyFilterLogic.ts index 48760e5ab6747..aa1a1ca685cc7 100644 --- a/frontend/src/lib/components/PropertyFilters/components/taxonomicPropertyFilterLogic.ts +++ b/frontend/src/lib/components/PropertyFilters/components/taxonomicPropertyFilterLogic.ts @@ -51,10 +51,14 @@ export const taxonomicPropertyFilterLogic = kea ({ + selectItem: ( + taxonomicGroup: TaxonomicFilterGroup, + propertyKey?: TaxonomicFilterValue, + itemPropertyFilterType?: PropertyFilterType + ) => ({ taxonomicGroup, propertyKey, - item, + itemPropertyFilterType, }), openDropdown: true, closeDropdown: true, @@ -89,8 +93,7 @@ export const taxonomicPropertyFilterLogic = kea ({ - selectItem: ({ taxonomicGroup, propertyKey, item }) => { - const itemPropertyFilterType = item?.propertyFilterType as PropertyFilterType + selectItem: ({ taxonomicGroup, propertyKey, itemPropertyFilterType }) => { const propertyType = itemPropertyFilterType ?? taxonomicFilterTypeToPropertyFilterType(taxonomicGroup.type) if (propertyKey && propertyType) { if (propertyType === PropertyFilterType.Cohort) { @@ -126,8 +129,8 @@ export const taxonomicPropertyFilterLogic = kea([ props({} as TaxonomicFilterLogicProps), key((props) => `${props.taxonomicFilterLogicKey}`), path(['lib', 'components', 'TaxonomicFilter', 'taxonomicFilterLogic']), - connect((props: TaxonomicFilterLogicProps) => ({ + connect({ values: [ teamLogic, ['currentTeamId'], @@ -87,13 +86,8 @@ export const taxonomicFilterLogic = kea([ ['allGroupProperties'], dataWarehouseSceneLogic, ['externalTables'], - personPropertiesModel({ - propertyAllowList: props.propertyAllowList, - taxonomicFilterLogicKey: props.taxonomicFilterLogicKey, - }), - ['combinedPersonProperties'], ], - })), + }), actions(() => ({ moveUp: true, moveDown: true, @@ -171,7 +165,6 @@ export const taxonomicFilterLogic = kea([ s.metadataSource, s.excludedProperties, s.propertyAllowList, - s.taxonomicFilterLogicKey, ], ( teamId, @@ -181,8 +174,7 @@ export const taxonomicFilterLogic = kea([ schemaColumns, metadataSource, excludedProperties, - propertyAllowList, - taxonomicFilterLogicKey + propertyAllowList ): TaxonomicFilterGroup[] => { const groups: TaxonomicFilterGroup[] = [ { @@ -333,15 +325,14 @@ export const taxonomicFilterLogic = kea([ name: 'Person properties', searchPlaceholder: 'person properties', type: TaxonomicFilterGroupType.PersonProperties, - logic: personPropertiesModel({ propertyAllowList, taxonomicFilterLogicKey }), - value: 'combinedPersonProperties', + endpoint: combineUrl(`api/projects/${teamId}/property_definitions`, { + type: 'person', + properties: propertyAllowList?.[TaxonomicFilterGroupType.PersonProperties] + ? propertyAllowList[TaxonomicFilterGroupType.PersonProperties].join(',') + : undefined, + }).url, getName: (personProperty: PersonProperty) => personProperty.name, - getValue: (personProperty: PersonProperty) => { - if (personProperty.table) { - return personProperty.id - } - return personProperty.name - }, + getValue: (personProperty: PersonProperty) => personProperty.name, propertyAllowList: propertyAllowList?.[TaxonomicFilterGroupType.PersonProperties], ...propertyTaxonomicGroupProps(true), }, @@ -707,7 +698,14 @@ export const taxonomicFilterLogic = kea([ groupType === TaxonomicFilterGroupType.NumericalEventProperties) ) { const propertyDefinitions: PropertyDefinition[] = results.results as PropertyDefinition[] - updateListOfPropertyDefinitions(propertyDefinitions, groupType) + const apiType = groupType === TaxonomicFilterGroupType.PersonProperties ? 'person' : 'event' + const newPropertyDefinitions = Object.fromEntries( + propertyDefinitions.map((propertyDefinition) => [ + `${apiType}/${propertyDefinition.name}`, + propertyDefinition, + ]) + ) + updatePropertyDefinitions(newPropertyDefinitions) } }, })), diff --git a/frontend/src/lib/components/TaxonomicFilter/types.ts b/frontend/src/lib/components/TaxonomicFilter/types.ts index a3edff51c16f0..964847c6eacaf 100644 --- a/frontend/src/lib/components/TaxonomicFilter/types.ts +++ b/frontend/src/lib/components/TaxonomicFilter/types.ts @@ -1,5 +1,5 @@ import Fuse from 'fuse.js' -import { BuiltLogic, LogicWrapper } from 'kea' +import { LogicWrapper } from 'kea' import { DataWarehouseTableType } from 'scenes/data-warehouse/types' import { LocalFilter } from 'scenes/insights/filters/ActionFilter/entityFilterLogic' @@ -61,7 +61,7 @@ export interface TaxonomicFilterGroup { scopedEndpoint?: string expandLabel?: (props: { count: number; expandedCount: number }) => React.ReactNode options?: Record[] - logic?: LogicWrapper | BuiltLogic + logic?: LogicWrapper value?: string searchAlias?: string valuesEndpoint?: (key: string) => string diff --git a/frontend/src/models/personPropertiesModel.ts b/frontend/src/models/personPropertiesModel.ts deleted file mode 100644 index f319095c3ba81..0000000000000 --- a/frontend/src/models/personPropertiesModel.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { connect, events, kea, key, listeners, path, props, selectors } from 'kea' -import { loaders } from 'kea-loaders' -import { combineUrl, router } from 'kea-router' -import api from 'lib/api' -import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' -import { FEATURE_FLAGS } from 'lib/constants' -import { featureFlagLogic } from 'lib/logic/featureFlagLogic' -import { dataWarehouseJoinsLogic } from 'scenes/data-warehouse/external/dataWarehouseJoinsLogic' -import { teamLogic } from 'scenes/teamLogic' - -import { updateListOfPropertyDefinitions } from '~/models/propertyDefinitionsModel' -import { PersonProperty, PropertyDefinition } from '~/types' - -import type { personPropertiesModelType } from './personPropertiesModelType' -import { PersonPropertiesModelProps } from './types' - -const WHITELISTED = ['/insights', '/events', '/sessions', '/dashboard', '/person'] - -export const personPropertiesModel = kea([ - props({} as PersonPropertiesModelProps), - path(['models', 'personPropertiesModel']), - key((props) => props.taxonomicFilterLogicKey), - connect({ - values: [ - teamLogic, - ['currentTeamId'], - dataWarehouseJoinsLogic, - ['columnsJoinedToPersons'], - featureFlagLogic, - ['featureFlags'], - ], - }), - loaders(({ values }) => ({ - personProperties: [ - [] as PersonProperty[], - { - loadPersonProperties: async () => { - const url = combineUrl(`api/projects/${values.currentTeamId}/property_definitions`, { - type: 'person', - properties: values.propertyAllowList?.[TaxonomicFilterGroupType.PersonProperties] - ? values.propertyAllowList[TaxonomicFilterGroupType.PersonProperties].join(',') - : undefined, - }).url - return (await api.get(url)).results - }, - }, - ], - })), - listeners(() => ({ - loadPersonPropertiesSuccess: ({ personProperties }) => { - updateListOfPropertyDefinitions( - personProperties as PropertyDefinition[], - TaxonomicFilterGroupType.PersonProperties - ) - }, - })), - selectors(() => ({ - combinedPersonProperties: [ - (s) => [s.personProperties, s.columnsJoinedToPersons, s.featureFlags], - (personProperties, columnsJoinedToPersons, featureFlags) => { - // Hack to make sure person properties only show data warehouse in specific instances for now - if ( - featureFlags[FEATURE_FLAGS.DATA_WAREHOUSE] && - WHITELISTED.some((path) => router.values.location.pathname.includes(path)) - ) { - return [...personProperties, ...columnsJoinedToPersons] - } - return [...personProperties] - }, - ], - propertyAllowList: [ - () => [(_, props) => props.propertyAllowList], - (propertyAllowList) => propertyAllowList as PersonPropertiesModelProps['propertyAllowList'], - ], - })), - events(({ actions }) => ({ - afterMount: actions.loadPersonProperties, - })), -]) diff --git a/frontend/src/models/propertyDefinitionsModel.ts b/frontend/src/models/propertyDefinitionsModel.ts index b7bba27261714..338e60a5e956f 100644 --- a/frontend/src/models/propertyDefinitionsModel.ts +++ b/frontend/src/models/propertyDefinitionsModel.ts @@ -1,6 +1,6 @@ import { actions, kea, listeners, path, reducers, selectors } from 'kea' import api, { ApiMethodOptions } from 'lib/api' -import { TaxonomicFilterGroupType, TaxonomicFilterValue } from 'lib/components/TaxonomicFilter/types' +import { TaxonomicFilterValue } from 'lib/components/TaxonomicFilter/types' import { dayjs } from 'lib/dayjs' import { captureTimeToSeeData } from 'lib/internalMetrics' import { colonDelimitedDuration } from 'lib/utils' @@ -46,18 +46,6 @@ export const updatePropertyDefinitions = (propertyDefinitions: PropertyDefinitio propertyDefinitionsModel.findMounted()?.actions.updatePropertyDefinitions(propertyDefinitions) } -export const updateListOfPropertyDefinitions = ( - results: PropertyDefinition[], - groupType: TaxonomicFilterGroupType -): void => { - const propertyDefinitions: PropertyDefinition[] = results - const apiType = groupType === TaxonomicFilterGroupType.PersonProperties ? 'person' : 'event' - const newPropertyDefinitions = Object.fromEntries( - propertyDefinitions.map((propertyDefinition) => [`${apiType}/${propertyDefinition.name}`, propertyDefinition]) - ) - updatePropertyDefinitions(newPropertyDefinitions) -} - export type PropValue = { id?: number name?: string | boolean diff --git a/frontend/src/models/types.ts b/frontend/src/models/types.ts deleted file mode 100644 index b3f4c22f60d4d..0000000000000 --- a/frontend/src/models/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' - -export interface PersonPropertiesModelProps { - propertyAllowList?: { [key in TaxonomicFilterGroupType]?: string[] } // only return properties in this list, currently only working for EventProperties and PersonProperties - taxonomicFilterLogicKey: string -} diff --git a/frontend/src/queries/schema.json b/frontend/src/queries/schema.json index bb6e2256a43c8..eeac4bb951269 100644 --- a/frontend/src/queries/schema.json +++ b/frontend/src/queries/schema.json @@ -3460,9 +3460,6 @@ "operator": { "$ref": "#/definitions/PropertyOperator" }, - "table": { - "type": "string" - }, "type": { "const": "person", "description": "Person properties", diff --git a/frontend/src/scenes/data-management/events/DefinitionHeader.tsx b/frontend/src/scenes/data-management/events/DefinitionHeader.tsx index 5dcbc8c3604d1..9ecf8b43ce2ed 100644 --- a/frontend/src/scenes/data-management/events/DefinitionHeader.tsx +++ b/frontend/src/scenes/data-management/events/DefinitionHeader.tsx @@ -1,4 +1,4 @@ -import { IconBadge, IconBolt, IconCursor, IconEye, IconLeave, IconList, IconLogomark, IconServer } from '@posthog/icons' +import { IconBadge, IconBolt, IconCursor, IconEye, IconLeave, IconList, IconLogomark } from '@posthog/icons' import { PropertyKeyInfo } from 'lib/components/PropertyKeyInfo' import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' import { IconSelectAll } from 'lib/lemon-ui/icons' @@ -24,14 +24,6 @@ export function getPropertyDefinitionIcon(definition: PropertyDefinition): JSX.E ) } - if (definition.table) { - return ( - - - - ) - } - return ( diff --git a/frontend/src/scenes/data-warehouse/external/dataWarehouseJoinsLogic.ts b/frontend/src/scenes/data-warehouse/external/dataWarehouseJoinsLogic.ts index 6c6a3af715664..b5f493b2d7f17 100644 --- a/frontend/src/scenes/data-warehouse/external/dataWarehouseJoinsLogic.ts +++ b/frontend/src/scenes/data-warehouse/external/dataWarehouseJoinsLogic.ts @@ -1,19 +1,13 @@ -import { afterMount, connect, kea, path, selectors } from 'kea' +import { afterMount, kea, path } from 'kea' import { loaders } from 'kea-loaders' import api from 'lib/api' -import { capitalizeFirstLetter } from 'lib/utils' -import { DatabaseSchemaQueryResponseField } from '~/queries/schema' -import { DataWarehouseViewLink, PropertyDefinition, PropertyType } from '~/types' +import { DataWarehouseViewLink } from '~/types' import type { dataWarehouseJoinsLogicType } from './dataWarehouseJoinsLogicType' -import { dataWarehouseSceneLogic } from './dataWarehouseSceneLogic' export const dataWarehouseJoinsLogic = kea([ path(['scenes', 'data-warehouse', 'external', 'dataWarehouseJoinsLogic']), - connect(() => ({ - values: [dataWarehouseSceneLogic, ['externalTablesMap']], - })), loaders({ joins: [ [] as DataWarehouseViewLink[], @@ -25,40 +19,6 @@ export const dataWarehouseJoinsLogic = kea([ }, ], }), - selectors({ - personTableJoins: [(s) => [s.joins], (joins) => joins.filter((join) => join.source_table_name === 'persons')], - tablesJoinedToPersons: [ - (s) => [s.externalTablesMap, s.personTableJoins], - (externalTablesMap, personTableJoins) => { - return personTableJoins.map((join: DataWarehouseViewLink) => { - // valid join should have a joining table name - const table = externalTablesMap[join.joining_table_name as string] - return { - table, - join, - } - }) - }, - ], - columnsJoinedToPersons: [ - (s) => [s.tablesJoinedToPersons], - (tablesJoinedToPersons) => { - return tablesJoinedToPersons.reduce((acc, { table, join }) => { - if (table) { - acc.push( - ...table.columns.map((column: DatabaseSchemaQueryResponseField) => ({ - id: column.key, - name: join.field_name + ': ' + column.key, - table: join.field_name, - property_type: capitalizeFirstLetter(column.type) as PropertyType, - })) - ) - } - return acc - }, [] as PropertyDefinition[]) - }, - ], - }), afterMount(({ actions }) => { actions.loadJoins() }), diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 58aea7f43fdab..a583fe34c26d2 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -672,7 +672,6 @@ export interface EventPropertyFilter extends BasePropertyFilter { export interface PersonPropertyFilter extends BasePropertyFilter { type: PropertyFilterType.Person operator: PropertyOperator - table?: string } export interface DataWarehousePropertyFilter extends BasePropertyFilter { @@ -2813,9 +2812,6 @@ export interface PropertyDefinition { verified?: boolean verified_at?: string verified_by?: string - - // For Data warehouse person properties - table?: string } export enum PropertyDefinitionState { @@ -2828,10 +2824,9 @@ export enum PropertyDefinitionState { export type Definition = EventDefinition | PropertyDefinition export interface PersonProperty { - id: string | number + id: number name: string count: number - table?: string } export type GroupTypeIndex = 0 | 1 | 2 | 3 | 4 diff --git a/plugin-server/src/types.ts b/plugin-server/src/types.ts index 114547cfe605f..d70238307eaac 100644 --- a/plugin-server/src/types.ts +++ b/plugin-server/src/types.ts @@ -868,7 +868,6 @@ export interface EventPropertyFilter extends PropertyFilterWithOperator { /** Sync with posthog/frontend/src/types.ts */ export interface PersonPropertyFilter extends PropertyFilterWithOperator { type: 'person' - table?: string } /** Sync with posthog/frontend/src/types.ts */ diff --git a/posthog/hogql/property.py b/posthog/hogql/property.py index ba9f92443b4e8..98019cdaa54b7 100644 --- a/posthog/hogql/property.py +++ b/posthog/hogql/property.py @@ -147,10 +147,7 @@ def property_to_expr( value = property.value if property.type == "person" and scope != "person": - if property.table: - chain = ["person", property.table] - else: - chain = ["person", "properties"] + chain = ["person", "properties"] elif property.type == "group": chain = [f"group_{property.group_type_index}", "properties"] elif property.type == "data_warehouse": diff --git a/posthog/models/property/property.py b/posthog/models/property/property.py index 4bd44646ec4a9..d0e0f94439cf5 100644 --- a/posthog/models/property/property.py +++ b/posthog/models/property/property.py @@ -202,7 +202,6 @@ class Property: total_periods: Optional[int] min_periods: Optional[int] negation: Optional[bool] = False - table: Optional[str] _data: Dict def __init__( @@ -225,7 +224,6 @@ def __init__( seq_time_value: Optional[int] = None, seq_time_interval: Optional[OperatorInterval] = None, negation: Optional[bool] = None, - table: Optional[str] = None, **kwargs, ) -> None: self.key = key @@ -243,7 +241,6 @@ def __init__( self.seq_time_value = seq_time_value self.seq_time_interval = seq_time_interval self.negation = None if negation is None else str_to_bool(negation) - self.table = table if value is None and self.operator in ["is_set", "is_not_set"]: self.value = self.operator diff --git a/posthog/schema.py b/posthog/schema.py index 7068c39090a2f..17ad11fc4f236 100644 --- a/posthog/schema.py +++ b/posthog/schema.py @@ -1369,7 +1369,6 @@ class PersonPropertyFilter(BaseModel): key: str label: Optional[str] = None operator: PropertyOperator - table: Optional[str] = None type: Literal["person"] = Field(default="person", description="Person properties") value: Optional[Union[str, float, List[Union[str, float]]]] = None From ff681c72c19de9fefa9154e22ce8a3bf04db0067 Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Tue, 26 Mar 2024 15:44:07 +0100 Subject: [PATCH 05/10] fix(insights-compare): compare again (#21156) --- frontend/src/queries/query.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/frontend/src/queries/query.ts b/frontend/src/queries/query.ts index f866b2f336d31..e2149303733b6 100644 --- a/frontend/src/queries/query.ts +++ b/frontend/src/queries/query.ts @@ -222,7 +222,7 @@ export async function query( if (hogQLInsightsLiveCompareEnabled) { const legacyFunction = (): any => { try { - return legacyUrl ? fetchLegacyUrl : fetchLegacyInsights + return legacyUrl ? fetchLegacyUrl() : fetchLegacyInsights() } catch (e) { console.error('Error fetching legacy insights', e) } @@ -258,11 +258,17 @@ export async function query( res2 = res2[0]?.people.map((n: any) => n.id) res1 = res1.map((n: any) => n[0].id) // Sort, since the order of the results is not guaranteed + const bv = (v: any): string => + [null, 'null', 'none', '9007199254740990', 9007199254740990].includes(v) + ? '$$_posthog_breakdown_null_$$' + : ['Other', '9007199254740991', 9007199254740991].includes(v) + ? '$$_posthog_breakdown_other_$$' + : String(v) res1.sort((a: any, b: any) => - (a.breakdown_value ?? a.label ?? a).localeCompare(b.breakdown_value ?? b.label ?? b) + bv(a.breakdown_value ?? a.label ?? a).localeCompare(bv(b.breakdown_value ?? b.label ?? b)) ) res2.sort((a: any, b: any) => - (a.breakdown_value ?? a.label ?? a).localeCompare(b.breakdown_value ?? b.label ?? b) + bv(a.breakdown_value ?? a.label ?? a).localeCompare(bv(b.breakdown_value ?? b.label ?? b)) ) } From a4bba2f36ca80038582be6db55261959836bb2db Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 26 Mar 2024 16:12:07 +0000 Subject: [PATCH 06/10] chore: some fewer console errors in js tests (#21147) * chore: some fewer console errors in js tests * a little even more lesserer * Update UI snapshots for `chromium` (2) * one more * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) * a littl more * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * and this * Update frontend/src/scenes/insights/views/InsightsTable/insightsTableDataLogic.test.ts * more * more * more --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../featurePreviewsLogic.test.ts | 6 +++++ .../annotationsOverlayLogic.test.ts | 15 +++-------- .../authorizedUrlListLogic.test.ts | 3 +++ .../Subscriptions/subscriptionLogic.test.ts | 1 + frontend/src/mocks/handlers.ts | 25 +++++++++++++++---- .../dataNodeLogic.queryCancellation.test.ts | 3 +++ .../funnelCorrelationFeedbackLogic.test.ts | 2 ++ .../insights/insightVizDataLogic.test.ts | 1 + .../src/scenes/notebooks/Nodes/utils.test.tsx | 2 +- .../src/scenes/paths/pathsDataLogic.test.ts | 2 ++ .../components/ItemPerformanceEvent.tsx | 3 ++- .../inspector/playerInspectorLogic.test.ts | 6 +++++ .../sessionRecordingsPlaylistLogic.test.ts | 2 ++ .../persons-modal/peronsModalLogic.test.ts | 6 +++++ 14 files changed, 58 insertions(+), 19 deletions(-) diff --git a/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.test.ts b/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.test.ts index f0ff2f6404de7..3bd8f0590f20d 100644 --- a/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.test.ts +++ b/frontend/src/layout/FeaturePreviews/featurePreviewsLogic.test.ts @@ -2,6 +2,7 @@ import { expectLogic } from 'kea-test-utils' import { MOCK_DEFAULT_USER } from 'lib/api.mock' import { userLogic } from 'scenes/userLogic' +import { useMocks } from '~/mocks/jest' import { initKeaTests } from '~/test/init' import { featurePreviewsLogic } from './featurePreviewsLogic' @@ -10,6 +11,11 @@ describe('featurePreviewsLogic', () => { let logic: ReturnType beforeEach(() => { + useMocks({ + post: { + 'https://posthoghelp.zendesk.com/api/v2/requests.json': [200, {}], + }, + }) initKeaTests() logic = featurePreviewsLogic() logic.mount() diff --git a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts index 02d59125c852f..b5ec3468d12f1 100644 --- a/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts +++ b/frontend/src/lib/components/AnnotationsOverlay/annotationsOverlayLogic.test.ts @@ -143,6 +143,7 @@ function useInsightMocks(interval: string = 'day', timezone: string = 'UTC'): vo [`/api/projects/:team_id/insights/${MOCK_INSIGHT_NUMERIC_ID}`]: () => { return [200, insight] }, + '/api/users/@me/': [200, {}], }, }) } @@ -162,6 +163,7 @@ function useAnnotationsMocks(): void { MOCK_ANNOTATION_PROJECT_SCOPED_FROM_INSIGHT_3, ], }, + '/api/users/@me/': [200, {}], }, }) } @@ -171,6 +173,7 @@ describe('annotationsOverlayLogic', () => { beforeEach(() => { useAnnotationsMocks() + initKeaTests() }) afterEach(() => { @@ -178,8 +181,6 @@ describe('annotationsOverlayLogic', () => { }) it('loads annotations on mount', async () => { - initKeaTests() - useInsightMocks() logic = annotationsOverlayLogic({ @@ -193,8 +194,6 @@ describe('annotationsOverlayLogic', () => { }) describe('relevantAnnotations', () => { - initKeaTests() - it('returns annotations scoped to the insight for a saved insight', async () => { useInsightMocks() @@ -224,8 +223,6 @@ describe('annotationsOverlayLogic', () => { }) it('returns annotations scoped to the project for a new insight', async () => { - initKeaTests() - useInsightMocks() logic = annotationsOverlayLogic({ @@ -250,8 +247,6 @@ describe('annotationsOverlayLogic', () => { }) it('excludes annotations that are outside of insight date range', async () => { - initKeaTests() - useInsightMocks() logic = annotationsOverlayLogic({ @@ -506,8 +501,6 @@ describe('annotationsOverlayLogic', () => { } it(`merges groups when one tick covers more than one date (UTC)`, async () => { - initKeaTests(true, MOCK_DEFAULT_TEAM) - useInsightMocks() logic = annotationsOverlayLogic({ @@ -572,8 +565,6 @@ describe('annotationsOverlayLogic', () => { }) it(`merges groups when one tick covers more than one hour (UTC)`, async () => { - initKeaTests(true, MOCK_DEFAULT_TEAM) - useInsightMocks('hour') logic = annotationsOverlayLogic({ diff --git a/frontend/src/lib/components/AuthorizedUrlList/authorizedUrlListLogic.test.ts b/frontend/src/lib/components/AuthorizedUrlList/authorizedUrlListLogic.test.ts index b21f9012925bb..772646e28882a 100644 --- a/frontend/src/lib/components/AuthorizedUrlList/authorizedUrlListLogic.test.ts +++ b/frontend/src/lib/components/AuthorizedUrlList/authorizedUrlListLogic.test.ts @@ -27,6 +27,9 @@ describe('the authorized urls list logic', () => { return [200, { result: ['result from api'] }] }, }, + patch: { + '/api/projects/:team': [200, {}], + }, }) initKeaTests() logic = authorizedUrlListLogic({ diff --git a/frontend/src/lib/components/Subscriptions/subscriptionLogic.test.ts b/frontend/src/lib/components/Subscriptions/subscriptionLogic.test.ts index 820e8eb7d9786..1adc197e2c03c 100644 --- a/frontend/src/lib/components/Subscriptions/subscriptionLogic.test.ts +++ b/frontend/src/lib/components/Subscriptions/subscriptionLogic.test.ts @@ -32,6 +32,7 @@ describe('subscriptionLogic', () => { useMocks({ get: { '/api/projects/:team/subscriptions/1': fixtureSubscriptionResponse(1), + '/api/projects/:team/integrations': { count: 0, results: [] }, }, }) initKeaTests() diff --git a/frontend/src/mocks/handlers.ts b/frontend/src/mocks/handlers.ts index 3b4d5c2577a7e..e155aa67cf805 100644 --- a/frontend/src/mocks/handlers.ts +++ b/frontend/src/mocks/handlers.ts @@ -10,6 +10,7 @@ import { MOCK_PERSON_PROPERTIES, MOCK_SECOND_ORGANIZATION_MEMBER, } from 'lib/api.mock' +import { ResponseComposition, RestContext, RestRequest } from 'msw' import { getAvailableFeatures } from '~/mocks/features' import { SharingConfigurationType } from '~/types' @@ -25,6 +26,19 @@ export const toPaginatedResponse = (results: any[]): typeof EMPTY_PAGINATED_RESP previous: null, }) +// this really returns MaybePromise> +// but MSW doesn't export MaybePromise 🤷 +function posthogCORSResponse(req: RestRequest, res: ResponseComposition, ctx: RestContext): any { + return res( + ctx.status(200), + ctx.json('ok'), + // some of our tests try to make requests via posthog-js e.g. userLogic calls identify + // they have to have CORS allowed, or they pass but print noise to the console + ctx.set('Access-Control-Allow-Origin', req.referrer.length ? req.referrer : 'http://localhost'), + ctx.set('Access-Control-Allow-Credentials', 'true') + ) +} + export const defaultMocks: Mocks = { get: { '/api/projects/:team_id/activity_log/important_changes/': EMPTY_PAGINATED_RESPONSE, @@ -108,12 +122,13 @@ export const defaultMocks: Mocks = { }, }, post: { - 'https://us.i.posthog.com/e/': (): MockSignature => [200, 'ok'], - '/e/': (): MockSignature => [200, 'ok'], - 'https://us.i.posthog.com/decide/': (): MockSignature => [200, 'ok'], - '/decide/': (): MockSignature => [200, 'ok'], - 'https://us.i.posthog.com/engage/': (): MockSignature => [200, 'ok'], + 'https://us.i.posthog.com/e/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), + '/e/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), + 'https://us.i.posthog.com/decide/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), + '/decide/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), + 'https://us.i.posthog.com/engage/': (req, res, ctx): MockSignature => posthogCORSResponse(req, res, ctx), '/api/projects/:team_id/insights/:insight_id/viewed/': (): MockSignature => [201, null], + 'api/projects/:team_id/query': [200, { results: [] }], }, } export const handlers = mocksToHandlers(defaultMocks) diff --git a/frontend/src/queries/nodes/DataNode/dataNodeLogic.queryCancellation.test.ts b/frontend/src/queries/nodes/DataNode/dataNodeLogic.queryCancellation.test.ts index 55a417bdff91e..ead4227a3c793 100644 --- a/frontend/src/queries/nodes/DataNode/dataNodeLogic.queryCancellation.test.ts +++ b/frontend/src/queries/nodes/DataNode/dataNodeLogic.queryCancellation.test.ts @@ -39,6 +39,9 @@ describe('dataNodeLogic - query cancellation', () => { ) }, }, + delete: { + '/api/projects/:team_id/query/uuid-first': [200, {}], + }, }) }) afterEach(() => logic?.unmount()) diff --git a/frontend/src/scenes/funnels/funnelCorrelationFeedbackLogic.test.ts b/frontend/src/scenes/funnels/funnelCorrelationFeedbackLogic.test.ts index b88946646be5c..0ac26e5540b5e 100644 --- a/frontend/src/scenes/funnels/funnelCorrelationFeedbackLogic.test.ts +++ b/frontend/src/scenes/funnels/funnelCorrelationFeedbackLogic.test.ts @@ -1,6 +1,7 @@ import { expectLogic } from 'kea-test-utils' import { eventUsageLogic } from 'lib/utils/eventUsageLogic' import posthog from 'posthog-js' +import { teamLogic } from 'scenes/teamLogic' import { useAvailableFeatures } from '~/mocks/features' import { initKeaTests } from '~/test/init' @@ -14,6 +15,7 @@ describe('funnelCorrelationFeedbackLogic', () => { beforeEach(() => { useAvailableFeatures([AvailableFeature.CORRELATION_ANALYSIS]) initKeaTests(false) + teamLogic.mount() }) const defaultProps: InsightLogicProps = { diff --git a/frontend/src/scenes/insights/insightVizDataLogic.test.ts b/frontend/src/scenes/insights/insightVizDataLogic.test.ts index d1de2cd7b8af5..a0a535c7e1686 100644 --- a/frontend/src/scenes/insights/insightVizDataLogic.test.ts +++ b/frontend/src/scenes/insights/insightVizDataLogic.test.ts @@ -23,6 +23,7 @@ describe('insightVizDataLogic', () => { useMocks({ get: { '/api/projects/:team_id/insights/trend': [], + '/api/projects/:team_id/insights/': { results: [{}] }, }, }) initKeaTests() diff --git a/frontend/src/scenes/notebooks/Nodes/utils.test.tsx b/frontend/src/scenes/notebooks/Nodes/utils.test.tsx index af46f229b2cd8..09cfe7c1ceebd 100644 --- a/frontend/src/scenes/notebooks/Nodes/utils.test.tsx +++ b/frontend/src/scenes/notebooks/Nodes/utils.test.tsx @@ -1,6 +1,6 @@ import { NodeViewProps } from '@tiptap/core' import { useSyncedAttributes } from './utils' -import { renderHook, act } from '@testing-library/react-hooks' +import { renderHook, act } from '@testing-library/react' describe('notebook node utils', () => { jest.useFakeTimers() diff --git a/frontend/src/scenes/paths/pathsDataLogic.test.ts b/frontend/src/scenes/paths/pathsDataLogic.test.ts index 99e97de3b031f..e22ec58c79aae 100644 --- a/frontend/src/scenes/paths/pathsDataLogic.test.ts +++ b/frontend/src/scenes/paths/pathsDataLogic.test.ts @@ -1,6 +1,7 @@ import { expectLogic } from 'kea-test-utils' import { TaxonomicFilterGroupType } from 'lib/components/TaxonomicFilter/types' import { pathsDataLogic } from 'scenes/paths/pathsDataLogic' +import { teamLogic } from 'scenes/teamLogic' import { initKeaTests } from '~/test/init' import { InsightLogicProps, InsightType, PathType } from '~/types' @@ -25,6 +26,7 @@ async function initPathsDataLogic(): Promise { describe('pathsDataLogic', () => { beforeEach(async () => { initKeaTests(false) + teamLogic.mount() await initPathsDataLogic() }) diff --git a/frontend/src/scenes/session-recordings/player/inspector/components/ItemPerformanceEvent.tsx b/frontend/src/scenes/session-recordings/player/inspector/components/ItemPerformanceEvent.tsx index 8442cdd4a28aa..5741c225a66a0 100644 --- a/frontend/src/scenes/session-recordings/player/inspector/components/ItemPerformanceEvent.tsx +++ b/frontend/src/scenes/session-recordings/player/inspector/components/ItemPerformanceEvent.tsx @@ -1,7 +1,8 @@ -import { LemonButton, LemonDivider, LemonTabs, LemonTag, LemonTagType, Link } from '@posthog/lemon-ui' +import { LemonButton, LemonDivider, LemonTabs, LemonTag, LemonTagType } from '@posthog/lemon-ui' import clsx from 'clsx' import { CodeSnippet, Language } from 'lib/components/CodeSnippet' import { Dayjs, dayjs } from 'lib/dayjs' +import { Link } from 'lib/lemon-ui/Link' import { Tooltip } from 'lib/lemon-ui/Tooltip' import { humanFriendlyMilliseconds, humanizeBytes, isURL } from 'lib/utils' import { Fragment, useState } from 'react' diff --git a/frontend/src/scenes/session-recordings/player/inspector/playerInspectorLogic.test.ts b/frontend/src/scenes/session-recordings/player/inspector/playerInspectorLogic.test.ts index 236cc3b5b8dc5..4f0bf12fc81cd 100644 --- a/frontend/src/scenes/session-recordings/player/inspector/playerInspectorLogic.test.ts +++ b/frontend/src/scenes/session-recordings/player/inspector/playerInspectorLogic.test.ts @@ -2,6 +2,7 @@ import { expectLogic } from 'kea-test-utils' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { playerInspectorLogic } from 'scenes/session-recordings/player/inspector/playerInspectorLogic' +import { useMocks } from '~/mocks/jest' import { initKeaTests } from '~/test/init' const playerLogicProps = { sessionRecordingId: '1', playerKey: 'playlist' } @@ -10,6 +11,11 @@ describe('playerInspectorLogic', () => { let logic: ReturnType beforeEach(() => { + useMocks({ + get: { + 'api/projects/:team_id/session_recordings/1/': {}, + }, + }) initKeaTests() featureFlagLogic.mount() logic = playerInspectorLogic(playerLogicProps) diff --git a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.test.ts b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.test.ts index ccbc8d962f1da..4e5002f5dabf7 100644 --- a/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.test.ts +++ b/frontend/src/scenes/session-recordings/playlist/sessionRecordingsPlaylistLogic.test.ts @@ -29,6 +29,8 @@ describe('sessionRecordingsPlaylistLogic', () => { ], }, + 'api/projects/:team/property_definitions/seen_together': { $pageview: true }, + '/api/projects/:team/session_recordings': (req) => { const { searchParams } = req.url if ( diff --git a/frontend/src/scenes/trends/persons-modal/peronsModalLogic.test.ts b/frontend/src/scenes/trends/persons-modal/peronsModalLogic.test.ts index 70958019ed94c..f2666ba43f58f 100644 --- a/frontend/src/scenes/trends/persons-modal/peronsModalLogic.test.ts +++ b/frontend/src/scenes/trends/persons-modal/peronsModalLogic.test.ts @@ -1,5 +1,6 @@ import { expectLogic } from 'kea-test-utils' +import { useMocks } from '~/mocks/jest' import { initKeaTests } from '~/test/init' import { personsModalLogic } from './personsModalLogic' @@ -8,6 +9,11 @@ describe('personsModalLogic', () => { let logic: ReturnType beforeEach(() => { + useMocks({ + get: { + 'api/projects/:team_id/persons/trends': {}, + }, + }) initKeaTests() }) From 7148e2c88409d6972417f0e06183e6b69af950e7 Mon Sep 17 00:00:00 2001 From: Frank Hamand Date: Tue, 26 Mar 2024 16:34:20 +0000 Subject: [PATCH 07/10] feat: Allow setting --max-tasks-per-child on celery worker (#21163) Allow setting --max-tasks-per-child on celery worker This is so we can try to stop worker memory usage growing over time --- bin/docker-worker-celery | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/docker-worker-celery b/bin/docker-worker-celery index 5d1e7567fcabe..bbd9949d88352 100755 --- a/bin/docker-worker-celery +++ b/bin/docker-worker-celery @@ -71,6 +71,10 @@ FLAGS+=("-n node@%h") # On Heroku $WEB_CONCURRENCY contains suggested number of forks per dyno type # https://github.com/heroku/heroku-buildpack-python/blob/main/vendor/WEB_CONCURRENCY.sh [[ -n "${WEB_CONCURRENCY}" ]] && FLAGS+=" --concurrency $WEB_CONCURRENCY" +# Restart worker process after it processes this many tasks (to mitigate memory leaks) +[[ -n "${CELERY_MAX_TASKS_PER_CHILD}" ]] && FLAGS+=" --max-tasks-per-child $CELERY_MAX_TASKS_PER_CHILD" +# Restart worker process after it exceeds this much memory usage (to mitigate memory leaks) +[[ -n "${CELERY_MAX_MEMORY_PER_CHILD}" ]] && FLAGS+=" --max-memory-per-child $CELERY_MAX_MEMORY_PER_CHILD" if [[ -z "${CELERY_WORKER_QUEUES}" ]]; then source ./bin/celery-queues.env From 4d75323ac3461dbb19fc7387adfd8032dd4cfc5a Mon Sep 17 00:00:00 2001 From: James Greenhill Date: Tue, 26 Mar 2024 09:54:22 -0700 Subject: [PATCH 08/10] chore: tune up the hobby deploy testing (#21142) * chore: tune up the hobby deploy testing * quick fix * put everything in the class * include release tag in name * split this out into stages for GA * test throwing ci off * fix * test destroy * check env * exit if things don't work out * debug * somewhat important to create the dns record here hah * record name as well * maybe? * update user_data * set dns ttl to 30 sec * silly dns mistake * correct DNS error --- .github/workflows/ci-hobby.yml | 11 +- bin/hobby-ci.py | 244 +++++++++++++++++++++++---------- 2 files changed, 180 insertions(+), 75 deletions(-) diff --git a/.github/workflows/ci-hobby.yml b/.github/workflows/ci-hobby.yml index c5b878c8d2184..0025e656c8204 100644 --- a/.github/workflows/ci-hobby.yml +++ b/.github/workflows/ci-hobby.yml @@ -35,7 +35,16 @@ jobs: token: ${{ secrets.POSTHOG_BOT_GITHUB_TOKEN }} - name: Get python deps run: pip install python-digitalocean==1.17.0 requests==2.28.1 + - name: Setup DO Hobby Instance + run: python3 bin/hobby-ci.py create + env: + DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} - name: Run smoke tests on DO - run: python3 bin/hobby-ci.py $GITHUB_HEAD_REF + run: python3 bin/hobby-ci.py test $GITHUB_HEAD_REF + env: + DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} + - name: Post-cleanup step + if: always() + run: python3 bin/hobby-ci.py destroy env: DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} diff --git a/bin/hobby-ci.py b/bin/hobby-ci.py index 7eed9237e6c83..c19022692ece7 100644 --- a/bin/hobby-ci.py +++ b/bin/hobby-ci.py @@ -3,8 +3,6 @@ import datetime import os import random -import re -import signal import string import sys import time @@ -12,43 +10,73 @@ import digitalocean import requests -letters = string.ascii_lowercase -random_bit = "".join(random.choice(letters) for i in range(4)) -name = f"do-ci-hobby-deploy-{random_bit}" -region = "sfo3" -image = "ubuntu-22-04-x64" -size = "s-4vcpu-8gb" -release_tag = "latest-release" -branch_regex = re.compile("release-*.*") -branch = sys.argv[1] -if branch_regex.match(branch): - release_tag = f"{branch}-unstable" -hostname = f"{name}.posthog.cc" -user_data = ( - f"#!/bin/bash \n" - "mkdir hobby \n" - "cd hobby \n" - "sed -i \"s/#\\$nrconf{restart} = 'i';/\\$nrconf{restart} = 'a';/g\" /etc/needrestart/needrestart.conf \n" - "git clone https://github.com/PostHog/posthog.git \n" - "cd posthog \n" - f"git checkout {branch} \n" - "cd .. \n" - f"chmod +x posthog/bin/deploy-hobby \n" - f"./posthog/bin/deploy-hobby {release_tag} {hostname} 1 \n" -) -token = os.getenv("DIGITALOCEAN_TOKEN") + +DOMAIN = "posthog.cc" class HobbyTester: - def __init__(self, domain, droplet, record): - # Placeholders for DO resources + def __init__( + self, + token=None, + name=None, + region="sfo3", + image="ubuntu-22-04-x64", + size="s-4vcpu-8gb", + release_tag="latest-release", + branch=None, + hostname=None, + domain=DOMAIN, + droplet_id=None, + droplet=None, + record_id=None, + record=None, + ): + if not token: + token = os.getenv("DIGITALOCEAN_TOKEN") + self.token = token + self.branch = branch + self.release_tag = release_tag + + random_bit = "".join(random.choice(string.ascii_lowercase) for i in range(4)) + + if not name: + name = f"do-ci-hobby-deploy-{self.release_tag}-{random_bit}" + self.name = name + + if not hostname: + hostname = f"{name}.{DOMAIN}" + self.hostname = hostname + + self.region = region + self.image = image + self.size = size + self.domain = domain self.droplet = droplet + if droplet_id: + self.droplet = digitalocean.Droplet(token=self.token, id=droplet_id) + self.record = record + if record_id: + self.record = digitalocean.Record(token=self.token, id=record_id) - @staticmethod - def block_until_droplet_is_started(droplet): - actions = droplet.get_actions() + self.user_data = ( + f"#!/bin/bash \n" + "mkdir hobby \n" + "cd hobby \n" + "sed -i \"s/#\\$nrconf{restart} = 'i';/\\$nrconf{restart} = 'a';/g\" /etc/needrestart/needrestart.conf \n" + "git clone https://github.com/PostHog/posthog.git \n" + "cd posthog \n" + f"git checkout {self.branch} \n" + "cd .. \n" + f"chmod +x posthog/bin/deploy-hobby \n" + f"./posthog/bin/deploy-hobby {self.release_tag} {self.hostname} 1 \n" + ) + + def block_until_droplet_is_started(self): + if not self.droplet: + return + actions = self.droplet.get_actions() up = False while not up: for action in actions: @@ -60,42 +88,43 @@ def block_until_droplet_is_started(droplet): print("Droplet not booted yet - waiting a bit") time.sleep(5) - @staticmethod - def get_public_ip(droplet): + def get_public_ip(self): + if not self.droplet: + return ip = None while not ip: time.sleep(1) - droplet.load() - ip = droplet.ip_address + self.droplet.load() + ip = self.droplet.ip_address print(f"Public IP found: {ip}") # type: ignore return ip - @staticmethod - def create_droplet(ssh_enabled=False): + def create_droplet(self, ssh_enabled=False): keys = None if ssh_enabled: - manager = digitalocean.Manager(token=token) + manager = digitalocean.Manager(token=self.token) keys = manager.get_all_sshkeys() - droplet = digitalocean.Droplet( - token=token, - name=name, - region=region, - image=image, - size_slug=size, - user_data=user_data, + self.droplet = digitalocean.Droplet( + token=self.token, + name=self.name, + region=self.region, + image=self.image, + size_slug=self.size, + user_data=self.user_data, ssh_keys=keys, tags=["ci"], ) - droplet.create() - return droplet + self.droplet.create() + return self.droplet - @staticmethod - def wait_for_instance(hostname, timeout=20, retry_interval=15): + def test_deployment(self, timeout=20, retry_interval=15): + if not self.hostname: + return # timeout in minutes # return true if success or false if failure print("Attempting to reach the instance") print(f"We will time out after {timeout} minutes") - url = f"https://{hostname}/_health" + url = f"https://{self.hostname}/_health" start_time = datetime.datetime.now() while datetime.datetime.now() < start_time + datetime.timedelta(minutes=timeout): try: @@ -115,9 +144,29 @@ def wait_for_instance(hostname, timeout=20, retry_interval=15): print("Failure - we timed out before receiving a heartbeat") return False + def create_dns_entry(self, type, name, data, ttl=30): + self.domain = digitalocean.Domain(token=self.token, name=DOMAIN) + self.record = self.domain.create_new_domain_record(type=type, name=name, data=data, ttl=ttl) + return self.record + + def create_dns_entry_for_instance(self): + if not self.droplet: + return + self.record = self.create_dns_entry(type="A", name=self.name, data=self.get_public_ip()) + return self.record + + def destroy_self(self, retries=3): + if not self.droplet or not self.domain or not self.record: + return + droplet_id = self.droplet.id + self.destroy_environment(droplet_id, self.domain, self.record["domain_record"]["id"], retries=retries) + @staticmethod - def destroy_environment(droplet, domain, record, retries=3): + def destroy_environment(droplet_id, record_id, retries=3): print("Destroying the droplet") + token = os.getenv("DIGITALOCEAN_TOKEN") + droplet = digitalocean.Droplet(token=token, id=droplet_id) + domain = digitalocean.Domain(token=token, name=DOMAIN) attempts = 0 while attempts <= retries: attempts += 1 @@ -131,36 +180,83 @@ def destroy_environment(droplet, domain, record, retries=3): while attempts <= retries: attempts += 1 try: - domain.delete_domain_record(id=record["domain_record"]["id"]) + domain.delete_domain_record(id=record_id) break except Exception as e: print(f"Could not destroy the dns entry because\n{e}") def handle_sigint(self): - self.destroy_environment(self.droplet, self.domain, self.record) + self.destroy_self() + + def export_droplet(self): + if not self.droplet: + print("Droplet not found. Exiting") + exit(1) + if not self.record: + print("DNS record not found. Exiting") + exit(1) + record_id = self.record["domain_record"]["id"] + record_name = self.record["domain_record"]["name"] + droplet_id = self.droplet.id + + print(f"Exporting the droplet ID: {self.droplet.id} and DNS record ID: {record_id} for name {self.name}") + env_file_name = os.getenv("GITHUB_ENV") + with open(env_file_name, "a") as env_file: + env_file.write(f"HOBBY_DROPLET_ID={droplet_id}\n") + with open(env_file_name, "a") as env_file: + env_file.write(f"HOBBY_DNS_RECORD_ID={record_id}\n") + env_file.write(f"HOBBY_DNS_RECORD_NAME={record_name}\n") + env_file.write(f"HOBBY_NAME={self.name}\n") + + def ensure_droplet(self, ssh_enabled=True): + self.create_droplet(ssh_enabled=ssh_enabled) + self.block_until_droplet_is_started() + self.create_dns_entry_for_instance() + self.export_droplet() def main(): - print("Creating droplet on Digitalocean for testing Hobby Deployment") - droplet = HobbyTester.create_droplet(ssh_enabled=True) - HobbyTester.block_until_droplet_is_started(droplet) - public_ip = HobbyTester.get_public_ip(droplet) - domain = digitalocean.Domain(token=token, name="posthog.cc") - record = domain.create_new_domain_record(type="A", name=name, data=public_ip) - - hobby_tester = HobbyTester(domain, droplet, record) - signal.signal(signal.SIGINT, hobby_tester.handle_sigint) # type: ignore - signal.signal(signal.SIGHUP, hobby_tester.handle_sigint) # type: ignore - print("Instance has started. You will be able to access it here after PostHog boots (~15 minutes):") - print(f"https://{hostname}") - health_success = HobbyTester.wait_for_instance(hostname) - HobbyTester.destroy_environment(droplet, domain, record) - if health_success: - print("We succeeded") - exit() - else: - print("We failed") - exit(1) + command = sys.argv[1] + if command == "create": + print("Creating droplet on Digitalocean for testing Hobby Deployment") + ht = HobbyTester() + ht.ensure_droplet(ssh_enabled=True) + print("Instance has started. You will be able to access it here after PostHog boots (~15 minutes):") + print(f"https://{ht.hostname}") + + if command == "destroy": + print("Destroying droplet on Digitalocean for testing Hobby Deployment") + droplet_id = os.environ.get("HOBBY_DROPLET_ID") + domain_record_id = os.environ.get("HOBBY_DNS_RECORD_ID") + print(f"Droplet ID: {droplet_id}") + print(f"Record ID: {domain_record_id}") + HobbyTester.destroy_environment(droplet_id=droplet_id, record_id=domain_record_id) + + if command == "test": + if len(sys.argv) < 3: + print("Please provide the branch name to test") + exit(1) + branch = sys.argv[2] + name = os.environ.get("HOBBY_NAME") + record_id = os.environ.get("HOBBY_DNS_RECORD_ID") + droplet_id = os.environ.get("HOBBY_DROPLET_ID") + print(f"Testing the deployment for {name} on branch {branch}") + print(f"Record ID: {record_id}") + print(f"Droplet ID: {droplet_id}") + + ht = HobbyTester( + branch=branch, + name=name, + record_id=record_id, + droplet_id=droplet_id, + ) + health_success = ht.test_deployment() + if health_success: + print("We succeeded") + exit() + else: + print("We failed") + exit(1) if __name__ == "__main__": From a54ae8868fa437c4b53e4d55c8982da8e0aaf3ec Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Tue, 26 Mar 2024 17:01:03 +0000 Subject: [PATCH 09/10] feat: mobile replay onboarding (#21122) * feat: mobile replay in onboarding * wrap replay in a flag too * Update frontend/src/scenes/onboarding/sdks/product-analytics/android.tsx * Update UI snapshots for `chromium` (2) * Update UI snapshots for `chromium` (2) * change text * Update UI snapshots for `chromium` (1) * Update UI snapshots for `chromium` (1) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- frontend/src/lib/constants.tsx | 1 + frontend/src/scenes/onboarding/Onboarding.tsx | 17 +++++++-- .../src/scenes/onboarding/onboardingLogic.tsx | 18 ++++++---- frontend/src/scenes/onboarding/sdks/SDKs.tsx | 1 + .../sdks/product-analytics/android.tsx | 27 ++++++++++++++ .../sdks/sdk-install-instructions/android.tsx | 35 +++++++++++++++++-- .../src/scenes/onboarding/sdks/sdksLogic.tsx | 29 ++++++++++----- .../SessionReplaySDKInstructions.tsx | 2 ++ .../sdks/session-replay/android.tsx | 11 ++++++ .../onboarding/sdks/session-replay/index.tsx | 1 + frontend/src/scenes/urls.ts | 7 ++-- 11 files changed, 126 insertions(+), 23 deletions(-) create mode 100644 frontend/src/scenes/onboarding/sdks/session-replay/android.tsx diff --git a/frontend/src/lib/constants.tsx b/frontend/src/lib/constants.tsx index 292fcb5d957b7..b4ef15a8bea8f 100644 --- a/frontend/src/lib/constants.tsx +++ b/frontend/src/lib/constants.tsx @@ -212,6 +212,7 @@ export const FEATURE_FLAGS = { AUDIT_LOGS_ACCESS: 'audit-logs-access', // owner: #team-growth SUBSCRIBE_FROM_PAYGATE: 'subscribe-from-paygate', // owner: #team-growth REVERSE_PROXY_ONBOARDING: 'reverse-proxy-onboarding', // owner: @zlwaterfield + SESSION_REPLAY_MOBILE_ONBOARDING: 'session-replay-mobile-onboarding', // owner: #team-replay } as const export type FeatureFlagKey = (typeof FEATURE_FLAGS)[keyof typeof FEATURE_FLAGS] diff --git a/frontend/src/scenes/onboarding/Onboarding.tsx b/frontend/src/scenes/onboarding/Onboarding.tsx index 52efdd5d47f0a..adcd6d3476b4d 100644 --- a/frontend/src/scenes/onboarding/Onboarding.tsx +++ b/frontend/src/scenes/onboarding/Onboarding.tsx @@ -1,11 +1,13 @@ import { useActions, useValues } from 'kea' -import { SESSION_REPLAY_MINIMUM_DURATION_OPTIONS } from 'lib/constants' +import { FEATURE_FLAGS, SESSION_REPLAY_MINIMUM_DURATION_OPTIONS } from 'lib/constants' +import { featureFlagLogic } from 'lib/logic/featureFlagLogic' import { useEffect, useState } from 'react' +import { AndroidInstructions } from 'scenes/onboarding/sdks/session-replay' import { SceneExport } from 'scenes/sceneTypes' import { teamLogic } from 'scenes/teamLogic' import { userLogic } from 'scenes/userLogic' -import { AvailableFeature, ProductKey } from '~/types' +import { AvailableFeature, ProductKey, SDKKey } from '~/types' import { OnboardingBillingStep } from './OnboardingBillingStep' import { OnboardingInviteTeammates } from './OnboardingInviteTeammates' @@ -108,6 +110,9 @@ const SessionReplayOnboarding = (): JSX.Element => { const { hasAvailableFeature } = useValues(userLogic) const { currentTeam } = useValues(teamLogic) + const { featureFlags } = useValues(featureFlagLogic) + const hasAndroidOnBoarding = !!featureFlags[FEATURE_FLAGS.SESSION_REPLAY_MOBILE_ONBOARDING] + const configOptions: ProductConfigOption[] = [ { type: 'toggle', @@ -139,11 +144,16 @@ const SessionReplayOnboarding = (): JSX.Element => { }) } + const sdkInstructionMap = SessionReplaySDKInstructions + if (hasAndroidOnBoarding) { + sdkInstructionMap[SDKKey.ANDROID] = AndroidInstructions + } + return ( @@ -151,6 +161,7 @@ const SessionReplayOnboarding = (): JSX.Element => { ) } + const FeatureFlagsOnboarding = (): JSX.Element => { return ( diff --git a/frontend/src/scenes/onboarding/onboardingLogic.tsx b/frontend/src/scenes/onboarding/onboardingLogic.tsx index 4c8b35542109e..b53b14afc6b62 100644 --- a/frontend/src/scenes/onboarding/onboardingLogic.tsx +++ b/frontend/src/scenes/onboarding/onboardingLogic.tsx @@ -316,9 +316,9 @@ export const onboardingLogic = kea([ actionToUrl(({ values }) => ({ setStepKey: ({ stepKey }) => { if (stepKey) { - return [`/onboarding/${values.productKey}`, { step: stepKey }] + return [`/onboarding/${values.productKey}`, { ...router.values.searchParams, step: stepKey }] } else { - return [`/onboarding/${values.productKey}`] + return [`/onboarding/${values.productKey}`, router.values.searchParams] } }, goToNextStep: () => { @@ -327,9 +327,12 @@ export const onboardingLogic = kea([ ) const nextStep = values.allOnboardingSteps[currentStepIndex + 1] if (nextStep) { - return [`/onboarding/${values.productKey}`, { step: nextStep.props.stepKey }] + return [ + `/onboarding/${values.productKey}`, + { ...router.values.searchParams, step: nextStep.props.stepKey }, + ] } else { - return [`/onboarding/${values.productKey}`] + return [`/onboarding/${values.productKey}`, router.values.searchParams] } }, goToPreviousStep: () => { @@ -338,9 +341,12 @@ export const onboardingLogic = kea([ ) const previousStep = values.allOnboardingSteps[currentStepIndex - 1] if (previousStep) { - return [`/onboarding/${values.productKey}`, { step: previousStep.props.stepKey }] + return [ + `/onboarding/${values.productKey}`, + { ...router.values.searchParams, step: previousStep.props.stepKey }, + ] } else { - return [`/onboarding/${values.productKey}`] + return [`/onboarding/${values.productKey}`, router.values.searchParams] } }, updateCurrentTeamSuccess(val) { diff --git a/frontend/src/scenes/onboarding/sdks/SDKs.tsx b/frontend/src/scenes/onboarding/sdks/SDKs.tsx index 33555a1f17ca9..610caee92ee4f 100644 --- a/frontend/src/scenes/onboarding/sdks/SDKs.tsx +++ b/frontend/src/scenes/onboarding/sdks/SDKs.tsx @@ -118,6 +118,7 @@ export function SDKs({ {sdks?.map((sdk) => ( setSelectedSDK(sdk) : undefined} fullWidth diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/android.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/android.tsx index 365f8685a8a74..b6a1fb3c9520f 100644 --- a/frontend/src/scenes/onboarding/sdks/product-analytics/android.tsx +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/android.tsx @@ -1,4 +1,12 @@ import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { FlaggedFeature } from 'lib/components/FlaggedFeature' +import { FEATURE_FLAGS } from 'lib/constants' +import { LemonTag } from 'lib/lemon-ui/LemonTag' +import { Link } from 'lib/lemon-ui/Link' +import { OnboardingStepKey } from 'scenes/onboarding/onboardingLogic' +import { urls } from 'scenes/urls' + +import { SDKKey } from '~/types' import { SDKInstallAndroidInstructions } from '../sdk-install-instructions' @@ -6,12 +14,31 @@ function AndroidCaptureSnippet(): JSX.Element { return {`PostHog.capture(event = "test-event")`} } +function AdvertiseAndroidReplay(): JSX.Element { + return ( +
+

+ Session Replay for Android NEW +

+
+ Session replay is now in beta for Android.{' '} + + Learn how to set it up + +
+
+ ) +} + export function ProductAnalyticsAndroidInstructions(): JSX.Element { return ( <>

Send an Event

+ + + ) } diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx index ff740be34f4fd..103a87f183508 100644 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/android.tsx @@ -1,8 +1,14 @@ +import { Link } from '@posthog/lemon-ui' import { useValues } from 'kea' import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { LemonBanner } from 'lib/lemon-ui/LemonBanner' import { apiHostOrigin } from 'lib/utils/apiHost' import { teamLogic } from 'scenes/teamLogic' +export interface AndroidSetupProps { + includeReplay?: boolean +} + function AndroidInstallSnippet(): JSX.Element { return ( @@ -13,7 +19,7 @@ function AndroidInstallSnippet(): JSX.Element { ) } -function AndroidSetupSnippet(): JSX.Element { +function AndroidSetupSnippet({ includeReplay }: AndroidSetupProps): JSX.Element { const { currentTeam } = useValues(teamLogic) return ( @@ -33,6 +39,18 @@ function AndroidSetupSnippet(): JSX.Element { apiKey = POSTHOG_API_KEY, host = POSTHOG_HOST ) + ${ + includeReplay + ? ` + // check https://posthog.com/docs/session-replay/mobile#installation + // for more config and to learn about how we capture sessions on mobile + // and what to expect + config.sessionReplay = true + // choose whether to mask images or text + config.sessionReplayConfig.maskAllImages = false + config.sessionReplayConfig.maskAllTextInputs = true` + : '' + } // Setup PostHog with the given Context and Config PostHogAndroid.setup(this, config) @@ -41,13 +59,24 @@ function AndroidSetupSnippet(): JSX.Element { ) } -export function SDKInstallAndroidInstructions(): JSX.Element { +export function SDKInstallAndroidInstructions(props: AndroidSetupProps): JSX.Element { return ( <> + {props.includeReplay ? ( + + 🚧 NOTE: Mobile recording is + currently in beta. We are keen to gather as much feedback as possible so if you try this out please + let us know. You can send feedback via the{' '} + + in-app support panel + {' '} + or one of our other support options. + + ) : null}

Install

Configure

- + ) } diff --git a/frontend/src/scenes/onboarding/sdks/sdksLogic.tsx b/frontend/src/scenes/onboarding/sdks/sdksLogic.tsx index df4a13d8adaf1..a46984ee8f897 100644 --- a/frontend/src/scenes/onboarding/sdks/sdksLogic.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdksLogic.tsx @@ -1,5 +1,6 @@ import { actions, afterMount, connect, events, kea, listeners, path, reducers, selectors } from 'kea' import { loaders } from 'kea-loaders' +import { urlToAction } from 'kea-router' import api from 'lib/api' import { LemonSelectOptions } from 'lib/lemon-ui/LemonSelect/LemonSelect' @@ -11,7 +12,7 @@ import { onboardingLogic } from '../onboardingLogic' import { allSDKs } from './allSDKs' import type { sdksLogicType } from './sdksLogicType' -/* +/* To add SDK instructions for your product: 1. If needed, add a new ProductKey enum value in ~/types.ts 2. Create a folder in this directory for your product @@ -118,14 +119,16 @@ export const sdksLogic = kea([ loadSnippetEvents: async () => { const query: HogQLQuery = { kind: NodeKind.HogQLQuery, - query: hogql`SELECT properties.$lib_version AS lib_version, max(timestamp) AS latest_timestamp, count(lib_version) as count - FROM events - WHERE timestamp >= now() - INTERVAL 3 DAY - AND timestamp <= now() - AND properties.$lib = 'web' - GROUP BY lib_version - ORDER BY latest_timestamp DESC - limit 10`, + query: hogql`SELECT properties.$lib_version AS lib_version, + max(timestamp) AS latest_timestamp, + count(lib_version) as count + FROM events + WHERE timestamp >= now() - INTERVAL 3 DAY + AND timestamp <= now() + AND properties.$lib = 'web' + GROUP BY lib_version + ORDER BY latest_timestamp DESC + limit 10`, } const res = await api.query(query) @@ -188,4 +191,12 @@ export const sdksLogic = kea([ afterMount(({ actions }) => { actions.loadSnippetEvents() }), + urlToAction(({ actions }) => ({ + '/onboarding/:productKey': (_productKey, { sdk }) => { + const matchedSDK = allSDKs.find((s) => s.key === sdk) + if (matchedSDK) { + actions.setSelectedSDK(matchedSDK) + } + }, + })), ]) diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx index 7e43a06b7faba..16db14dbd1d85 100644 --- a/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx +++ b/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx @@ -7,4 +7,6 @@ export const SessionReplaySDKInstructions: SDKInstructionsMap = { [SDKKey.HTML_SNIPPET]: HTMLSnippetInstructions, [SDKKey.NEXT_JS]: NextJSInstructions, [SDKKey.REACT]: ReactInstructions, + // added by feature flag in Onboarding.tsx until released + //[SDKKey.ANDROID]: AndroidInstructions, } diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/android.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/android.tsx new file mode 100644 index 0000000000000..4afb1dc91ce60 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/session-replay/android.tsx @@ -0,0 +1,11 @@ +import { SDKInstallAndroidInstructions } from '../sdk-install-instructions' +import { SessionReplayFinalSteps } from '../shared-snippets' + +export function AndroidInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx index bee13a5ce58bb..1ef01349747b4 100644 --- a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx @@ -1,3 +1,4 @@ +export * from './android' export * from './html-snippet' export * from './js-web' export * from './next-js' diff --git a/frontend/src/scenes/urls.ts b/frontend/src/scenes/urls.ts index 943ebbaa80bb2..13262c0eb3656 100644 --- a/frontend/src/scenes/urls.ts +++ b/frontend/src/scenes/urls.ts @@ -16,6 +16,7 @@ import { PipelineTab, ProductKey, ReplayTabs, + SDKKey, } from '~/types' import { OnboardingStepKey } from './onboarding/onboardingLogic' @@ -175,8 +176,10 @@ export const urls = { `/verify_email${userUuid ? `/${userUuid}` : ''}${token ? `/${token}` : ''}`, inviteSignup: (id: string): string => `/signup/${id}`, products: (): string => '/products', - onboarding: (productKey: string, stepKey?: OnboardingStepKey): string => - `/onboarding/${productKey}${stepKey ? '?step=' + stepKey : ''}`, + onboarding: (productKey: string, stepKey?: OnboardingStepKey, sdk?: SDKKey): string => + `/onboarding/${productKey}${stepKey ? '?step=' + stepKey : ''}${ + sdk && stepKey ? '&sdk=' + sdk : sdk ? '?sdk=' + sdk : '' + }`, // Cloud only organizationBilling: (products?: ProductKey[]): string => `/organization/billing${products && products.length ? `?products=${products.join(',')}` : ''}`, From 200f68ac56211c6be8c6b15c6d96839cd8ddb895 Mon Sep 17 00:00:00 2001 From: Michael Matloka Date: Tue, 26 Mar 2024 21:44:11 +0100 Subject: [PATCH 10/10] feat(dev): Show in-progress queries in query debug modal (#21160) * feat(dev): Show in-progress queries in query debug modal * Remove needless block * Update UI snapshots for `chromium` (1) --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- ee/api/debug_ch_queries.py | 38 ++++++++++-------- ...-top-to-bottom-breakdown-insight--dark.png | Bin 39865 -> 40916 bytes .../CommandPalette/DebugCHQueries.tsx | 10 ++++- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/ee/api/debug_ch_queries.py b/ee/api/debug_ch_queries.py index f4e7ec8760c26..6c4b1746b425b 100644 --- a/ee/api/debug_ch_queries.py +++ b/ee/api/debug_ch_queries.py @@ -15,7 +15,7 @@ class DebugCHQueries(viewsets.ViewSet): """ - Show recent queries for this user + List recent CH queries initiated by this user. """ def _get_path(self, query: str) -> Optional[str]: @@ -30,16 +30,21 @@ def list(self, request): response = sync_execute( """ - select - query, query_start_time, exception, toInt8(type), query_duration_ms - from clusterAllReplicas(%(cluster)s, system, query_log) - where - query LIKE %(query)s and - query_start_time > %(start_time)s and - type != 1 and - query not like %(not_query)s - order by query_start_time desc - limit 100""", + SELECT + query_id, argMax(query, type), argMax(query_start_time, type), argMax(exception, type), + argMax(query_duration_ms, type), max(type) AS status + FROM ( + SELECT + query_id, query, query_start_time, exception, query_duration_ms, toInt8(type) AS type + FROM clusterAllReplicas(%(cluster)s, system, query_log) + WHERE + query LIKE %(query)s AND + query NOT LIKE %(not_query)s AND + query_start_time > %(start_time)s + ORDER BY query_start_time desc + LIMIT 100 + ) + GROUP BY query_id""", { "query": f"/* user_id:{request.user.pk} %", "start_time": (now() - relativedelta(minutes=10)).timestamp(), @@ -50,12 +55,13 @@ def list(self, request): return Response( [ { - "query": resp[0], - "timestamp": resp[1], - "exception": resp[2], - "type": resp[3], + "query_id": resp[0], + "query": resp[1], + "timestamp": resp[2], + "exception": resp[3], "execution_time": resp[4], - "path": self._get_path(resp[0]), + "status": resp[5], + "path": self._get_path(resp[1]), } for resp in response ] diff --git a/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-top-to-bottom-breakdown-insight--dark.png index 223b0b5a5e0faee144631e1a51e4deb58eb13012..edfba77bef6d245244bc112bbf2a072350034427 100644 GIT binary patch literal 40916 zcmcG$XIPVM*CiZ8K&2@ny{ITCz4xM`AYB3J5Tr^kp?5(=qzOoGA|g^l4-krU5D3yc zp@$CAAwcHL{XEZn-!Xq?=6K)9AB9}xIe6^J z98MV!5Rjy56``!=cnUORy{sFon6@MO&%I@T}2puunq|caTaH?u&^>M)uZ;qk8m+qoQZ;)hIEyl zUYzVYHIp{)xry`f!Qa2_ru?6i<6rR-h2h6f{Utd$EU_slI=YYO$h~Q96phYg3SSB) z#oz44L-nY(;KoKY(Gd*1Wg%!@X~0)~9sf?uyk3!x>JQRJqs`zJc>hX{L<4?)Twh8s zQA8*#5FKS>WB$3p|NR90muL8&4_J&H$l6mA-jZaNgQA~w)9i;?n`C-9kCF1Eo=1d~ zo-^ZK#B1t5#IIuK{kAz~bvI?HwPyhzGU3tPWiRYR$*D918quXs2&$EM2>T*L`G3GK zm2ha`S35>!U~7?LDEy2`jun<=d7!aOWO|Kc8sjL)|1I}YNv_~4H-Zy(wL1787;L#` zX*R0`wM0U}v>08pXFT%oc`%0jW$CFQ;)&ssh{_Fr9UCq zw!D3omXPX;ABB%>c6F7CClXygE;nEIfrvUz zH2>^JoUw_#`mTI4fFO!l#dNdw0M&sZmi8RVe-%<}ELqNL>z|xJ`%2N()irPZfs8Lwx(-eAU$|6 z3$fJpn1zMj*@EK5p5&puV%Ub>rS)&3*O{oFj`F6{iMWcR)o?N3gi#&Y^iH@7lQ%|W z$RLIGa-mnQUHj%RDcah>>VCEAUlW7%(vPl{o=F~yJT#tR^Etn#&e(e#vuZT5^7L9c zmVvISj^=OIpPvejV+TNlpLqoavc4hDl&YIY1Fww*W=ze*!Sjnk2i zD*MgyfaKml7T)EkOe(3v{WcNebNA~tikQ#_NC zL4n+6LYRqi-2{K1-YMX6^cwlKYc_u8r%v93VNG1+?N=G_7vUYV&hJ>u=J42Bt!yRhf^`b zlTOHF4OwjLO%C;hb&nj2c+N9Xn}Ls4kD^I#OG%|_$ex!C`M0*U-DG0w`TCeJ`JyE{ z$0Wd!83GMB;IXk;%_+{Qd-wjmCeL>UyHSPL<>RZv1yUlm+MeD`_UO{MDCS9_vsybP zb>+F87&iOqs*wHt2-kuZG&;KTqeq%_a_5YHzauS^L(O{TL6 zrP(&4#pJJFzrJ^miG$OYun~1JodYKzJauUc>b^>T^)&_^SZ>y4TV+43kUCOC$Nx1G zR#Ee+o2EufCYl-3k!clQbNGRLO~_;84TFe%(6l4wPgaYcl)Fz>Q;U^a3%%5#!rEv- zN2&Q$KdA#>V#)@pARfc2TMTviZ@_G~cd%LxuT{R7W!AE>w8oUY={Hk|sE%sz_eu0Q zsd4`-_DNsI80o<-_>Fn8YEyh$JABV(M0iR+k!QPF*p6X~ideVEL`AjdadQh__UjPh z3MbabV3AbLWBKOs)t8wG46O}J54denp5jt+fwV7G=);=hv^ODdBj~B5c z#p#^>YmPIk(pgP4Cfw7cy@aMy7E88T$x)Vx=@LDjH*_4w45Bk9+UB9Am%W~9{JMf@ zAV3DC;QFauIo$a;NU^M7Wo)FH&0W@JIjD(J%SJ9@2_>9}mo6G}<#6 zEp5Lda*V~uUYw@d#Pgo%O0WV!`jeINPcdK}BzcA5QC z4Z;O@a4K5x^A{gcYEj3jk8PxZm?#%Sf?ZKo)*aOpFV;BrnU1|a*)BD61%l7X$z4@N zliq7xU8q?kpN||gP$=^FcuJy|kYpcoIO#|{J7EVWHvJo$GbOp@IN~&R*?VrUH7xFF z5qg%aCM-+|{O4CxI&wDcw(RC4-|-w0o{sZBU*dRgTWpvs3U55UG&3_ZW-l6W?m)4( z%m)(Z_3N{JhVVvJXJ`J4i-5Y5)9&Mw6A%&f$}H&RE`&)_>*sUBGcids@uL1rL^>j)1na$b)!%-Anq)DOv!VKogNe939gOA0=QgI0> z?Pw&dr4Whz0-u!{3FbWnA^7=H!Wa4vx|=pkkqz%NdSQC${3A8o;t$hV?=H}n7qJYo zEnHQV#(JLBZq@AhIeB;g0%3T}p7;{sC5YE)SC@sg_1^jZw_Jr~e|`CVJxA%)P!m{P<{Sg+N>rl*`~(-iurA%a3Inz>gOs?iqf8Tx^kd`(M6 z_zSC5&*GBqj43uM9dcIbRW?nI@X%lS?gsw42ca_VF&tZv6+=@wyH zw7L1ha}_ShGlgdkw>fR)!?3zWnJ0sUI)z4?ejL?iOSTG8)lomxTGAi8Tm(PcU!9KQ zHI{rWnyRFxW;wnapTm;Fqx|Oi6&?fOg`GJz)Cux_m)wWsWc}9m_A=XH157&0)O2pF zQI9_j0Ddi95eC|DnaFB?vHpVhVrlhxFB~C`H@hPZ83eQaxnGeMij^f2I6Gq}uQMzL zT|!(7m}~5V7&$}Oo!*JbeYLW(Ds_Si%c0WRn&d-mhV$RUGPd{{dtFRSGcz)pwgY=G zAYTmpd`;-*?|-rp4);1ArUmgg4Kd?K6qJs23Ew{G(g915WqNL`zL} zV{huxMY_7Wx(hKhDAVfvcQ~JPc>kO4?&}G>gdv7ij-D5OvyaHYIRnWv;qOmlqj>hS zjBVL+h)zNLEiT7iOu%Qv@dBrSXRFc4{U5y3=*rY3C$U|zH#H^s3fPD2t{F%-t+U>bS;_+i4~nU zz+N|*EsGA)O73~%nbdE{uxp_E@d1AeuN*{9h8&gb+D(e{|B#l(6mWVnDma|PYP&EW zEoik-eRpzkaZx-_G!4dT=KIzuS138+Od3QzGYWwdIm-SVm?C7N!m&+}wW0g7U9p@K z4^gg+{aAJ0AOC>xf`V%A?vvO!tu#4ZI7@qmj4uIys@i2Dq72XJPuh9Q|CDcEEIOj( zR+;vLyJ3Ix4oXL`9~3=AZ#O8sO0<0YFuCWWc=LItSE)$5JLhz#32{dC+q?CrySVDt zi#xmMx6%O9yUk?1Id&hFB!oQ*k{dOVq1*l8xxBc@Z?#V@jhl*_^2Ob&b=zKNig)a< zqksIi=CKe?@+Sk)RH7EpxL)o--t0RT9;?Q{+-v8*nM__b}pc8J~kn z#1&HVC2-r{_1XQNP@%&gj5dRkh?Os2w7%zH)aAsz_&q0}+cPrB66Or>`rRj`ld_q~ za=0f(M$(W>zkOLbKb(lrkHGZ}r=zXF?MbI}SpKf;m9 ziqgjYQ(hZsPPhdmwGcFZPIievH5H>{Y0~^t;Ec@kVaCHsSIAxUNAmLCdTs?{Wra(4 zeyoJ&5qyYdYN>2dkW{pU`YsVU)_eCn8&7mM9`+jRIy~Ll zS{@#vo@l9<5E4odCRQeL%3=9!AU9PzHHV-`&!N8O4krHR4vA8d=K`J$d+Pd!X1oUQ z=kZpke<%Z~4KH&~x|7MjEWLeG@`;@AvWxu%)Ka?}DOy;vwFt?$tE2KW`OBKoNKNuv z&km{TZTVxbOBHrT)wuju`KE%&X;}lN{5xkbjeex3Mnk%2y8HSFt#4wkpO)+yb=>$< zO-6t*#b#Y&cM_tE+o1;eIWo>6eK2peRM6vw+Dn z{voHav*5elMFt{Ds>+;=pYUu7imj}p++MY(ezvzGNi8nT<@o)+#oj7*T$7EuadGOG z4Jkitvgt$J@UFN>oTh-9?dFDgi!2Fcz%|xsN)M7cX*hX#p!@a~1&0RvK*9DS?u0#( z*+8kduGZRNm8)0t6wJ)1G6N3p>yM95d35VFx1`QGi_`fX?3g*J7}C7Xs&S&={ki2@ zpn&H^SZCYD;XJ6S6Vt2yu`37JHt051#kWXyx@^!NzB_&;IXH@v}Lye1!m@t%rc^Lx@fT<%Nj5@@(bi)5d zR2fnIW;fdPtBCo&+b%OUQ^*5}XbL$;*fC~GY%0pdAj`(O)S5BWPzqZ>|+|PjxC(C28c^iyk zYn*oNPHLYcVsEY^Q-W2o!fySn#=RiH?_!m@%F&>uc#|>dsDp3Hr(5m)>B?{cNnp=K zGPB{R&^Z!*h0^H>m=v>bp01B!wNsArVjOU%!@!^#Ku(=%gD zRCo+UJx>sOtqajKDc=@RE?iNG{hbSOtn9YEf}%yxHdvqZTLeN3(kFdDC(ti7UTZ^c zVq%T^j>$xlzvN286mxg{o*oVF%=td>0gCd*q~pxN9yr@y5GFR7p=4!cwHKA*NfBEB z32JeUghPB1;W!)%m&JVq71Zqdy8QY`(eXyy!}nD;Xc&H{L9JaE$k~3r%$6J<*MAo( zHn+;bv9}xEN3ers-6Oa{M)uXb;}GSJ-QT+UV&lqtDSx<0IYp4q!5S3}&9z6l>da~W zfQ`8k)Y*9j62+o2`)7`g)>V)1BPt9PmYWu*3%y|VJV%SKjTD6p+va!_rQr94s`qxU z=CH{h9&<&Z{fRpkR#u=K37>M*(|gc}N@;R$Db6w&&eto{!Gjhlr~3BDYz4{5;h!(l zp@9;UDBJRWKpD;WW8JqJ)}x-BM>V+I^TeUW&(6=mfK7+UM}~u^KJ=+SA@>eWE z2erle#%P8f#w4k-C-x&z>5|Jl-RC(~?0lEM93)ZD`z;X_!C~KEyH0W(C&Uyhl)oZa z1AjPJ(0(9qjFAtGe$n{Y-*)Kdmd7U1_@+lOgDW$$4xJW3o{X1CBE;^(kECD+N`L7DrY8_G|d8e@hr7BKU z4t>m}NT1GE5Xa1aAAy*T?`ekzexLG3(?Uqg+rE+D|sbwJ4fpJ(?v4A!Ayyk|0UQdh6tb z)bGF{Ytz_$_!eX+&p3QLH=qlA95@-2X{@a7>k~vl-g~ZrCr7>5rC1!Uwe=o`ueoeL z9Z-Z-n>BB9b|VSr(Y4c#9CyDlgQ{P5vBR{jU!q^) z?{`@2_H%p3uPejlQivJXn+kC;TyTcpON61$^Q~Q)%!z)D7l%@y($4fmo@0;R*4?NN z38f(1+45x-{M&@vX;0l2pFG%{T(?JtgqBQh*2&!$EAjSCUG1+=RcVA_cov892Ej2Z z6W@MPcJ|V3O4@U&v~i1R6c&HfK$H8^XWE}9UBf1NvWAA&Ko#IniqH_g#*8(;26OCl zNI)Osd9R%H`RP9KZC>7tUc;&k#C91ASB#2&4sw$45r8PA21QH~RNYSHxY?FyId|Ry zJl9ZvdRL~_ljxUOsq5+f>JxwMq7*5r>w&^eCsTk_dq461!@FvG#0$CM{6{mL9mY7Z zs05x=t$H6i|2t5nfp#4qVEX^Tn*B1L|IjM-qmnvIbUv_?z@HF)>X|A>btMvQ1Di*Jpa~(Z-MIHl4bwyQv@3rpLveS?_Aq z9ii5RZ3dDs8QzzIgsf3JOQTvRxB0wk41F8EeEC9!U}T78l-@lO@T}JY_&XqG^I8V{ z_&D1-G4w-qg@%d>>>@2Lju4}o?1Gt!@3^Ri8HG!+FIB?Z@KFS+g3-bU4|Ad)FPM56 zvq-KK$1*lp<7A_+9--v{$9IMNYL*jvYDbF0$?eSV_rGEW?^%LdcoJo9ojkJ2VXVr5 zL__*qy1ySwpDFgb@oPneFgQcXMJXa_eZwf^gCAc(m;#i4Twmka2VE1M0Ms}D*5ZEm z5&)wK1Lge6K+eraS#r-USABa^+*N&MWhW{fHqV|__#7AjR#U~x>*iL29n+$Jh0avx z^T*LLe^pDne*oBF-X3K>xXg3^Fir#W6tjqSQwN8EID`Ns4h-y7-^m!0=_ndWFTP@6 zQ1M3H;;A9AvBYP6D4LrkVQ zecqkCMW*GxE4xPgTv?fS*kfAa|F;zrJ|N*ado_O+bP%ZVQHu+0>Rjn zemw1Q2(hGG|3jPKAyQNR^&gFtIj1W^V=LawkOj&39+i1+%Ys?@Eiy{RJLHIsnyOLJ zHIWFab+-jtU-jll>HCQyy&8s~*P|wC;Q1jbVs^i`%LC1t>d-6W3mY9ausvCtH1RnT zKR-Y5gwMa))!ImCJh3xn?oz9(^vB1?f8b6|R5#_(QiT5i?AI(YZ9jrjQZ zKqXV8`JUTzCGAT(s!J|VeK%wP$S2{nztNyP6GFE5D zLUF8t6E)Iu@8XxMtGOEcxQHq6louTtF^iA$rR_#6aU83E=eXm^r>W24`x6B=LnQ>n zA#bl9MTXY(ca@z@a<5JquUypn8uhsg91a_AH6%bV?=4^D*G4Uxthg|`E!{!|k`iH# zohJM|l;tlTY=^{cbpWy!l<_KQW(yRaCVY1jQ&f1*w#I5mgBTSfEjmUHo)+nU7}xfK zV9Wa&@dP0N0t5H=@JNI3^oVC@Yx+p;-b0CG29f;oHy2D*_C_srasgQY~5rS0pHGD7UZc$_f zT=jCVt^rL}TF-jyMd&?_-0M`Dk@&Z<2@f0@gsuf?$l>xIA)}uwtF!a-2R$QQE^*&8 zC}#8^hium!5r7n?T)!EMnts0pM|M>12t363yC)*y_wn0_z`1YQv&?kHiD<2{WWi%? z--d?oEWIdoRM2m%5`xcdX66fN4gom-;=M}M8SRg|v#9lFi<+>m_h=H1MqJ>|bmh+6XS-Ey#}qKXo78+#Ctalpu- zp4JNVO;Zi3qwW_iT1r1X4=mR;J3 z(E|`nUPnh1aKaX?KTA<3)j4_7##gU))LeW>JvQI+12`w7%fbSjL}|&BhXF}{ovUX4Yl3Vqg21xqGg*- z$x}=8xV0%sVKd0%C()BbHiIV~6K;UKlyF}YM*GW!bVVc8b0mE>HXhWs%sHD}_RRX% zc_%wy6y-bRq!t6!QC#cyZ-K90eW%!DTOGR-+f&H>1IK?82oy`_*xfd3)=SPfLP~+a zrp#N$KNR~V^8DP?pYr;HQ0C<16o9oP?oAcBZ+lMM9>J{JZy9Dp{W>e_{Z@goLHt%Q zVpkIgr5RplFCiIT8#l_z%F>U5BW41F?g#P|%wCg;Mk#@5z3aM)ee+vte|>V&`=x=4 zXYchGqjt_$Eg6lUDJ~HbaxI-@`eVPH_#Uy?jut=Dd-DL)7p-lqOBnsezhes;aTyse z`|tZOrN{kN#5`RbINAxh`O~11Q_*a}>vSBqJ34UdmT_$7vxV(#4FiKyqJzKi^uvGL z7C7D|fz7#C2F-y`(@SG*Yi?IYliSL6T-veX}mH&=8%d&N5^Ch#y%x)$%5 zxbaZOo2=S)A_V{5{{v^q|L$p8wEKywTRJ95%E#aJziIA%^J~Sj)e2#b7%v?!)Z^AE zgOzdBs^SNlx5(*!ERw7WV2PO^11XP?kN4~S-DZ2yxpmSDQ90E29JBHX&hI+^Tzkgp za7?~))X~>R2?3EY>OM(9+oxfx7Te0#f(!!55lKDlb-lpp!Zw_*eIFQHB6=b|@j~%i zfHO;(Hh`S?CzUo)oCKnxaD#hbPzd-~csC10xpY!*m6Z$7kzKxgys*9y-q^@$RURgk zXDx31k7MVrGk(MW3VNh!b<+cxK4`5Tmylrc;5egu&iQjf0xDU^8X(G~UMsMraiuB$ zSYifVG9aq0Ik`f(6Zsr9If?l;q_4lfHXLFHr`PPa#IKW) zAm?xeNuXRHM6kT9M30mN9Rvwv$vnFv7D@lU$<%cAt6f-_#L7UsZ7B$w?=zuW)E}9| zwlCedSwFbsqN79Od!(?}6q>m+IKn@8K*q<@=eT-!dzgf7PiwnMOqXD&qI?zLf>lK-qJkytI^fdqrHQl z`G@a;i9@Y@YR9hpmVf395Q||4e{SGoGvc&-`M_NGR)b;*67WA15FSHePw#;JNVXGL z6Vu_wL^CKwye?{TuUy&jT(_-@ z-31#+I_fWs4CUppv_A5Bk1KqQ$I=ID!Cq#I zVl>Oba3W6k=Qb!;`8Ox~@L?S!Vwcl>oA!u?x8Nh_f@=0?Ab*gad>BdK;<;=(bN1}n zh@obt-AFOXSAPpBh@{(_Z6kzME(PSNLItP{*z;Q#26H_%J{XBy!PQ{}FhZ%lMglvo zcoCgFZoMbv*DnZo@1se*&zG@A@Kn#e3xr_-d-D0cIbPrSn-LZ>K2THNLm z1Z)>~+03-G=E-fpN1%)cGD)&sF-s42yP+wl8!Isx!6d;H6fJv^<~ftvyz_c=cO(^F zy)S1oe-2~`6TcJphEpF-fZ?`t{gn{K#w#;LqyQCg06ZmGX?KHV=AC?K)Sn_lTF7!Q zRL`RK{$Y)%*qgtb{XDqQMLCsf4JuH@$Q9xjrmj&3X&{mom^*nrNsW^_Y@AU zr~gI@U**l>iJ|?tIOBv$o9R!L>m%iF`l;}%CR^`&gKAfdfZ$?dtR{SHtop8@6m!T@IN+D`+;{}^1VGNNi`lmtv`&j&Q&!RN1jW{Z&*RrRIthE$ z;rBb-^$*7_lZhtqTkz~Ar!hXh0z9)P>xh`#%rW3&U%pLZMiC39XG_L6`DBnAD8`#c z7d=|hz&d02F-)Sf?u2x_#08f1HJP<;)4OTXmM0)^etv$u-WuKwQ;fd1P*d{RjDnQeic&&;Q(vTV=YNBrQ=~XA~@2k$wFG#q|TZB!5Rk-m`11y69umG~( zWRL6e&iz38`ZwuU9hKGK{pllhZny2(U>NP>++ium1#{Pfot->wDr?i>L|G4g!EI! z_PQfDFA6SL2QeT{z4VSAeOd40u7DPg?ax-YRN}K)Yle9F=YmjRgU^cPust$0+}LR; zf7tPW50K)TGkBgE)zvgQO3UixBq%uWaE>vuuiKP=b|DqJ=_rBm+X%>t)l$C!oJSn2 z^&M}M=orLowSV?*NWi?0vq+MJ{{{fI>dD|v_q9szz~3FJ=gTmBwL{3e9XkCw*WcoD zo{bF|LmFerrUw$XCJ!zgYcRJi)nb|26aq#c(bUMVUvCQv35}PzGXka?ur(kx;deXI zbDPJ55zpKwmMOy!B;jqr!?ta}zXielB3Kakooytm$ic`b~bKa|>jy_ZlVY)7MB{zFZ_%J05d zR6{%{!BHMWeD}DvcqwyMg+zEF)1`19>iYG=+mu~hulXKr5t72;L9ikPntUgN+o2-<6Pf z4;&SxXYi@(lR1WHS1A+xQ)b-b79O(vT*A%STR{Q|A6B-qVh6s$%S6PnDG56H5PQ+& zbm+?Gm}LDsO|*C_U;1qJGALk=0VFl3v?cI{dENTQ zCMYC$;&8|+eb5uwy<{ef-{BgI{{YxpMxJopydN@)LUgwu@LvHr8UmOFn($lU!@+I9 zr&Vqyn!=x~27m^b6=L}kWgOU@yY2t1{0c? zNDGpAB44a{B4E|nga(&LY4CXH>9zbXb7D{{9UA>{eNeaqi*Lxdk@(rN9yjoE#KpxG z^_$>_CIMGw4(MVeLIJlY7nf&oA>ivE$xGsWdiW2Kmd~l_`$vlGZ2R%Q*qRk`GWW0= zd)Mfr*qkAvFvgAcl25!q41M~&dAc+ZTC*=S9N=HG54%Ghut!(7{Cb-nt@S8nw9m2|yfgW@wKtAE^tcTKkvJ~+En74-O)aWHuBk7tC`0R*Wv z`p**oh5jM$p}$^}<*iWR2f4`l^?w=K|2xO^{|*=bA9%hA>}_rtzx|(2%4jBZ7^U+X-#Lhm#psT9a?qqi_`VB)svf(+&<>S5Pz|6T{4a@*KeFx&( z`w4J5chQ(kv-8@evwCwjA#2raAQW0Ua#+90qw29#ODXa1P*21V5)#t6ob%(|&z%P; z!ZtlT<{i$sdQTzXHo|*P@_O4=5YP6kA{w#kTTGr@?(0JyvaBHH;(1iy-owCBMV)d~ zFzR%X?NoLJs!!yfe3B8v4IQ#3IcvOkfIeMBtIr{VBar7b7uYkcp+fz*B16PYK%bDX zPqhF)+LApeJUgNX8!gBF6ey{vEC7xG6rY;xc5udpAD0*-7GxePG$pI*_u}AQAMw zQh46qc!2}r+|oG*EQTKOJTIS6fD30tSbokqKxvjuUZWdVsM0`2n{|U z4*W&=YJGBm0nb!LbcAVNM!k`Q*Mn>Ybh8*bAhgTEtl57-1rS*xz}#0|?UjfDj!yF~ zXt!RatwYQ@P`_fBr94Z0k4ylA(o*~LAWhmO_M?Y`3jW~?bCmf3*$-@WA0@m#0*#5_ z4+x@u=YHe04!&8NEMbw^z^HC1?gREdZD?1dsAh1`AqV97q~`Rd`;UMlLO|3T2W}Ia zc0?INfYbwmGnfpEUrXnZBw2rU2?-j=5C0>=mJcSIMmlN#E-?T~Z;_8I$?;q(RvmDQYI0L_nW(Db!^7b4DMsepBF5tXZ-%y{k!7g9|47~ zihIot4UiemiMkU4w*WI|GgW;9IQ?c*^U!;}2=uM|y+f&Xy!weZZ;3k0{AR;>2QPHM z`U;SfoSkokslX1s$zhD9<1wzf1ghjW&!1a*59X_K0NOnEi%9$cj z+5+^@kT%FO!v&!?7#NyCF}rhckmK36)pOy`3-pCQRT>$p-(elGa?C4ZSu!_nIQ%`@ zTUaT*Ov9)D8(f{%&Biu)gT6lsWWLzgIDLep3<)JONb)Gam71>Z-U2?j@Qn@oWt8C~ zyk+J({bL^m;_wTjC%{Vr&K#YH-%r?@Mj)4D;U)$Yxm6D6$HSbj=!8y*Q$)$FhgJ-YPEY#S z;>OCYS^xf3BuLtAnsi&8iop}NE`u}^RSvyc8tUz~<$pJawh30ya7wM2K+wXYFmxIT z>bHgQT-FW?;oUY}bnVE=E>7I-nEzmXI9u_k`0S`Aw;I!+CL@jE!;H z%`-9I;)n>cGs3g*Y3pm3(QPUTK(Vp`M#=71{=>BIk$``@YOTkrDte~=_;0R01hkug z=#>iGo-t{zp8%W_T=_)MQ>h13o2nQ7n-f)8z){3)QuYOS`l)Cbntu_T1JVbtbOHm_ zUN;<89dP_Y7B_EKsFP~AzO?O&AB}!(8qglsM)K4eW$VLbbO0RsVC*YWFj~9--0W^! zLowahqlF{6W#bpjIWp`384JEg-yNzm*G(Sb>b}DNs5_z88(3T+b$c_R*4S=Raw5fF zfii8!eB{2wmVH$FnUOUbv9x8qgn7cfMROE!KHJ=>TtPYUX?p<`8e4lb@ix83|nA&VIg-S2F6X}S64sn z2ou0Yewz3N%;_bQ4nsd*h5)02;3jgFnnOtFrjrw_w40omkXfn<(qf$fzbo zC|6@)b2D<-HXAq{fMYiq_WfwPu@AJusDgc;J~xW*4|%x`GNko-)h1q|05&tw-vuJL z6dSw|Ril>O)d@`es24{^Xx}S4N4e%56wiq3L9-4Zr|(+(=jG+$SKUO$x5NRfZZFD6 z@9pF&C@45>(pR$`j+>utl80=Jrz!)6M8?OBXV>fG_}EM^bqv9m5)q+#VNg3Ik=t14 z{$(i%kZixH1Gw}+Aj0Qezz$(T>E-?|^kk-YYibSt)G5k`QSf{3@%Hg*)PHrrEb0OC zK~HMqXR#SS+Mte$z3U6x4RNLB3KH@~$jwh>U@agCa6KY#&&Z!I>m@s=s8;%AjwsIt zHPk&m;QYXvxn6Aq?IShZnLw>&Q#9(xWo_&mahM#hu@eIfn(6RbIn2foVY{l?QntiJ zaD|jKMJXt0Wa_XHJU$3RZE%~%NmXw2yV<}u8Cqmjbf`d+KV3)C$-x{sNee5IJ4NED?d zC=7w|ii$O`$MR&ZMe$>VTlzv;LIOoluWgGXLW+;GLf?T-t=Kc|V>kBl9jLvLG+1{& zZRm>^*DnYzK$#Cr-t|qU4-TJbdX9FZkE*MyVYcCXL(m40P$-zhJJqrkOMyWjg!1cw z`+B9DDq4-m4uHosb9W5iEkG-IUt!N;=J$C-lttDI8v|q-GEeUVM*B<@OPLXH7|7dg zPQmisyz)@kZe)laA1z643p@-1fsu9`jx<}Ce=}3~Fr0?RLl&{qcOQ@P@^vZkL3k1O zR)itEu}Tm~@zcJCwbGvZdcoc1lM;hO?7*(yodEv|MaxzIQx8BlJ?RUMOQ6-|Z);rN zt(x?2%iovFCz;!-9(GrOLk@V|%g0zGbHL!BP>DgIc9FsG{YN^W8tz#YazvbPoNi9! z+yquZ*L$K-z8yGL01%Q()?Sk_{mERF>v5~vJ38`=QlPnyLw9()T9l$-k}7Unhh%i9 zNi?NUK(j5^DFrh|E8(Dy4AV$)0=o9{fG0kZQOpdKq8l^F=vM_JM$Z2ZOPtf2S!rKH zk4FF)Tpeuq1|T*5RN$l!wX8|b#<;9!<&dGBGbR~v6%e?i`9W!5VG3c zYZ#a=Ssl|ZuN$WW@*Bv>gG)Hj<%A0V1!$2g|2Q;(t)4z``zc;@?ba>ir2as9?HZZI zKr0r{q=0&L&q&7Yvgb^^?@_qj2QrVU?#8dVp75!MWap>Ls2o*QRZfp6TYZE(FUU@y zx_^DYPU1l)5Jv;|AN20d%r4r2?w*tWaw!L1kH)M!cPeZKQ$VQK1OU%OfsZOK_PMI+ zy~Q-r6X2>*Z~nW`wgt1b<CCuvQlUyUb4kFnU8gaid}3f!+vY0-Us+;Zxe z+42n}o4zHNmJj6O-h!nskiZN8!oyWEvf2GrAr!6?`Lk4ft1uD$L&on^00^TXx zg}g1wE&K%_u0n8=R5v((lTXtfn>qQgFR=BTqZE`6gmjuIn$PQH9Y5>P^8xdIKn)G%4@)@eg_=j#sprH+iXHNf#G_g zJ@R9;oHFP=2wMlezoHHkPjDChouzuNd|m~Hp)|dzw+uZ2Bk4#dkOo{Wv0u`jcnx+N z$r5m?{QC$=zDK*hn3yH~1CTSO@8qo@+RkZ_cn%~9pmBCAM9ZkcGh_h8!fjj?tZU*s zD8ci~l;7DDO#xzjTeXzRQPGR8u7?qIf35Jc4CwJ`u@}Xow3*D^((aC*TUA`39ip+_ z*mEWdJktnYx%WxDSbFz=2(kgfqk()&(hUz15Q7#E#Afc?$vW_ zdU@?mnyTtz0X%p25XmY&i66?6RReRA7z8yrSE#THAq?F! zTrbq&Qb{bH{q**{)S$2jdYoJC@WS*qAl&Y-Z<`g*7otn>?Q8&M;UWKV*v+1^6I$+s zspwTPr}0mKiF88GpbXP{p(Q{6$b3;*fLnIcJA2CohXg-YS9(1Y{0ua<+#2^-AKBD% z<#q!y3vitSzN$T=9y?Ytx8X1cC`$cWHzIuJR%eVJa8_-M_@MmP2g3o!Mny%Xw~wK6 zq?4%YGypA)UHQXy)pdc;vt370#MfT}e0KkVYx3tGdimby=>AV5xbkP5gVq)*`wT&P zHLo35O8qX{M(cJb3~w1nX+AOC zJin2^t*_I6UpwhcVja|^@nO7P$ks|H)-IrsDW?T;;yId>f2q`oA9s@uzsCG`xBdSg zlTdlzNS#BY5tLTtSF`)y^)J3pY$An1p&O!7qN%q4MeCssjMWeE1CBS!p=e}}3j?%C zgo1gNr2-#cgo#N~FT0v`VcO}^PhFwHEwRxCA zuU)><{xJ1m9N+MME4BGV>W{FOgK8Vb*>`FFjJ*`*RMwr~wLiarh!!F{zpYStZ>{eR zq)Wh-lba-@VTV2RMXa(jvS9SzbP77V`xb)LT3=C9X;KFD^l)p0-hFrd$(7f-3$f62 zolxbXX4}eG=;!Dzi()r?QTF)popv)e$#jZJgGlvUHo3;x{8nydw~ap;hntfFKVQm+ zF6CyTsy~9vFgSe@ zVUHNy332wv9{zAlmjuQd!RYpv9Q>adfw%$*4D{Gkzx%p_7o@xw52)Y0d-vydp)BG2 zY5#rBSh)n=#8j#~;67dv-;~O$5=F#sa~H~j_Jv_8)feftUJvW}sc*g1(_5(s7c~j>Nls=WQre9*qv7ZLDIBJPdxCV&Je4vG=tfx`T6r>OK9B5PPT>~ zB4ELiWjy{yqos`d+EA7*njlRIGvlIz0Ijm^QS{H0f4hh}%>>VwI_snQMibu>F1#5k zxkE~ed+z8s^D6q)6)-%U<3Vr;s1Op#SRm*_j{n?}?3rAcTTe zj(A3(3yl^_66#~BV)-n#?E&?*AF^KP`>dn!7W{P56Co2oYyHA`3kZ)M2DH=nKNSn~ zt9OqUp+CameABhN0eA&H|Np_hd6VS4B z<@f5jFit1lBE>w{47M?2Ib7N0pu^1xNp4op$u~N1z2>a*F#GAc1lo*1;-Znh29vB8 zJI6htN)wgw?sf_N2q!1a*rS-(y6Bx9nnPDmFIe{-7VrGt=K!j~hk^}*NW=#a5OcLR!0{N<^TT za}y!Gpx15A_=WOR$@GM|QOX>UJ{>pZ@!P*rJ~DYTi(9EukCQccs=?nd!~fI;V%3O? z=@uL*%YedF)=$Vu3;N`Rlt1X$kJt7#NONGAwow9O>Fgw(HxzzCGWx zRETD|`fDm$&iW7wqx0U2tlK-Zqd4eGlD(Cq*##WqU5U_Md9WF#&-hlxv!wuzu{QL( zG%g__Y=2#$KxZxukYV7)SO=!@1KS@e*SLhMatrDAqlz0 z_x}6`~bQ6-uV-9RQNO*0|l>&aIVFLU34G!YC>c9kw}LKmzHLJ+GFD;Ty~|C#h=VC;@%A z?a_?#jbja$iI^W194x^7vA}az(LFYuxA%PaC1|L4mMU5l78YfODSrAyeyyK}Jq7e` zP+uduD&=8TY>^^SP`Sw7Hr!`Bx^)k#^TeL}Qkb&oYwu=W!iHcu!vCY2RXR1aWv7=?#6sC!Pci#D-Yo`n<&-(_5~N z&gv9YD!Y9D&VGYYy6*I&#!O!NI>VST&8l+5TjWmyH1r z46E9u3RP4mTDr?;e%TAgRCJW)`n3HPp{8LFPfuBM)r-IfINMx?xU-aAD{anOobkZP zuT9SQuGI7*aR|=(JEd~ndn3#`&BWU%BVU+6BsG6z&lgQNsH7xeGI#nCF+=uiK|{7< ztM#73j9<1^G9U%O_bQ0{`y83|&G@$-ZZ2uF-+9e3jr6nxGXokQav@|Z=xAc{=8Z7B z@jsy~)5w9ZkGlwMx^=5rfZCsKh;Xpp4P+ObJ1ot~T)2Am>gy?oYkLK=s%SZ|`v9nFw|@Al{ydUGiQTF`e*EfEkxj{x_;&QNqox1)Z-VA{fS4j{663 zGR>BZcTl?ahD^eg>PMuCuuFTZ!3KA=FyD~+SI+nnKgc@SRQ*|6YmN3;kp($NpvYEG zc*bY2^zg_MspU6p;bNe~GIwWn71{Y10c4~*`&^1cbae>>qyeA<3~->@Rb#*0-8gpi zob*@jx>BQDLMlV9amm9~b0Y8gjXy3)!)2?WHTbi-8c}C)LD-%FTKiyh;3>^Nhna&? zapLIKy|Gk)g5E5)!C#5~OMD-V4KwaTBGD!97(yMihF)E3+W-K?pbHJ*;P)keFr)Br?MAUtuA*U*{@d6e$BKSV_8k+*ncO>^S>)(*k=lAcbU+9PBijR78$B?!%euCJ531J?5#E`|^u!IWd5jOfLiCE-!RGJ}s z&V4(?O?MauJPE@nHW``6#hy1=9B*KfggfFpW)=dJ?<5}QfS`vxL6?mydeKENp zGV$iAEMcH7u~&<_)?;gjKIvzJ*6F}wV!M;3*Oy+nFPg{l5@lV7%ko~phFI*{ALG0} z+}tds3}E44c^>y`?3ifYP=|rWZ;`5lTuO9YQak5Z#hr52@QpP!@>Ix2KljJZ&fK`9 zmoz@7iI@7TkY$U$^~Pb$1R4vG1b}xTkDAQyeh(O0#(@X9_lM2rKS`XEjojWx$07bf znf;>@@QV-Av!^MBcxy|)+%i%Pqz%tFZ#TH1N5|pKrjc;n7J>?}4^*_Yl(Tj3<(mn? zJ_NC7U+^=C5sIhGsSoI@9=5o{uXFjriRemhL5VYr73cRa-+ijN6arK61AXeRcHD>~ zvbw4&Zud`6D6?23AnhJ2BT`VnG!3uTtakRFG*F8rkBN~{M^|@al3L@?&@s00Uika%+jkt=WNYCr;D09e zk))%4Cy9|_Cws5UMg2C^*PL($w^dx=bUGkGY&)L9uB8F{l;lzs*lOJsh zjK0P3pJ9D_RY2Td`uyQYQq28FEVl;u&IMHlNT2!pfk?58*i#uwua(m4jIGl?eWOA3 zE-rk#@luXd-?!$h9=ZMZ_v-S6DTUQ)&MgQnbMGAdP-iXVC>tV(g)s6m%X?%+StwcuSe-E^@7s+ z-c1|){m~wl|K?5ozxuH9$*=mTEJd1s-*Q8*g?NG-+rGOS#x3{%EFAgwqrObLs1-s3 zV|d|2%DraI^T@xx!41`$W$IYB<$%h@F<-{KdOk1Sqd^ys zI@V;>pQK*0ZBX=pA3FFO$2OWfnzMx&(6nD<*=}e|=#`&5D&Y@f)S&lnW`PENxo_y^ z|2m8QKfN2bf503?3xc~=$UW?C)6Y}P%o7Vj4UC_Eyc9gE6~eif@fmx%f1h7{!r@VQ z#5L=t5mo4&77Sk40W^qz?|txFgr{Rbl4fgVZ|fHW!E;aQ6kWM_W+Z8#6El&@tivqw z=mPWufT>*gxHBSfy;nBGfX>W?uH>GD1r2|F{ouC=*4QPEDvDVTi`XhssNX(GGs|Y) z>p3*1-?!ptc6N5U6a->`;$#VBB6x-wmo-`!=q8qz5BY#v>($%0Kb=Ghpj&bulX&pL zg$qxH8^f(8esKH}yh39EA+2##{9_Q2-o#Tu3=+l@r!R-2HWSU7$>Rv(1NlVUYh}W! z0RLGtI?1=ESheQF8lG&lEGsWHMS+A7JJpn?edYX6CP=O?@%WhsFa0p~DWnAax793o z9$;-gV^Puu&g0J3N+U;6H0V;-qfr4p7$%GR^MpNgXB1XtKlAhS!H91Q%i3B%GQ|2Wss|XmJ3+F z?|YJ&`R2npO%Pv&g1RKDOWIaF#X&2u6-OZ0c0Thfc3|w-!Bs44s&f~59MF=Jiu(3# zw@P*?%;9aS_#(90uU>636@Le9&j}|ZX^jMNZ=?RN_NQOcv)%IduQVoBSZ?ECJ|eak zn69%Ne}1STl?K=VlZ92NAiikTLkuk60Wr(gx%_UAOk5v*c87+JDlpHuOu*E-(&GBZ<<|dFoJU3yPMz$0PtioD_~W1X%~mko9I8>9&B1mr6kjtg zjqDM%TW)QeMY@RO424H$f32oFa>QbqU*i3{Z&8eV{h&*VfPS&Xbrz|}K;0pEhIKsN z=KB)_mCRdQ?CB()&}x%>sh&OOX{nl0bQ!aR3muJ?0&!n@ljd}va2am1NKpDKIu5q( z5#e?3Q>VP8b6F8&FL=wEmZ`~0uI0hQm&bm}ZD|~|n0&Dg@Q%J3U5Vb?v+Ytr(!KT- zurCFaor6kb#vKhh??Ug5zuzMupnY8Kk5hd;fv0@!2 zTq%;b(t&;7$^LvnPGAZU$x_spdzC@mXFDpc`0x`zZHi)dFrSBM&nZ}nOkGl+9lP31 zb57L%b8%4Y!jDp|RP8@mcrGXb{j2NtvX*T>=U^ZBMVG{mRw{XH&I_N4BD{-@1!K0W zPQ#^1;cP?Ci-Xvw=9b>xO8qn6dFJTRqkJZ__FXvRv{%&WyaE!sv+moE*W}ip zIH0=vQZvO}^Q*unsYnYzFyE=%LDFWu4?X0#nh!TjbpRE+%$3ev3Y7=#Cw zOSLzt%Z^O}D+w*uq8w>%=}J`Odd@uY4ge?BCK&cnYL@D`IKciq^%VdvYrCwg1FOZY zi+(FRv3{Eq3xT2(nK6om0N_A=lk3W_mil8s{%~Ih^9?|hzY$6DB?CI#ot9fA>qESF(X%!XC7IwX0jrMSo<}z)v*;=p&V&k(16{VmaMj z@L}rQ=Aqc(Jb<=Qy{eD3wS)1oSJ9#Zl%fKoYm8&U2F0rY=KyBJ$%#KgPk&KRkm?9v zMckY$8;`C0DhSA!i*RRjX^yQ zFz7_^!1tRIQ#TLY8>(4!CVCq2o0*x>%YB*AD`DfyFC>Um-SLPKFrN741Qprxps_p2 zpb(25z?=7hdbc=UzS`e?qsLx9&uG6(@#|>QZoP_?{M$16gTl8x7k_ZU!E%mzH0 zsV0iIQR(!S4bx~-?}cVpv22HZq+e~9vRsG zW54U<#L@TF)OB^|$|@+k!Eb74PYU)OW=hbBCk>zF2rstXt$fKPv66w3@t49_MZMc{ z&oDBs|4_@nwZOImK#_8)_BXp#^PYd`9+Jw1i(N+F6ii)`>cI`9i%NRVAIZ+p6-nE-(H%V zb2kn#FOG(9cr5Djg1Q5UPW+FqJ5>6twt&f3Qj3|>_@$_LfP^ZXm#;X9gMA+(Ou5JN zcMHjsy5LQJIfPMvlXm8{b<-kmxr&Mk&z19a1D#wuwtGI{5Nwr({>_sk>e%mmL1yke zbfF(^e@i71i1!09@9$@PzE}T}v^ItD40}Brlc4l?ZSCaQYbNRuE2FR8Vq4QV5c_VV z>vz{8udzyyRXQqgARm8~s(7fN=OGo%Nt|3d-}xFOB;RbY{($LaGo5evb929T_J`#` zbOa1CIL*X7Uiy`=O+uPmiW`p%Krh$Hzg%A8a-oJl;)!AIEEC?WbNB}A24?c?9tGgAvr%n;KGClhy0nY+L zS5wnrgi|o4j!&)$wNjP-9g1nkSeDc0<^MZoYQ3b zi)C!`Zp+Me2%nerjKft_&|~9!9lVV6Pv6~GxJ6Y~0Mg60K_Hhu5efIk3YDS)E1RgeVLQAerIG)64iO z;@Ei*&{$AL0QsU}_n&ry?BSNL@3Bjv97{rt%X?S1Xx1i_Q`YK2I6PY0xqP><{S~Vq zN1a6Z(fe!`ji=NzDC|-7JHm6%eHMnZe4+_noFzubpL9O*d@xq#DoDU8+_-n|UU0Lk zUanbDxSO>yG_GX;D3cnT8z`C+%yN&$20$UdJcwh`M+N`>t<56g(m--$l8oj9J^JrQ zJ&btw4C+TzcCF#!1Ts`)^63+@~A5HA}ri{d>W6?a{R}Um#GO@Ap{%+6S?s~hlWHKd4 zBUSrKTwv1ynwsq{{PQd-3_b%KzQYy-BFA8?+OUC~b4ur<=|6S#iJBTVTPxhRmO_NS zArlobXf*bL-uAZdej(rAz_cV3Lc$ELzu(_+KBrm!XN}R3$Xl_;c=X^>ziZ*vt5|0P z!-V+`F|1}hUuSrQ2c2!vpiRK6LwpuBSH&o7osk%oOgzpifom%gOw<1ESY$Sx$r=I$ zazm6BC8ZU+g5DCK^2`Kl1t#upbgFKht_?a2Nh8FuQ05@MX61;%)n!4kLoIS&zqxg% zXb%z3fs^!L@pb<#-U?qTeoYii76GZ%SmaoHz^SBpQZj7ew%|>6<;bf^!;|`UJ;syST6eBvRqrmP<7;2CqT%YFgUG52`%R z4-vqiBMityA3$&gc58;!wn>UwuK+XfeKLOw0sw?vO;e$jifdPaw$s$#AJWrPM88DY zBXZxn7q0V9H2%#4)qo={>>mo^_^;@NGgu{Q%1y29^epIFSyf8@oC8=br7t2uiOy$U z?*5fCgwNfKKBaszgzhZ1)1SMu85#6iFqpZ4f~gUCmut$A5$?+m-jK6#YGG3;JY1^>6S_@Sa{h_*q1>jB`Q!IPFoK1NGs?YGsrEr`$195sl~c%# z1eA?1c(bsuXno^;SBYb>+|JC=lAsk6%1p?!56*L%)OizBAYzcihH4Qeu~H+}ZY� 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 F0RZ!X3D5ul literal 39865 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 z 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 KyE$^tUj1)bzEb4? diff --git a/frontend/src/lib/components/CommandPalette/DebugCHQueries.tsx b/frontend/src/lib/components/CommandPalette/DebugCHQueries.tsx index 295298eb0fc28..9c73b502718dd 100644 --- a/frontend/src/lib/components/CommandPalette/DebugCHQueries.tsx +++ b/frontend/src/lib/components/CommandPalette/DebugCHQueries.tsx @@ -25,7 +25,11 @@ export interface Query { timestamp: string query: string exception: string - type: number + /** + * 1 means running, 2 means finished, 3 means errored before execution, 4 means errored during execution. + * + * @see `type` column in https://clickhouse.com/docs/en/operations/system-tables/query_log */ + status: 1 | 2 | 3 | 4 execution_time: number path: string } @@ -146,9 +150,13 @@ function DebugCHQueries(): JSX.Element { ) }, }, + { title: 'Duration', render: function exec(_, item) { + if (item.status === 1) { + return 'In progress…' + } return <>{Math.round((item.execution_time + Number.EPSILON) * 100) / 100} ms }, align: 'right',