aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--config/default.yaml21
-rw-r--r--config/production.yaml.example21
-rw-r--r--config/test.yaml21
-rw-r--r--server/controllers/api/server/stats.ts2
-rw-r--r--server/initializers/checker.ts3
-rw-r--r--server/initializers/constants.ts4
-rw-r--r--server/lib/activitypub/actor.ts3
-rw-r--r--server/lib/schedulers/videos-redundancy-scheduler.ts6
-rw-r--r--server/models/video/tag.ts5
9 files changed, 46 insertions, 40 deletions
diff --git a/config/default.yaml b/config/default.yaml
index ab07bfedd..00eeaea8c 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -71,16 +71,17 @@ trending:
71# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following 71# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
72redundancy: 72redundancy:
73 videos: 73 videos:
74# - 74 strategies:
75# size: '10GB' 75# -
76# strategy: 'most-views' # Cache videos that have the most views 76# size: '10GB'
77# - 77# strategy: 'most-views' # Cache videos that have the most views
78# size: '10GB' 78# -
79# strategy: 'trending' # Cache trending videos 79# size: '10GB'
80# - 80# strategy: 'trending' # Cache trending videos
81# size: '10GB' 81# -
82# strategy: 'recently-added' # Cache recently added videos 82# size: '10GB'
83# minViews: 10 # Having at least x views 83# strategy: 'recently-added' # Cache recently added videos
84# minViews: 10 # Having at least x views
84 85
85cache: 86cache:
86 previews: 87 previews:
diff --git a/config/production.yaml.example b/config/production.yaml.example
index f9557b8eb..28770e480 100644
--- a/config/production.yaml.example
+++ b/config/production.yaml.example
@@ -72,16 +72,17 @@ trending:
72# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following 72# Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
73redundancy: 73redundancy:
74 videos: 74 videos:
75# - 75 strategies:
76# size: '10GB' 76# -
77# strategy: 'most-views' # Cache videos that have the most views 77# size: '10GB'
78# - 78# strategy: 'most-views' # Cache videos that have the most views
79# size: '10GB' 79# -
80# strategy: 'trending' # Cache trending videos 80# size: '10GB'
81# - 81# strategy: 'trending' # Cache trending videos
82# size: '10GB' 82# -
83# strategy: 'recently-added' # Cache recently added videos 83# size: '10GB'
84# minViews: 10 # Having at least x views 84# strategy: 'recently-added' # Cache recently added videos
85# minViews: 10 # Having at least x views
85 86
86############################################################################### 87###############################################################################
87# 88#
diff --git a/config/test.yaml b/config/test.yaml
index d3e0e49ac..d36d90bbd 100644
--- a/config/test.yaml
+++ b/config/test.yaml
@@ -23,16 +23,17 @@ log:
23 23
24redundancy: 24redundancy:
25 videos: 25 videos:
26 - 26 strategies:
27 size: '10MB' 27 -
28 strategy: 'most-views' 28 size: '10MB'
29 - 29 strategy: 'most-views'
30 size: '10MB' 30 -
31 strategy: 'trending' 31 size: '10MB'
32 - 32 strategy: 'trending'
33 size: '10MB' 33 -
34 strategy: 'recently-added' 34 size: '10MB'
35 minViews: 1 35 strategy: 'recently-added'
36 minViews: 1
36 37
37cache: 38cache:
38 previews: 39 previews:
diff --git a/server/controllers/api/server/stats.ts b/server/controllers/api/server/stats.ts
index bb6311e81..85803f69e 100644
--- a/server/controllers/api/server/stats.ts
+++ b/server/controllers/api/server/stats.ts
@@ -23,7 +23,7 @@ async function getStats (req: express.Request, res: express.Response, next: expr
23 const { totalInstanceFollowers, totalInstanceFollowing } = await ActorFollowModel.getStats() 23 const { totalInstanceFollowers, totalInstanceFollowing } = await ActorFollowModel.getStats()
24 24
25 const videosRedundancyStats = await Promise.all( 25 const videosRedundancyStats = await Promise.all(
26 CONFIG.REDUNDANCY.VIDEOS.map(r => { 26 CONFIG.REDUNDANCY.VIDEOS.STRATEGIES.map(r => {
27 return VideoRedundancyModel.getStats(r.strategy) 27 return VideoRedundancyModel.getStats(r.strategy)
28 .then(stats => Object.assign(stats, { strategy: r.strategy, totalSize: r.size })) 28 .then(stats => Object.assign(stats, { strategy: r.strategy, totalSize: r.size }))
29 }) 29 })
diff --git a/server/initializers/checker.ts b/server/initializers/checker.ts
index b9dc1e725..8b5280848 100644
--- a/server/initializers/checker.ts
+++ b/server/initializers/checker.ts
@@ -40,7 +40,7 @@ function checkConfig () {
40 } 40 }
41 41
42 // Redundancies 42 // Redundancies
43 const redundancyVideos = config.get<VideosRedundancy[]>('redundancy.videos') 43 const redundancyVideos = config.get<VideosRedundancy[]>('redundancy.videos.strategies')
44 if (isArray(redundancyVideos)) { 44 if (isArray(redundancyVideos)) {
45 for (const r of redundancyVideos) { 45 for (const r of redundancyVideos) {
46 if ([ 'most-views', 'trending', 'recently-added' ].indexOf(r.strategy) === -1) { 46 if ([ 'most-views', 'trending', 'recently-added' ].indexOf(r.strategy) === -1) {
@@ -75,6 +75,7 @@ function checkMissedConfig () {
75 'cache.previews.size', 'admin.email', 75 'cache.previews.size', 'admin.email',
76 'signup.enabled', 'signup.limit', 'signup.requires_email_verification', 76 'signup.enabled', 'signup.limit', 'signup.requires_email_verification',
77 'signup.filters.cidr.whitelist', 'signup.filters.cidr.blacklist', 77 'signup.filters.cidr.whitelist', 'signup.filters.cidr.blacklist',
78 'redundancy.videos.strategies',
78 'transcoding.enabled', 'transcoding.threads', 79 'transcoding.enabled', 'transcoding.threads',
79 'import.videos.http.enabled', 'import.videos.torrent.enabled', 80 'import.videos.http.enabled', 'import.videos.torrent.enabled',
80 'trending.videos.interval_days', 81 'trending.videos.interval_days',
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts
index fa9093918..881978753 100644
--- a/server/initializers/constants.ts
+++ b/server/initializers/constants.ts
@@ -212,7 +212,9 @@ const CONFIG = {
212 } 212 }
213 }, 213 },
214 REDUNDANCY: { 214 REDUNDANCY: {
215 VIDEOS: buildVideosRedundancy(config.get<any[]>('redundancy.videos')) 215 VIDEOS: {
216 STRATEGIES: buildVideosRedundancy(config.get<any[]>('redundancy.videos.strategies'))
217 }
216 }, 218 },
217 ADMIN: { 219 ADMIN: {
218 get EMAIL () { return config.get<string>('admin.email') } 220 get EMAIL () { return config.get<string>('admin.email') }
diff --git a/server/lib/activitypub/actor.ts b/server/lib/activitypub/actor.ts
index 0bdb7d12e..d37a695a7 100644
--- a/server/lib/activitypub/actor.ts
+++ b/server/lib/activitypub/actor.ts
@@ -78,6 +78,9 @@ async function getOrCreateActorAndServerAndModel (
78 created = true 78 created = true
79 } 79 }
80 80
81 if (actor.Account) actor.Account.Actor = actor
82 if (actor.VideoChannel) actor.VideoChannel.Actor = actor
83
81 const { actor: actorRefreshed, refreshed } = await retryTransactionWrapper(refreshActorIfNeeded, actor, fetchType) 84 const { actor: actorRefreshed, refreshed } = await retryTransactionWrapper(refreshActorIfNeeded, actor, fetchType)
82 if (!actorRefreshed) throw new Error('Actor ' + actorRefreshed.url + ' does not exist anymore.') 85 if (!actorRefreshed) throw new Error('Actor ' + actorRefreshed.url + ' does not exist anymore.')
83 86
diff --git a/server/lib/schedulers/videos-redundancy-scheduler.ts b/server/lib/schedulers/videos-redundancy-scheduler.ts
index 7079600a9..5f9fd9911 100644
--- a/server/lib/schedulers/videos-redundancy-scheduler.ts
+++ b/server/lib/schedulers/videos-redundancy-scheduler.ts
@@ -1,10 +1,9 @@
1import { AbstractScheduler } from './abstract-scheduler' 1import { AbstractScheduler } from './abstract-scheduler'
2import { CONFIG, JOB_TTL, REDUNDANCY, SCHEDULER_INTERVALS_MS } from '../../initializers' 2import { CONFIG, JOB_TTL, REDUNDANCY, SCHEDULER_INTERVALS_MS } from '../../initializers'
3import { logger } from '../../helpers/logger' 3import { logger } from '../../helpers/logger'
4import { RecentlyAddedStrategy, VideoRedundancyStrategy, VideosRedundancy } from '../../../shared/models/redundancy' 4import { VideoRedundancyStrategy, VideosRedundancy } from '../../../shared/models/redundancy'
5import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy' 5import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy'
6import { VideoFileModel } from '../../models/video/video-file' 6import { VideoFileModel } from '../../models/video/video-file'
7import { sortBy } from 'lodash'
8import { downloadWebTorrentVideo } from '../../helpers/webtorrent' 7import { downloadWebTorrentVideo } from '../../helpers/webtorrent'
9import { join } from 'path' 8import { join } from 'path'
10import { rename } from 'fs-extra' 9import { rename } from 'fs-extra'
@@ -12,7 +11,6 @@ import { getServerActor } from '../../helpers/utils'
12import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send' 11import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send'
13import { VideoModel } from '../../models/video/video' 12import { VideoModel } from '../../models/video/video'
14import { getVideoCacheFileActivityPubUrl } from '../activitypub/url' 13import { getVideoCacheFileActivityPubUrl } from '../activitypub/url'
15import { removeVideoRedundancy } from '../redundancy'
16import { isTestInstance } from '../../helpers/core-utils' 14import { isTestInstance } from '../../helpers/core-utils'
17 15
18export class VideosRedundancyScheduler extends AbstractScheduler { 16export class VideosRedundancyScheduler extends AbstractScheduler {
@@ -31,7 +29,7 @@ export class VideosRedundancyScheduler extends AbstractScheduler {
31 29
32 this.executing = true 30 this.executing = true
33 31
34 for (const obj of CONFIG.REDUNDANCY.VIDEOS) { 32 for (const obj of CONFIG.REDUNDANCY.VIDEOS.STRATEGIES) {
35 try { 33 try {
36 const videoToDuplicate = await this.findVideoToDuplicate(obj) 34 const videoToDuplicate = await this.findVideoToDuplicate(obj)
37 if (!videoToDuplicate) continue 35 if (!videoToDuplicate) continue
diff --git a/server/models/video/tag.ts b/server/models/video/tag.ts
index e39a418cd..b39621eaf 100644
--- a/server/models/video/tag.ts
+++ b/server/models/video/tag.ts
@@ -48,11 +48,10 @@ export class TagModel extends Model<TagModel> {
48 }, 48 },
49 defaults: { 49 defaults: {
50 name: tag 50 name: tag
51 } 51 },
52 transaction
52 } 53 }
53 54
54 if (transaction) query['transaction'] = transaction
55
56 const promise = TagModel.findOrCreate(query) 55 const promise = TagModel.findOrCreate(query)
57 .then(([ tagInstance ]) => tagInstance) 56 .then(([ tagInstance ]) => tagInstance)
58 tasks.push(promise) 57 tasks.push(promise)