Compare commits

...

6 Commits

Author SHA1 Message Date
Chocobozzz c9f901d6a3
Merge branch 'master' into meilisearch 2023-12-20 16:31:34 +01:00
Chocobozzz 4502709205
Fix request version error 2023-12-20 16:30:54 +01:00
Chocobozzz b98aa43a77
Merge branch 'master' into meilisearch 2023-12-18 15:32:59 +01:00
Chocobozzz 0a210321ea
Fix filter 2023-12-18 15:25:18 +01:00
Chocobozzz 67de789428
Fix v6 indexation 2023-12-18 14:48:40 +01:00
Chocobozzz 33c2c59460
Add indexation hosts log 2023-12-18 12:03:10 +01:00
4 changed files with 29 additions and 5 deletions

View File

@ -1,6 +1,7 @@
import { CONFIG } from '../../initializers/constants' import { CONFIG } from '../../initializers/constants'
import { listIndexInstancesHost } from '../requests/instances-index' import { listIndexInstancesHost, getMajorInstanceVersion } from '../requests/instances-index'
import { client } from '../../helpers/meilisearch' import { client } from '../../helpers/meilisearch'
import { logger } from '../../helpers/logger'
async function buildInstanceHosts () { async function buildInstanceHosts () {
let indexHosts = await listIndexInstancesHost() let indexHosts = await listIndexInstancesHost()
@ -13,6 +14,16 @@ async function buildInstanceHosts () {
indexHosts = indexHosts.filter(h => whitelistHosts.includes(h)) indexHosts = indexHosts.filter(h => whitelistHosts.includes(h))
} }
for (const indexHost of indexHosts) {
const instanceVersion = await getMajorInstanceVersion(indexHost)
if (instanceVersion < 4) {
logger.info(`Do not index ${indexHost} because the major version is too low (v${instanceVersion} < v4)`)
indexHosts = indexHosts.filter(h => h !== indexHost)
}
}
const dbHosts = await listDBInstances() const dbHosts = await listDBInstances()
const removedHosts = getRemovedHosts(dbHosts, indexHosts) const removedHosts = getRemovedHosts(dbHosts, indexHosts)

View File

@ -1,7 +1,7 @@
import { CONFIG } from '../../initializers/constants' import { CONFIG } from '../../initializers/constants'
import { doRequest } from '../../helpers/requests' import { doRequest } from '../../helpers/requests'
async function listIndexInstancesHost (): Promise<string[]> { export async function listIndexInstancesHost (): Promise<string[]> {
const uri = CONFIG.INSTANCES_INDEX.URL const uri = CONFIG.INSTANCES_INDEX.URL
const qs = { const qs = {
@ -14,6 +14,18 @@ async function listIndexInstancesHost (): Promise<string[]> {
return body.data.map(o => o.host as string) return body.data.map(o => o.host as string)
} }
export { export async function getMajorInstanceVersion (host: string): Promise<number> {
listIndexInstancesHost try {
const { body } = await doRequest<any>({ uri: `https://${host}/api/v1/config`, json: true })
const version = body.serverVersion
const majorVersion = parseInt(version.split('.')[0])
return isNaN(majorVersion)
? 0
: majorVersion
} catch {
return 0
}
} }

View File

@ -55,7 +55,6 @@ async function getVideos (host: string, start: number): Promise<IndexableVideo[]
uri: url, uri: url,
qs: { qs: {
start, start,
filter: 'local', // Deprecated filter for old PeerTube instances
isLocal: true, isLocal: true,
nsfw: 'both', nsfw: 'both',
skipCount: true, skipCount: true,

View File

@ -63,6 +63,8 @@ export class IndexationScheduler extends AbstractScheduler {
await o.removeFromHosts(removedHosts) await o.removeFromHosts(removedHosts)
} }
logger.info({ indexHosts }, 'Will index %s hosts', indexHosts.length)
await Bluebird.map(indexHosts, async host => { await Bluebird.map(indexHosts, async host => {
try { try {
await this.indexHost(host) await this.indexHost(host)