From fcd71e14a4bb4ab03d82ec9f428626102f99c7fa Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 13 Jan 2025 11:41:07 +0100 Subject: [PATCH] Enable viewers protocol v2 --- packages/node-utils/src/env.ts | 4 --- .../src/api/views/video-views-counter.ts | 27 +++---------------- packages/tests/src/shared/views.ts | 7 +---- server/core/lib/activitypub/send/send-view.ts | 17 +++++------- .../lib/views/shared/video-viewer-counters.ts | 6 ++--- 5 files changed, 13 insertions(+), 48 deletions(-) diff --git a/packages/node-utils/src/env.ts b/packages/node-utils/src/env.ts index dfbb50833..4ef7e9e5a 100644 --- a/packages/node-utils/src/env.ts +++ b/packages/node-utils/src/env.ts @@ -64,7 +64,3 @@ export function isProdInstance () { export function getAppNumber () { return process.env.NODE_APP_INSTANCE || '' } - -export function isUsingViewersFederationV2 () { - return process.env.USE_VIEWERS_FEDERATION_V2 === 'true' -} diff --git a/packages/tests/src/api/views/video-views-counter.ts b/packages/tests/src/api/views/video-views-counter.ts index 504998f17..cbf6730f7 100644 --- a/packages/tests/src/api/views/video-views-counter.ts +++ b/packages/tests/src/api/views/video-views-counter.ts @@ -203,33 +203,12 @@ describe('Test video views/viewers counters', function () { }) } - describe('Federation V1', function () { + describe('Federation', function () { before(async function () { this.timeout(120000) - servers = await prepareViewsServers({ viewExpiration: '5 seconds', viewersFederationV2: false }) - }) - - describe('Not using session id', function () { - runTests({ useSessionId: false }) - }) - - describe('Using session id', function () { - runTests({ useSessionId: true }) - }) - - after(async function () { - await cleanupTests(servers) - }) - }) - - describe('Federation V2', function () { - - before(async function () { - this.timeout(120000) - - servers = await prepareViewsServers({ viewExpiration: '5 seconds', viewersFederationV2: true }) + servers = await prepareViewsServers({ viewExpiration: '5 seconds' }) }) describe('Not using session id', function () { @@ -277,7 +256,7 @@ describe('Test video views/viewers counters', function () { before(async function () { this.timeout(120000) - servers = await prepareViewsServers({ viewExpiration: '5 seconds', viewersFederationV2: true, trustViewerSessionId: false }); + servers = await prepareViewsServers({ viewExpiration: '5 seconds', trustViewerSessionId: false }); ({ uuid: videoUUID } = await servers[0].videos.quickUpload({ name: 'video' })) await waitJobs(servers) diff --git a/packages/tests/src/shared/views.ts b/packages/tests/src/shared/views.ts index 5d70d42f6..fb9c15f60 100644 --- a/packages/tests/src/shared/views.ts +++ b/packages/tests/src/shared/views.ts @@ -31,16 +31,11 @@ async function processViewsBuffer (servers: PeerTubeServer[]) { } async function prepareViewsServers (options: { - viewersFederationV2?: boolean viewExpiration?: string // default 1 second trustViewerSessionId?: boolean // default true } = {}) { const { viewExpiration = '1 second', trustViewerSessionId = true } = options - const env = options?.viewersFederationV2 === true - ? { USE_VIEWERS_FEDERATION_V2: 'true' } - : undefined - const config = { views: { videos: { @@ -51,7 +46,7 @@ async function prepareViewsServers (options: { } } - const servers = await createMultipleServers(2, config, { env }) + const servers = await createMultipleServers(2, config) await setAccessTokensToServers(servers) await setDefaultVideoChannel(servers) diff --git a/server/core/lib/activitypub/send/send-view.ts b/server/core/lib/activitypub/send/send-view.ts index 46f91a275..d97ec9dd4 100644 --- a/server/core/lib/activitypub/send/send-view.ts +++ b/server/core/lib/activitypub/send/send-view.ts @@ -1,12 +1,11 @@ -import { Transaction } from 'sequelize' +import { ActivityAudience, ActivityView } from '@peertube/peertube-models' import { VideoViewsManager } from '@server/lib/views/video-views-manager.js' import { MActorAudience, MActorLight, MVideoImmutable, MVideoUrl } from '@server/types/models/index.js' -import { ActivityAudience, ActivityView } from '@peertube/peertube-models' +import { Transaction } from 'sequelize' import { logger } from '../../../helpers/logger.js' import { audiencify, getAudience } from '../audience.js' import { getLocalVideoViewActivityPubUrl } from '../url.js' import { sendVideoRelatedActivity } from './shared/send-utils.js' -import { isUsingViewersFederationV2 } from '@peertube/peertube-node-utils' async function sendView (options: { byActor: MActorLight @@ -61,12 +60,10 @@ function buildViewActivity (options: { expires: new Date(VideoViewsManager.Instance.buildViewerExpireTime()).toISOString(), - result: isUsingViewersFederationV2() - ? { - interactionType: 'WatchAction', - type: 'InteractionCounter', - userInteractionCount: viewersCount - } - : undefined + result: { + interactionType: 'WatchAction', + type: 'InteractionCounter', + userInteractionCount: viewersCount + } }, audience) } diff --git a/server/core/lib/views/shared/video-viewer-counters.ts b/server/core/lib/views/shared/video-viewer-counters.ts index c81529283..44bcdc544 100644 --- a/server/core/lib/views/shared/video-viewer-counters.ts +++ b/server/core/lib/views/shared/video-viewer-counters.ts @@ -1,4 +1,4 @@ -import { isTestOrDevInstance, isUsingViewersFederationV2 } from '@peertube/peertube-node-utils' +import { isTestOrDevInstance } from '@peertube/peertube-node-utils' import { exists } from '@server/helpers/custom-validators/misc.js' import { logger, loggerTagsFactory } from '@server/helpers/logger.js' import { VIEW_LIFETIME } from '@server/initializers/constants.js' @@ -223,7 +223,7 @@ export class VideoViewerCounters { const federationLimit = now - (VIEW_LIFETIME.VIEWER_COUNTER * 0.75) if (viewer.lastFederation && viewer.lastFederation > federationLimit) return - if (video.remote === false && isUsingViewersFederationV2()) return + if (video.remote === false) return await sendView({ byActor: await getServerActor(), @@ -236,8 +236,6 @@ export class VideoViewerCounters { } private async federateTotalViewers (video: MVideoImmutable) { - if (!isUsingViewersFederationV2()) return - await sendView({ byActor: await getServerActor(), video,