Skip to content

Commit

Permalink
feat(scheduler): prepare future fetaure work
Browse files Browse the repository at this point in the history
  • Loading branch information
janl committed Aug 1, 2019
1 parent 69591a5 commit 2371e43
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 7 deletions.
13 changes: 8 additions & 5 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const Queue = require('promise-queue')
const env = require('./lib/env')
const dbs = require('./lib/dbs')
const statsd = require('./lib/statsd')
const { connect, cron } = require('./lib/scheduler')
const enterpriseSetup = require('./lib/enterprise-setup')

require('./lib/rollbar')
Expand Down Expand Up @@ -62,11 +63,12 @@ require('./lib/rollbar')
const q = queues[queueId] = queues[queueId] || new Queue(1, Infinity)
return q.add(() => worker(job))
}
channel.consume(env.EVENTS_QUEUE_NAME, consume)
channel.consume(env.JOBS_QUEUE_NAME, consume)

// connect queues with consume function
connect(channel, consume)

if (env.NODE_ENV !== 'testing') {
setInterval(function collectAccountQueueStats () {
cron('collectAccountQueueStats', function collectAccountQueueStats () {
const queueKeys = Object.keys(queues)
statsd.gauge('queues.account-jobs', queueKeys.length)
queueKeys.map((queueId) => {
Expand Down Expand Up @@ -96,9 +98,10 @@ require('./lib/rollbar')
console.log(e)
}
}

setTimeout(scheduleReminders, 5000)
setInterval(scheduleReminders, 24 * 60 * 60 * 1000)
setInterval(scheduleMonorepoReleaseSupervisor, 5 * 60 * 1000)
cron('reminders', scheduleReminders, 24 * 60 * 60 * 1000)
cron('monorepoReleaseSupervisor', scheduleMonorepoReleaseSupervisor, 5 * 60 * 1000)

const isBad = (data) => {
const values = Object.values(data)
Expand Down
3 changes: 2 additions & 1 deletion lib/get-infos.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const githubFromGit = require('github-url-from-git')
const getRelease = require('./get-release')
const getDiffCommits = require('./get-diff-commits')
const statsd = require('../lib/statsd')
const { cron } = require('../lib/scheduler')

// returns a url object if you pass in a GitHub repositoryURL,
// returns a string with an npm URL if you just pass in a dependency name
Expand Down Expand Up @@ -70,7 +71,7 @@ function resolver ({ dependency, version, diffBase }) {
const memoizedGetInfos = _.memoize(getInfos, resolver)

if (process.env.NODE_ENV !== 'testing') {
setInterval(() => {
cron('get-info:stats', () => {
statsd.gauge('get_infos_cached', memoizedGetInfos.cache.size)
}, 60000)
}
Expand Down
3 changes: 2 additions & 1 deletion lib/github-queue.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const Log = require('gk-log')
const statsd = require('./statsd')
const getToken = require('./get-token')
const Github = require('../lib/github')
const { cron } = require('../lib/scheduler')

const readQueues = {}
const writeQueues = {}
Expand Down Expand Up @@ -132,7 +133,7 @@ function read (installationId, gen) {
}

if (env.NODE_ENV !== 'testing') {
setInterval(
cron('github-queue:stats',
function collectGitHubQueueStats () {
const readQueueKeys = Object.keys(readQueues)
const writeQueueKeys = Object.keys(writeQueues)
Expand Down
10 changes: 10 additions & 0 deletions lib/scheduler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const env = require('./env')

module.exports.connect = (channel, consume) => {
channel.consume(env.EVENTS_QUEUE_NAME, consume)
channel.consume(env.JOBS_QUEUE_NAME, consume)
}

module.exports.cron = (_name, job, interval) => {
setInterval(job, interval)
}

0 comments on commit 2371e43

Please sign in to comment.