Thanks to visit codestin.com
Credit goes to github.com

Skip to content

strong-globalize can't process error object #54

@b-admike

Description

@b-admike

Bug or feature request

  • Bug
  • Feature request

Description of feature (or steps to reproduce if bug)

  1. Create a LB app
  2. Add redis datasource following steps outlined in https://loopback.io/doc/en/lb2/Redis-connector.html
  3. Change the port to something that is not right for the datasource

Expected result

graceful error like how loopback-connector-mysqlconnector does it:

| => node .
Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer
Connection fails: Error: connect ECONNREFUSED 0.0.0.0:3307
It will be retried for the next request.
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 0.0.0.0:3307
    at Object.exports._errnoException (util.js:907:11)
    at exports._exceptionWithHostPort (util.js:930:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1078:14)
    --------------------

Actual result (if bug)

 => node .
Web server listening at: http://0.0.0.0:3000
Browse your REST API at http://0.0.0.0:3000/explorer
/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:740
      matched = (name.indexOf(header) === 0);
                      ^

TypeError: name.indexOf is not a function
    at /Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:740:23
    at Array.forEach (native)
    at headerIncluded (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:738:20)
    at Object.hashKeys (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/helper.js:109:12)
    at formatMessage (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:96:14)
    at packMessage (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:201:17)
    at Object.rfc5424 (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/lib/globalize.js:224:10)
    at StrongGlobalize.log (/Users/badmike/mysql65repo/redis38/node_modules/strong-globalize/index.js:185:20)
    at RedisClient.<anonymous> (/Users/badmike/mysql65repo/redis38/node_modules/loopback-connector-redis/lib/redis.js:56:7)
    at emitOne (events.js:77:13)
    at RedisClient.emit (events.js:169:7)
    at RedisClient.on_error (/Users/badmike/mysql65repo/redis38/node_modules/redis/index.js:196:10)
    at Socket.<anonymous> (/Users/badmike/mysql65repo/redis38/node_modules/redis/index.js:106:14)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at emitErrorNT (net.js:1269:8)

Additional information (Node.js version, LoopBack version, etc)

| => lb --version
2.2.0 ([email protected] [email protected])
___________________    | ~/mysql65repo/redis38 @ biniams-mbp (badmike)
| => node -v
v4.8.0
___________________    | ~/mysql65repo/redis38 @ biniams-mbp (badmike)
| => npm -v
3.10.10

The issue happens because https://github.com/strongloop/strong-globalize/blob/master/lib/helper.js#L730-#L735 expects name to be a string, but our downstream dep node_redis sends an error object along https://github.com/NodeRedis/node_redis/blob/v0.12.1/index.js#L196 (btw we should look into updating that dep because it is currently on 2.7.1).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions