Reputation: 177
there are tons of questions like this on SO but none of them really have the same problem.
I'm trying to connect to a Postgres DB with sequelize and locally it works with the DB hosted on heroku. It did also work a couple of days ago, but now it doesn't and looking at the diffs nothing changed in the way the app connects to the database.
When I deploy the app, it gets stuck trying to connect to the DB, until the web worker throws a timeout because the app does not bind to a port. This makes it hard to debug, since I don't have an error to work with.
async connect(): Promise<void> {
const dbUrl = process.env.DATABASE_URL as string
if (!dbUrl) {
throw new Error('Cannot connect to database, url not set!')
}
logger.info(`connecting to database ${dbUrl.replace(/:(\w+)@/, ':***@')}`)
this.sequelize = new Sequelize(dbUrl, {
dialect: 'postgres',
protocol: 'postgres',
logging: (sql, timing) => {
logger.debug(`Executed SQL query '${sql}' in ${timing} ms`)
},
dialectOptions: {
decimalNumbers: true,
ssl: true
}
})
// it gets stuck here
await this.sequelize.authenticate({
logging: (sql, timing) => {
logger.debug(`authentication ${sql}, ${timing}`)
}
})
logger.info('Database connection successful')
logger.info('initializing models...')
await this.initializeModels(this.sequelize)
logger.info('synching database...')
await this.sequelize.sync({
alter: true,
logging: (sql, timing) => {
logger.debug(`Executed SQL query '${sql}' in ${timing} ms`)
}
})
}
Here the log output:
ct 23 02:59:34 staging-monk-backend heroku/web.1 State changed from crashed to starting
Oct 23 02:59:40 staging-monk-backend heroku/web.1 Starting process with command `npm start`
Oct 23 02:59:43 staging-monk-backend app/web.1
Oct 23 02:59:43 staging-monk-backend app/web.1 > [email protected] start /app
Oct 23 02:59:43 staging-monk-backend app/web.1 > node build/main.js
Oct 23 02:59:43 staging-monk-backend app/web.1
Oct 23 02:59:44 staging-monk-backend app/web.1 2020-10-23T09:59:44.371Z [info] : NODE_ENV is production
Oct 23 02:59:44 staging-monk-backend app/web.1 2020-10-23T09:59:44.375Z [info] : debug mode is off
Oct 23 02:59:44 staging-monk-backend app/web.1 2020-10-23T09:59:44.375Z [info] : connecting to database postgres://rlbditxvnovvvq:***@ec2-54-246-87-132.eu-west-1.compute.amazonaws.com:5432/dd1v94insrdacc
Oct 23 02:59:45 staging-monk-backend app/api Build succeeded
Oct 23 03:00:40 staging-monk-backend heroku/web.1 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Oct 23 03:00:40 staging-monk-backend heroku/web.1 Stopping process with SIGKILL
Oct 23 03:00:41 staging-monk-backend heroku/web.1 Process exited with status 137
Oct 23 03:00:41 staging-monk-backend heroku/web.1 State changed from starting to crashed
The Procfile:
web:npm start
Versions
pg
: 7.5.0sequelize
: 6.3.5Upvotes: 2
Views: 734