Put config redundancy strategies in "strategies" subkey
authorChocobozzz <me@florianbigard.com>
Wed, 19 Sep 2018 14:12:07 +0000 (16:12 +0200)
committerChocobozzz <me@florianbigard.com>
Wed, 19 Sep 2018 14:12:07 +0000 (16:12 +0200)
config/default.yaml
config/production.yaml.example
config/test.yaml
server/controllers/api/server/stats.ts
server/initializers/checker.ts
server/initializers/constants.ts
server/lib/activitypub/actor.ts
server/lib/schedulers/videos-redundancy-scheduler.ts
server/models/video/tag.ts

index ab07bfeddc2b832c4ded4cf33eb628d12735d3cc..00eeaea8c4d22c5d28b94ae53ec062873bbe1424 100644 (file)
@@ -71,16 +71,17 @@ trending:
 # Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
 redundancy:
   videos:
-#    -
-#      size: '10GB'
-#      strategy: 'most-views' # Cache videos that have the most views
-#    -
-#      size: '10GB'
-#      strategy: 'trending' # Cache trending videos
-#    -
-#      size: '10GB'
-#      strategy: 'recently-added' # Cache recently added videos
-#      minViews: 10 # Having at least x views
+    strategies:
+#      -
+#        size: '10GB'
+#        strategy: 'most-views' # Cache videos that have the most views
+#      -
+#        size: '10GB'
+#        strategy: 'trending' # Cache trending videos
+#      -
+#        size: '10GB'
+#        strategy: 'recently-added' # Cache recently added videos
+#        minViews: 10 # Having at least x views
 
 cache:
   previews:
index f9557b8eb967f3585ce6afd1bffc4bb9bb57ab2c..28770e480c70e013b75e588f57d9871abc889eb8 100644 (file)
@@ -72,16 +72,17 @@ trending:
 # Once you have defined your strategies, choose which instances you want to cache in admin -> manage follows -> following
 redundancy:
   videos:
-#    -
-#      size: '10GB'
-#      strategy: 'most-views' # Cache videos that have the most views
-#    -
-#      size: '10GB'
-#      strategy: 'trending' # Cache trending videos
-#    -
-#      size: '10GB'
-#      strategy: 'recently-added' # Cache recently added videos
-#      minViews: 10 # Having at least x views
+    strategies:
+#      -
+#        size: '10GB'
+#        strategy: 'most-views' # Cache videos that have the most views
+#      -
+#        size: '10GB'
+#        strategy: 'trending' # Cache trending videos
+#      -
+#        size: '10GB'
+#        strategy: 'recently-added' # Cache recently added videos
+#        minViews: 10 # Having at least x views
 
 ###############################################################################
 #
index d3e0e49ac77b40d4e12c3d44811f76a41eaafdbc..d36d90bbd71d1ea636c4f09c5be2bd72ef39bab3 100644 (file)
@@ -23,16 +23,17 @@ log:
 
 redundancy:
   videos:
-    -
-      size: '10MB'
-      strategy: 'most-views'
-    -
-      size: '10MB'
-      strategy: 'trending'
-    -
-      size: '10MB'
-      strategy: 'recently-added'
-      minViews: 1
+    strategies:
+      -
+        size: '10MB'
+        strategy: 'most-views'
+      -
+        size: '10MB'
+        strategy: 'trending'
+      -
+        size: '10MB'
+        strategy: 'recently-added'
+        minViews: 1
 
 cache:
   previews:
