Rocket.chat: Unable to start rocketchat RtmClient is not a constructor

Created on 30 Apr 2018  路  16Comments  路  Source: RocketChat/Rocket.Chat

Description:

Upgraded from release package from 0.63.3 to 0.64.0.
Now the Log says:
Exception in callback of async function: TypeError: RtmClient is not a constructor
at SlackBridge.connect (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:203:18)
at SlackBridge.RocketChat.settings.get (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:191:14)
at Object.get (/root/bundle/programs/server/packages/rocketchat_lib.js:1000:46)
at new SlackBridge (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:189:25)
at slackbridge.js (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:1735:26)
at fileEvaluate (packages/modules-runtime.js:343:9)
at require (packages/modules-runtime.js:238:16)
at /root/bundle/programs/server/packages/rocketchat_slackbridge.js:1828:1
at /root/bundle/programs/server/packages/rocketchat_slackbridge.js:1834:3
at /root/bundle/programs/server/boot.js:411:36
at Array.forEach (:null:null)
at /root/bundle/programs/server/boot.js:220:19
at /root/bundle/programs/server/boot.js:471:5
at Function.run (/root/bundle/programs/server/profile.js:510:12)
at /root/bundle/programs/server/boot.js:470:11

Server Setup Information:

  • Version of Rocket.Chat Server: 0.64.0
  • Operating System: Ubuntu 14.04
  • Deployment Method(snap/docker/tar/etc): tgz
  • Number of Running Instances: 1
  • DB Replicaset Oplog: Disabled
  • Node Version: 8.9.4
  • mongoDB Version: 3.0.15

Steps to Reproduce:

  1. Install rocketchat from tgz
  2. Run rocketchat
  3. See the problem

Expected behavior:

RocketChat started.

Actual behavior:

It crashes when the error appears, apparently when connecting to Slack.

Relevant logs:

Exception in callback of async function: TypeError: RtmClient is not a constructor
at SlackBridge.connect (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:203:18)
at SlackBridge.RocketChat.settings.get (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:191:14)
at Object.get (/root/bundle/programs/server/packages/rocketchat_lib.js:1000:46)
at new SlackBridge (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:189:25)
at slackbridge.js (/root/bundle/programs/server/packages/rocketchat_slackbridge.js:1735:26)
at fileEvaluate (packages/modules-runtime.js:343:9)
at require (packages/modules-runtime.js:238:16)
at /root/bundle/programs/server/packages/rocketchat_slackbridge.js:1828:1
at /root/bundle/programs/server/packages/rocketchat_slackbridge.js:1834:3
at /root/bundle/programs/server/boot.js:411:36
at Array.forEach (:null:null)
at /root/bundle/programs/server/boot.js:220:19
at /root/bundle/programs/server/boot.js:471:5
at Function.run (/root/bundle/programs/server/profile.js:510:12)
at /root/bundle/programs/server/boot.js:470:11

Most helpful comment

i resolved by disable Slackbridge in MongoDB Setting as below :
image
my server is working fine after that.

All 16 comments

Same issue here. Fedora Server 27
Deployment Method: Manual Installation

I did disable slack integration otherwise no way to run 0.64.0 (migrations does not start)
PS: I'm using docker install

Same issue here. 0.63.3 to 0.64.
Also using docker install.

i resolved by disable Slackbridge in MongoDB Setting as below :
image
my server is working fine after that.

Same thing for me, using docker-compose to deploy our instance. Rolled back the version to 0.63.3, went into the Administration panel and disabled SlackBridge, then upgraded to 0.64.1 without the issue.

I'm using the docker-version. I managed to open the mongodb-database of the right container
with this

sudo docker exec -i -t [container] bash

and start mongo in it, but after that, I am lost.

Disabling the SlackBridge and then enabling it again fixed the issue?

It did for me :) disabled it, updated versions then re-enabled it.

Same here, changed the Dockerfile, old version, disabled it, just I didn't re-enable it with the newest version, because it didn't work the last time either, even after some restarts. I might try it another time, I guess it couldn't work with channels with some underscore in it, like #test_slackbridge

Tested the disable thing. No success.
Disabled, upgraded, enabled, restarted, fail.
Waiting for fix.

@saschafoerster once you get into mongo and switch to the RC db you can use these commands to disable slack bridge.

I ran into this issue too and downgraded, disabled, upgraded and all was well. But after restarting the instance it returned with the same original error. At that point downgrading wouldn't work so I had to go the mongo update path.

This code is also a reference for myself next time I need to do this 馃槀

