const JOB_COMPLETED_LIFETIME = 60000 * 60 * 24 * 2 // 2 days
// 1 hour
-let SCHEDULER_INTERVAL = 60000 * 60
+let SCHEDULER_INTERVALS_MS = {
+ badActorFollow: 60000 * 60, // 1 hour
+ removeOldJobs: 60000 * 60, // 1 hour
+ updateVideos: 60000 // 1 minute
+}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
+const TRACKER_RATE_LIMITS = {
+ INTERVAL: 60000 * 5, // 5 minutes
+ ANNOUNCES_PER_IP_PER_INFOHASH: 10, // maximum announces per torrent in the interval
+ ANNOUNCES_PER_IP: 30 // maximum announces for all our torrents in the interval
+}
+
+// ---------------------------------------------------------------------------
+
// Special constants for a test instance
if (isTestInstance() === true) {
ACTOR_FOLLOW_SCORE.BASE = 20
CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB
- SCHEDULER_INTERVAL = 10000
+ SCHEDULER_INTERVALS_MS.badActorFollow = 10000
+ SCHEDULER_INTERVALS_MS.removeOldJobs = 10000
+ SCHEDULER_INTERVALS_MS.updateVideos = 5000
+
VIDEO_VIEW_LIFETIME = 1000 // 1 second
JOB_ATTEMPTS['email'] = 1
AVATARS_SIZE,
ACCEPT_HEADERS,
BCRYPT_SALT_SIZE,
+ TRACKER_RATE_LIMITS,
CACHE,
CONFIG,
CONSTRAINTS_FIELDS,
JOB_REQUEST_TTL,
USER_PASSWORD_RESET_LIFETIME,
IMAGE_MIMETYPE_EXT,
- SCHEDULER_INTERVAL,
+ SCHEDULER_INTERVALS_MS,
STATIC_DOWNLOAD_PATHS,
RATES_LIMIT,
VIDEO_EXT_MIMETYPE,