index bb6311e81cd40db32961b7f0cbe73929d556562a..85803f69ee87e4559f4dbe56bf14f1688122e649 100644 (file)
@@ -23,7 +23,7 @@ async function getStats (req: express.Request, res: express.Response, next: expr
   const { totalInstanceFollowers, totalInstanceFollowing } = await ActorFollowModel.getStats()
 
   const videosRedundancyStats = await Promise.all(
-    CONFIG.REDUNDANCY.VIDEOS.map(r => {
+    CONFIG.REDUNDANCY.VIDEOS.STRATEGIES.map(r => {
       return VideoRedundancyModel.getStats(r.strategy)
         .then(stats => Object.assign(stats, { strategy: r.strategy, totalSize: r.size }))
     })
index b9dc1e725468cee4737b0273e5b3197e162c5ea1..8b528084873d133e570e46183bab7a43a1119997 100644 (file)
@@ -40,7 +40,7 @@ function checkConfig () {
   }
 
   // Redundancies
-  const redundancyVideos = config.get<VideosRedundancy[]>('redundancy.videos')
+  const redundancyVideos = config.get<VideosRedundancy[]>('redundancy.videos.strategies')
   if (isArray(redundancyVideos)) {
     for (const r of redundancyVideos) {
       if ([ 'most-views', 'trending', 'recently-added' ].indexOf(r.strategy) === -1) {
@@ -75,6 +75,7 @@ function checkMissedConfig () {
     'cache.previews.size', 'admin.email',
     'signup.enabled', 'signup.limit', 'signup.requires_email_verification',
     'signup.filters.cidr.whitelist', 'signup.filters.cidr.blacklist',
+    'redundancy.videos.strategies',
     'transcoding.enabled', 'transcoding.threads',
     'import.videos.http.enabled', 'import.videos.torrent.enabled',
     'trending.videos.interval_days',
index fa90939186a6a69a692ad26e94abba67cffe9833..881978753b73e9b1c955690540134adf24d9bef5 100644 (file)
@@ -212,7 +212,9 @@ const CONFIG = {
     }
   },
   REDUNDANCY: {
-    VIDEOS: buildVideosRedundancy(config.get<any[]>('redundancy.videos'))
+    VIDEOS: {
+      STRATEGIES: buildVideosRedundancy(config.get<any[]>('redundancy.videos.strategies'))
+    }
   },
   ADMIN: {
     get EMAIL () { return config.get<string>('admin.email') }
index 0bdb7d12eab16bd1ce40bd005fec9261c11d6925..d37a695a725dc7c3abf44d889382a9dea8b18d76 100644 (file)
@@ -78,6 +78,9 @@ async function getOrCreateActorAndServerAndModel (
     created = true
   }
 
+  if (actor.Account) actor.Account.Actor = actor
+  if (actor.VideoChannel) actor.VideoChannel.Actor = actor
+
   const { actor: actorRefreshed, refreshed } = await retryTransactionWrapper(refreshActorIfNeeded, actor, fetchType)
   if (!actorRefreshed) throw new Error('Actor ' + actorRefreshed.url + ' does not exist anymore.')
 
index 7079600a9cf636c74a204b460503482f5d95293c..5f9fd991129103bc96267670f4b8c566ee7a0fc1 100644 (file)
@@ -1,10 +1,9 @@
 import { AbstractScheduler } from './abstract-scheduler'
 import { CONFIG, JOB_TTL, REDUNDANCY, SCHEDULER_INTERVALS_MS } from '../../initializers'
 import { logger } from '../../helpers/logger'
-import { RecentlyAddedStrategy, VideoRedundancyStrategy, VideosRedundancy } from '../../../shared/models/redundancy'
+import { VideoRedundancyStrategy, VideosRedundancy } from '../../../shared/models/redundancy'
 import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy'
 import { VideoFileModel } from '../../models/video/video-file'
-import { sortBy } from 'lodash'
 import { downloadWebTorrentVideo } from '../../helpers/webtorrent'
 import { join } from 'path'
 import { rename } from 'fs-extra'
@@ -12,7 +11,6 @@ import { getServerActor } from '../../helpers/utils'
 import { sendCreateCacheFile, sendUpdateCacheFile } from '../activitypub/send'
 import { VideoModel } from '../../models/video/video'
 import { getVideoCacheFileActivityPubUrl } from '../activitypub/url'
-import { removeVideoRedundancy } from '../redundancy'
 import { isTestInstance } from '../../helpers/core-utils'
 
 export class VideosRedundancyScheduler extends AbstractScheduler {
@@ -31,7 +29,7 @@ export class VideosRedundancyScheduler extends AbstractScheduler {
 
     this.executing = true
 
-    for (const obj of CONFIG.REDUNDANCY.VIDEOS) {
+    for (const obj of CONFIG.REDUNDANCY.VIDEOS.STRATEGIES) {
       try {
         const videoToDuplicate = await this.findVideoToDuplicate(obj)
         if (!videoToDuplicate) continue
index e39a418cdfb0199965bc94ff39c5eb970c45f09a..b39621eaf4a4daf55cdb93a3a5f0fe903674bd7f 100644 (file)
@@ -48,11 +48,10 @@ export class TagModel extends Model<TagModel> {
         },
         defaults: {
           name: tag
-        }
+        },
+        transaction
       }
 
-      if (transaction) query['transaction'] = transaction
-
       const promise = TagModel.findOrCreate(query)
         .then(([ tagInstance ]) => tagInstance)
       tasks.push(promise)