Page MenuHomePhabricator

vagrant git-update breaks restbase
Closed, ResolvedPublic

Description

Running vagrant git-update removes the npm module restbase-mod-table-sqlite which restbase on vagrant is configured to use.

It's provisionally fixable by sshing in and just doing npm install restbase-mod-table-sqlite.

The logs/restbase.log file accumulates these as a result:

{"name":"restbase","hostname":"vagrant","pid":6190,"level":60,"err":{"message":"Cannot find module 'restbase-mod-table-sqlite'","name":"Error","stack":"Error: Cannot find module 'restbase-mod-table-sqlite'\n    at Function.Module._resolveFilename (module.js:469:15)\n    at Function.Module._load (module.js:417:25)\n    at Module.require (module.js:497:17)\n    at require (internal/module.js:20:19)\n    at module.exports (/vagrant/srv/restbase/sys/table.js:16:12)\n    at Router._loadModule (/vagrant/srv/restbase/node_modules/hyperswitch/lib/router.js:229:26)\n    at P.each (/vagrant/srv/restbase/node_modules/hyperswitch/lib/router.js:256:25)\n    at tryCatcher (/vagrant/srv/restbase/node_modules/bluebird/js/release/util.js:16:23)\n    at Object.gotValue (/vagrant/srv/restbase/node_modules/bluebird/js/release/reduce.js:155:18)\n    at Object.gotAccum (/vagrant/srv/restbase/node_modules/bluebird/js/release/reduce.js:144:25)\n    at Object.tryCatcher (/vagrant/srv/restbase/node_modules/bluebird/js/release/util.js:16:23)\n    at Promise._settlePromiseFromHandler (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:512:31)\n    at Promise._settlePromise (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:569:18)\n    at Promise._settlePromiseCtx (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:606:10)\n    at Async._drainQueue (/vagrant/srv/restbase/node_modules/bluebird/js/release/async.js:138:12)\n    at Async._drainQueues (/vagrant/srv/restbase/node_modules/bluebird/js/release/async.js:143:10)","code":"MODULE_NOT_FOUND"},"stack":"Error: Cannot find module 'restbase-mod-table-sqlite'\n    at Function.Module._resolveFilename (module.js:469:15)\n    at Function.Module._load (module.js:417:25)\n    at Module.require (module.js:497:17)\n    at require (internal/module.js:20:19)\n    at module.exports (/vagrant/srv/restbase/sys/table.js:16:12)\n    at Router._loadModule (/vagrant/srv/restbase/node_modules/hyperswitch/lib/router.js:229:26)\n    at P.each (/vagrant/srv/restbase/node_modules/hyperswitch/lib/router.js:256:25)\n    at tryCatcher (/vagrant/srv/restbase/node_modules/bluebird/js/release/util.js:16:23)\n    at Object.gotValue (/vagrant/srv/restbase/node_modules/bluebird/js/release/reduce.js:155:18)\n    at Object.gotAccum (/vagrant/srv/restbase/node_modules/bluebird/js/release/reduce.js:144:25)\n    at Object.tryCatcher (/vagrant/srv/restbase/node_modules/bluebird/js/release/util.js:16:23)\n    at Promise._settlePromiseFromHandler (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:512:31)\n    at Promise._settlePromise (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:569:18)\n    at Promise._settlePromiseCtx (/vagrant/srv/restbase/node_modules/bluebird/js/release/promise.js:606:10)\n    at Async._drainQueue (/vagrant/srv/restbase/node_modules/bluebird/js/release/async.js:138:12)\n    at Async._drainQueues (/vagrant/srv/restbase/node_modules/bluebird/js/release/async.js:143:10)","levelPath":"fatal/startup","msg":"Message not supplied","time":"2018-02-12T22:09:22.117Z","v":0}

I'd assume this is the vagrant restbase config not being updated in response to c530aa6d18b513aaa29b867643e2d6622d295317?

Event Timeline

Hm. Actually, the problem here is that the restbase-mod-table-sqlite is a dev dependency in RESTBase and git-update only installs production dependencies starting from https://gerrit.wikimedia.org/r/#/c/365076/

So, I guess I've broken it with that commit. We can't make restbase-mod-table-sqlite a production dependency, because we don't use it in production and it depends on binary code, so we better not deploy it into prod and not use. We need to either revert that commit or add some custom logic to install restbase-mod-table-sqlite for RESTBase via puppet. I think the latter is better since only installing production dependencies speeds up git update quite significantly.

Since vagrant is being used for development environments, maybe a way to flag certain roles as being ones for which devDependencies should always be installed? The clearing out of node_modules is presumably breaking a bunch of dev environments otherwise.

Hm... Make sense. I'll just revert that patch

Somehow gerrit bot didn't add a comment about the patch I've made for this. Here it is https://gerrit.wikimedia.org/r/#/c/410222/

Pchelolo edited projects, added Services (done); removed Services (doing).

Ok, the patch was merged, should work fine now. Resolving.