balderdashy / balderdashy/sails
Misleading error message given when trying to lift sails app without the Mongo Daemon running.
- Dominant language
- JavaScript
- Stars
- 22.8k
- Forks
- 1.9k
- PR merge metrics
- No merged PRs in 30d
Description
I got the stack trace below trying to lift my sails app - which uses mongodb
error: A hook (`orm`) failed to load!
error: Could not tear down the ORM hook. Error details: Error: Consistency violation: Attempting to tear down a datastore (`default`) which is not currently registered with this adapter. This is usually due to a race condition in userland code (e.g. attempting to tear down the same ORM instance more than once), or it could be due to a bug in this adapter. (If you get stumped, reach out at http://sailsjs.com/support.)
at Object.teardown (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails-mongo\lib\index.js:390:19)
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\lib\waterline.js:758:27
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\node_modules\async\dist\async.js:3047:20
at eachOfArrayLike (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\node_modules\async\dist\async.js:1002:13)
at eachOf (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\node_modules\async\dist\async.js:1052:9)
at Object.eachLimit (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\node_modules\async\dist\async.js:3111:7)
at Object.teardown (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\waterline\lib\waterline.js:742:11)
at Hook.teardown (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails-hook-orm\index.js:246:30)
at Sails.wrapper (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\@sailshq\lodash\lib\index.js:3275:19)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Sails.emit (events.js:208:7)
at Sails.emitter.emit (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\lib\app\private\after.js:56:26)
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\lib\app\lower.js:67:11
at beforeShutdown (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\lib\app\lower.js:45:12)
at Sails.lower (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\lib\app\lower.js:49:3)
at Sails.wrapper [as lower] (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\@sailshq\lodash\lib\index.js:3275:19)
at whenSailsIsReady (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\lib\app\lift.js:68:13)
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\node_modules\async\dist\async.js:3861:9
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\node_modules\async\dist\async.js:421:16
at iterateeCallback (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\node_modules\async\dist\async.js:924:17)
at C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\sails\node_modules\async\dist\async.js:906:16
error:
error: Error: Consistency violation: Unexpected error creating db connection manager:
ImplementationError: Internal error occurred while running `createManager`. Got non-Error: { MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool. (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\mongodb-core\lib\topologies\server.js:327:35)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection. (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\mongodb-core\lib\connection\pool.js:274:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket. (C:\Users\Adim\Desktop\Sails\tweeta\tweeta\node_modules\mongodb-core\lib\connection\connection.js:177:49)
at Object.onceWrapper (events.js:315:30)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:66:8)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
name: 'MongoError',
message: 'failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]' }
I fixed this issue by running my mongod process on my local machine before trying to lift my sails app. I think the error message is really misleading.
_Originally posted by @Adimvicky in https://github.com/_render_node/MDEyOklzc3VlQ29tbWVudDQ1MDUxMjI5MA==/timeline/issue_comment#issuecomment-450512290_
Contributor guide
Research direction
Reproduce the lift failure with MongoDB unavailable, then inspect sails-mongo/lib/index.js, waterline/lib/waterline.js, and sails-hook-orm/index.js around connection creation and teardown. Compare the connection-refused details with the later teardown message; done means the user receives an actionable MongoDB connection error instead of a misleading consistency violation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, mongodb, node.js
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100