rocket1:PRIMARY> db.rocketchat_settings.find({"_id":"SlackBridge_Enabled"})
{ "_id" : "SlackBridge_Enabled", "type" : "boolean", "i18nLabel" : "Enabled", "group" : "SlackBridge", "packageValue" : false, "valueSource" : "meteorSettingsValue", "ts" : ISODate("2018-05-09T06:07:28.326Z"), "hidden" : false, "blocked" : false, "sorter" : 0, "i18nDescription" : "SlackBridge_Enabled_Description", "createdAt" : ISODate("2016-06-05T20:26:13.228Z"), "value" : true, "meteorSettingsValue" : false, "_updatedAt" : ISODate("2018-05-09T06:08:35.828Z"), "public" : true, "autocomplete" : true }


rocket1:PRIMARY> db.rocketchat_settings.update({"_id":"SlackBridge_Enabled"}, {$set : {value : false}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })


rocket1:PRIMARY> db.rocketchat_settings.find({"_id":"SlackBridge_Enabled"})
{ "_id" : "SlackBridge_Enabled", "type" : "boolean", "i18nLabel" : "Enabled", "group" : "SlackBridge", "packageValue" : false, "valueSource" : "meteorSettingsValue", "ts" : ISODate("2018-05-09T06:07:28.326Z"), "hidden" : false, "blocked" : false, "sorter" : 0, "i18nDescription" : "SlackBridge_Enabled_Description", "createdAt" : ISODate("2016-06-05T20:26:13.228Z"), "value" : false, "meteorSettingsValue" : false, "_updatedAt" : ISODate("2018-05-09T06:08:35.828Z"), "public" : true, "autocomplete" : true }
rocket1:PRIMARY>

Note to self, quick and easy oneliner:
docker exec -i -t rocketchat_mongo_1 /bin/bash -c 'mongo rocketchat --eval '\''db.rocketchat_settings.update({"_id":"SlackBridge_Enabled"}, {$set : {value : false}})'\'''

Same here - after upgrade slack bridge is broken
May 15 10:09:18 nemet rocketchat: Exception in changed observe/observeChanges callback: TypeError: RtmClient is not a constructor May 15 10:09:18 nemet rocketchat: at SlackBridge.connect (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_slackbridge.js:203:18) May 15 10:09:18 nemet rocketchat: at SlackBridge.RocketChat.settings.get (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_slackbridge.js:191:14) May 15 10:09:18 nemet rocketchat: at RocketChat.settings.callbacks.(anonymous function).forEach.callback (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_lib.js:1046:65) May 15 10:09:18 nemet rocketchat: at Array.forEach (<anonymous>:null:null) May 15 10:09:18 nemet rocketchat: at forEach.item (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_lib.js:1046:45) May 15 10:09:18 nemet rocketchat: at Array.forEach (<anonymous>:null:null) May 15 10:09:18 nemet rocketchat: at Object.load (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_lib.js:1044:16) May 15 10:09:18 nemet rocketchat: at Object.changed (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/rocketchat_lib.js:5775:34) May 15 10:09:18 nemet rocketchat: at _CachingChangeObserver.changed (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/minimongo.js:3510:28) May 15 10:09:18 nemet rocketchat: at applyChange.changed (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/minimongo.js:2972:27) May 15 10:09:18 nemet rocketchat: at runWithEnvironment (packages/meteor.js:1238:24) May 15 10:09:18 nemet rocketchat: at packages/meteor.js:1251:14 May 15 10:09:18 nemet rocketchat: at /opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/mongo.js:1924:30 May 15 10:09:18 nemet rocketchat: at Array.forEach (<anonymous>:null:null) May 15 10:09:18 nemet rocketchat: at Function._.each._.forEach (packages/underscore.js:139:11) May 15 10:09:18 nemet rocketchat: at Object.task (/opt/rocketchat/rocket.chat-0.64.1/programs/server/packages/mongo.js:1919:9) May 15 10:09:18 nemet rocketchat: at Meteor._SynchronousQueue.SQp._run (packages/meteor.js:869:16) May 15 10:09:18 nemet rocketchat: at packages/meteor.js:846:12

It seems that the dependency was updated, but the code was not.
The plugin was 2.0.6 and now its version 4.
https://github.com/slackapi/node-slack-sdk/blob/master/migration_guide_v4.md
The code is not updated to accommodate the new plugin api.

We need a developer here.

I'm just running without slackbridge for now as re-enabling it will stop a server restart happening properly.

had to disable from mongo db cli (thanks @mrplow )

How do we know if someone is looking at this ? This is causing real problems for us. I have alf my users migrated to rocket chat and now can't chat with the ones that are still on slack.

10875 this PR fixes it

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Buzzele picture Buzzele  路  3Comments

brendanheywood picture brendanheywood  路  3Comments

mattlin picture mattlin  路  3Comments

royalaid picture royalaid  路  3Comments

karlprieb picture karlprieb  路  3Comments