MongoDB Connection with nodeJs through mongoose in docker-compose environment - node.js

I am facing weird issue while connecting MongoDB running in a separate container from my nodejs server container, it displays
the following error while trying to connect to MongoDB
{ MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
todo-node-server_1 | at Pool.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/topologies/server.js:503:11)
todo-node-server_1 | at emitOne (events.js:116:13)
todo-node-server_1 | at Pool.emit (events.js:211:7)
todo-node-server_1 | at Connection.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:326:12)
todo-node-server_1 | at Object.onceWrapper (events.js:317:30)
todo-node-server_1 | at emitTwo (events.js:126:13)
todo-node-server_1 | at Connection.emit (events.js:214:7)
todo-node-server_1 | at Socket.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:245:50)
todo-node-server_1 | at Object.onceWrapper (events.js:315:30)
todo-node-server_1 | at emitOne (events.js:116:13)
todo-node-server_1 | at Socket.emit (events.js:211:7)
todo-node-server_1 | at emitErrorNT (internal/streams/destroy.js:64:8)
todo-node-server_1 | at _combinedTickCallback (internal/process/next_tick.js:138:11)
todo-node-server_1 | at process._tickCallback (internal/process/next_tick.js:180:9)
todo-node-server_1 | name: 'MongoNetworkError',
todo-node-server_1 | message: 'failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]' }
which clearly states that connection refused. The code works absolutely fine when I run all services locally.
connection to MongoDB through mongoose in following manner
const options = {
autoIndex: true, // Don't build indexes
reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
reconnectInterval: 500, // Reconnect every 500ms
poolSize: 10, // Maintain up to 10 socket connections
// If not connected, return errors immediately rather than waiting for reconnect
bufferMaxEntries: 0
};
console.log(options);
mongoose.connect('mongodb://localhost:27017/tododb',options).then(
() => { console.log("connected !!!"); },
err => { console.log(err); }
);
docker-compose.yaml
version : '3.3'
services:
mongo-database:
image: mongo
ports:
- "27017:27017"
todo-node-server:
build: server
ports:
- "3000:3000"
links:
- mongo-database
angular4-todoclient:
build: todo-app
ports:
- "4200:4200"
Complete Docker build logs
[~/dev/aguha/docker-compose] $ docker-compose up
dockercompose_mongo-database_1 is up-to-date
dockercompose_angular4-todoclient_1 is up-to-date
Starting dockercompose_todo-node-server_1 ...
Starting dockercompose_todo-node-server_1 ... done
Attaching to dockercompose_mongo-database_1, dockercompose_angular4-todoclient_1, dockercompose_todo-node-server_1
angular4-todoclient_1 |
angular4-todoclient_1 | > todo-app#0.0.0 start /usr/src/app
angular4-todoclient_1 | > ng serve
angular4-todoclient_1 |
angular4-todoclient_1 | ** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=02d79173d565
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] db version v3.6.2
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] git version: 489d177dbd0f0420a8ca04d39fd78d0a2c539420
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1t 3 May 2016
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] allocator: tcmalloc
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] modules: none
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] build environment:
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] distmod: debian81
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] distarch: x86_64
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] target_arch: x86_64
mongo-database_1 | 2018-01-21T07:00:22.275+0000 I CONTROL [initandlisten] options: { net: { bindIpAll: true } }
mongo-database_1 | 2018-01-21T07:00:22.276+0000 I STORAGE [initandlisten]
mongo-database_1 | 2018-01-21T07:00:22.276+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
mongo-database_1 | 2018-01-21T07:00:22.276+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
mongo-database_1 | 2018-01-21T07:00:22.276+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=487M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
mongo-database_1 | 2018-01-21T07:00:22.308+0000 I CONTROL [initandlisten]
mongo-database_1 | 2018-01-21T07:00:22.308+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
mongo-database_1 | 2018-01-21T07:00:22.308+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
mongo-database_1 | 2018-01-21T07:00:22.308+0000 I CONTROL [initandlisten]
mongo-database_1 | 2018-01-21T07:00:22.308+0000 I STORAGE [initandlisten] createCollection: admin.system.version with provided UUID: a336e5c8-1032-4095-8fc2-37de71d12006
mongo-database_1 | 2018-01-21T07:00:22.318+0000 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.6
mongo-database_1 | 2018-01-21T07:00:22.321+0000 I STORAGE [initandlisten] createCollection: local.startup_log with generated UUID: 5b3f3374-6f4e-4f63-aee1-4727eeb1c2e1
mongo-database_1 | 2018-01-21T07:00:22.328+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
mongo-database_1 | 2018-01-21T07:00:22.328+0000 I NETWORK [initandlisten] waiting for connections on port 27017
mongo-database_1 | 2018-01-21T07:00:22.898+0000 I NETWORK [listener] connection accepted from 172.18.0.1:57658 #1 (1 connection now open)
mongo-database_1 | 2018-01-21T07:00:28.682+0000 I NETWORK [conn1] end connection 172.18.0.1:57658 (0 connections now open)
todo-node-server_1 |
todo-node-server_1 | > server#0.0.0 start /usr/src/app
todo-node-server_1 | > node ./bin/www
todo-node-server_1 |
todo-node-server_1 | yes,connecting to db....
todo-node-server_1 | { autoIndex: true,
todo-node-server_1 | reconnectTries: 1.7976931348623157e+308,
todo-node-server_1 | reconnectInterval: 500,
todo-node-server_1 | poolSize: 10,
todo-node-server_1 | bufferMaxEntries: 0 }
todo-node-server_1 | done with tries
todo-node-server_1 | { MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
todo-node-server_1 | at Pool.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/topologies/server.js:503:11)
todo-node-server_1 | at emitOne (events.js:116:13)
todo-node-server_1 | at Pool.emit (events.js:211:7)
todo-node-server_1 | at Connection.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:326:12)
todo-node-server_1 | at Object.onceWrapper (events.js:317:30)
todo-node-server_1 | at emitTwo (events.js:126:13)
todo-node-server_1 | at Connection.emit (events.js:214:7)
todo-node-server_1 | at Socket.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:245:50)
todo-node-server_1 | at Object.onceWrapper (events.js:315:30)
todo-node-server_1 | at emitOne (events.js:116:13)
todo-node-server_1 | at Socket.emit (events.js:211:7)
todo-node-server_1 | at emitErrorNT (internal/streams/destroy.js:64:8)
todo-node-server_1 | at _combinedTickCallback (internal/process/next_tick.js:138:11)
todo-node-server_1 | at process._tickCallback (internal/process/next_tick.js:180:9)
todo-node-server_1 | name: 'MongoNetworkError',
todo-node-server_1 | message: 'failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]' }
angular4-todoclient_1 | Date: 2018-01-21T07:00:35.368Z
angular4-todoclient_1 | Hash: 9bc58c25a75cb62a0c88
angular4-todoclient_1 | Time: 9909ms
angular4-todoclient_1 | chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
angular4-todoclient_1 | chunk {main} main.bundle.js (main) 33.9 kB [initial] [rendered]
angular4-todoclient_1 | chunk {polyfills} polyfills.bundle.js (polyfills) 548 kB [initial] [rendered]
angular4-todoclient_1 | chunk {scripts} scripts.bundle.js (scripts) 387 kB [initial] [rendered]
angular4-todoclient_1 | chunk {styles} styles.bundle.js (styles) 546 kB [initial] [rendered]
angular4-todoclient_1 | chunk {vendor} vendor.bundle.js (vendor) 11.1 MB [initial] [rendered]
angular4-todoclient_1 |
angular4-todoclient_1 | webpack: Compiled successfully.
mongo-database_1 | 2018-01-21T07:05:22.332+0000 I STORAGE [thread2] createCollection: config.system.sessions with generated UUID: 276d07dc-b507-4684-a3a6-75e560b44679
mongo-database_1 | 2018-01-21T07:05:22.347+0000 I INDEX [thread2] build index on: config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 }
mongo-database_1 | 2018-01-21T07:05:22.347+0000 I INDEX [thread2] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
mongo-database_1 | 2018-01-21T07:05:22.347+0000 I INDEX [thread2] build index done. scanned 0 total records. 0 secs
Please guide where exactly I am missing. Thanks in advance.

Change the connection string "localhost" to "mongo-database"
mongoose.connect('mongodb://mongo-database:27017/tododb',options)
when you use docker-compose it creates two containers so localhost for node is different from localhost to mongo.
run "docker container ls" this will give you the mongo container name use that in the connection string.

Related

Not able to connect my service with Redis

My server is located on client premise.
I'm facing an issue, in that my service(node js) is not able to connect with redis.
If I'm checking the status of redis it's running fine.
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-02-15 14:16:34 EAT; 18h ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 3085148 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 19104)
Memory: 8.2M
CGroup: /system.slice/redis-server.service
I'm able to connect with the service manually from one server providing host and port.
But the issue is when my service is trying to connect so it's failing.
So can anyone help me in suggesting what could be a possible reason for the same?
Error:
[ioredis] Unhandled error event: Error: connect ETIMEDOUT
16|pdsl_pa | at Socket.<anonymous> (/var/www/stage_env/pdsl_parking_service/node_modules/ioredis/built/redis/index.js:318:37)
16|pdsl_pa | at Object.onceWrapper (node:events:645:28)
16|pdsl_pa | at Socket.emit (node:events:526:28)
16|pdsl_pa | at Socket.emit (node:domain:475:12)
16|pdsl_pa | at Socket._onTimeout (node:net:501:8)
16|pdsl_pa | at listOnTimeout (node:internal/timers:559:17)
16|pdsl_pa | at processTimers (node:internal/timers:502:7)
16|pdsl_pa | [ioredis] Unhandled error event: Error: connect EHOSTUNREACH 172.**.***.***:6379
16|pdsl_pa | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16)
16|pdsl_pa | [ioredis] Unhandled error event: Error: connect EHOSTUNREACH 172.**.***.***:6379
16|pdsl_pa | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16)
16|pdsl_pa | [ioredis] Unhandled error event: Error: connect EHOSTUNREACH 172.**.***.***:6379

why a socket server container can't reach my redis server container even if [duplicate]

This question already has answers here:
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
(7 answers)
Closed 9 months ago.
i have this docker compose that connects my redis server with my socket server that has redis client
version: "3.8"
services:
redis-server:
image: "redis"
volumes:
- express-chat-vol:/express-chat/
networks:
- express-chat-net
ports:
- 6379:6379
socket-server:
build:
context: ./server/
dockerfile: Dockerfile.socketServer
ports:
- 5000:5000
networks:
- express-chat-net
volumes:
express-chat-vol:
networks:
express-chat-net:
but socket server can't access the redis server and bring up this error and i'm stuck for 2 days now , how can i solve it ?
Starting token2_socket-server_1 ... done
Starting token2_redis-server_1 ... done
Attaching to token2_socket-server_1, token2_redis-server_1
redis-server_1 | 1:C 29 May 2022 01:07:22.191 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-server_1 | 1:C 29 May 2022 01:07:22.191 # Redis version=7.0.0, bits=64, commit=00000000, modified=0, pid=1, just started
redis-server_1 | 1:C 29 May 2022 01:07:22.191 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
//some logs
redis-server_1 | 1:M 29 May 2022 01:07:22.195 * Ready to accept connections
socket-server_1 | socket server is listening on port 5000
socket-server_1 | node:internal/process/promises:288
socket-server_1 | triggerUncaughtException(err, true /* fromPromise */);
socket-server_1 | ^
socket-server_1 |
socket-server_1 | Error: connect ECONNREFUSED 127.0.0.1:6379
socket-server_1 | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1195:16)
socket-server_1 | Emitted 'error' event on Commander instance at:
socket-server_1 | at RedisSocket.<anonymous> (/socketServer/node_modules/#redis/client/dist/lib/client/index.js:339:14)
socket-server_1 | at RedisSocket.emit (node:events:527:28)
socket-server_1 | at RedisSocket._RedisSocket_connect (/socketServer/node_modules/#redis/client/dist/lib/client/socket.js:127:14)
socket-server_1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
socket-server_1 | at async Commander.connect (/socketServer/node_modules/#redis/client/dist/lib/client/index.js:163:9)
socket-server_1 | at async connectRedisClient (/socketServer/socketServer.js:19:3) {
socket-server_1 | errno: -111,
socket-server_1 | code: 'ECONNREFUSED',
socket-server_1 | syscall: 'connect',
socket-server_1 | address: '127.0.0.1',
socket-server_1 | port: 6379
socket-server_1 | }
socket-server_1 |
socket-server_1 | Node.js v18.0.0
token2_socket-server_1 exited with code 1```
Try using redis-server as the hostname and not 127.0.0.1.

mysql2 connection.connect() hangs in typescript jest test on macOS

I am trying to create a mysql2 connection to a local mysql-Database in a jest-Test on macOS using typescript. And the call to connect() hangs.
Environment:
MacOS: High Sierra (10.13.6)
MySQL: 8.0.18
Typescript: 3.7.2
mysql2: 2.0.1
nodejs: v10.16.3
I am using the promise-Wrapper. The code looks like this:
import { createConnection, ConnectionOptions, Connection } from 'mysql2/promise'
...
async openConnection(options: ConnectionOptions): Promise<Connection> {
console.log('About to create mysql connection using options ', options);
const connection = await createConnection(options);
console.log('Connection created => about to call connect()');
await connection.connect();
console.log('Connection created => connect() returned'); // this line is never reached!
....
return connection;
}
I already added the debug-Option and this is the output:
Dieters-MBP-6:db-typescript rehdie$ node_modules/.bin/jest src/tests/mysql/mysql-connection.spec.ts --testNamePattern="Should open connection"
console.log src/lib/mysql/driver/mysql-driver.ts:21
About to create mysql connection using options { user: 'mysql-test',
password: '1q2w3e4r',
host: 'localhost',
port: 3306,
database: 'mysql_test_db',
charset: 'latin1_swedish_ci',
connectTimeout: 5000,
debug: true }
console.log node_modules/mysql2/lib/connection.js:425
Add command: ClientHandshake
console.log node_modules/mysql2/lib/connection.js:381
raw: 0a382e302e31380018000000277919626469296e00ffffff0200ffc715000000000000000000006d6335316a3c3d454220053a0063616368696e675f736861325f70617373776f726400
console.error console.js:274
Trace:
at Connection.handlePacket (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:387:17)
at PacketParser.Connection.packetParser.p [as onPacket] (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.Connection.stream.on.data (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
console.log node_modules/mysql2/lib/connection.js:395
0 undefined ==> ClientHandshake#unknown name(0,,78)
console.log node_modules/mysql2/lib/commands/client_handshake.js:96
Server hello packet: capability flags:3355443199=(long password, found rows, long flag, connect with db, no schema, compress, odbc, local files, ignore space, protocol 41, interactive, ssl, ignore sigpipe, transactions, reserved, secure connection, multi statements, multi results, ps multi results, plugin auth, connect attrs, plugin auth lenenc client data, can handle expired passwords, session track, deprecate eof, ssl verify server cert, remember options)
console.log node_modules/mysql2/lib/commands/client_handshake.js:41
Sending handshake packet: flags:11203535=(long password, found rows, long flag, connect with db, odbc, local files, ignore space, protocol 41, ignore sigpipe, transactions, reserved, secure connection, multi results, plugin auth, plugin auth lenenc client data, session track)
console.log node_modules/mysql2/lib/connection.js:253
0 24 <== ClientHandshake#unknown name(1,,104)
console.log node_modules/mysql2/lib/connection.js:257
0 24 <== 64000001cff3aa00000000000800000000000000000000000000000000000000000000006d7973716c2d746573740014a13dd11599725225bcae39464cc3700a5fa085fc6d7973716c5f746573745f6462006d7973716c5f6e61746976655f70617373776f726400
console.log node_modules/mysql2/lib/connection.js:381
raw: fe63616368696e675f736861325f70617373776f726400277919626469296e6d6335316a3c3d454220053a00
console.error console.js:274
Trace:
at Connection.handlePacket (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:387:17)
at PacketParser.Connection.packetParser.p [as onPacket] (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.Connection.stream.on.data (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
console.log node_modules/mysql2/lib/connection.js:395
0 24 ==> ClientHandshake#unknown name(2,,48)
console.log node_modules/mysql2/lib/connection.js:253
0 24 <== ClientHandshake#unknown name(3,,36)
console.log node_modules/mysql2/lib/connection.js:257
0 24 <== 20000003374930d53dd94bc2dbe6b54e4b83cd628658a1984656eb6ee4f31d7df596ce36
console.log node_modules/mysql2/lib/connection.js:381
raw: 0103
console.error console.js:274
Trace:
at Connection.handlePacket (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:387:17)
at PacketParser.Connection.packetParser.p [as onPacket] (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.Connection.stream.on.data (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
console.log node_modules/mysql2/lib/connection.js:395
0 24 ==> ClientHandshake#unknown name(4,,6)
console.log node_modules/mysql2/lib/connection.js:381
raw: 000000024000000010010e0d6d7973716c5f746573745f6462
console.error console.js:274
Trace:
at Connection.handlePacket (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:387:17)
at PacketParser.Connection.packetParser.p [as onPacket] (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:70:12)
at PacketParser.executeStart (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.Connection.stream.on.data (/Users/rehdie/development/projects/db-typescript/node_modules/mysql2/lib/connection.js:77:25)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
console.log node_modules/mysql2/lib/connection.js:395
0 24 ==> ClientHandshake#unknown name(5,maybeOK,29)
console.log src/lib/mysql/driver/mysql-driver.ts:24
Connection created => about to call connect()
RUNS src/tests/mysql/mysql-connection.spec.ts
When I perform a show process list in mysql, I see a new process with Command 'Sleep' (state is empty and info is null).
Any ideas?
You need to ensure that node is using the system time and not fake timers. Add the below line immediately after your imports in the test file
jest.useRealTimers();
Or better still you can set timers to real in your jest config
"timers":"real"

MongoDB Atlas connection error "failed to connect to server..."

I am trying to perform a connection to mongodb using mongoose but it throws an error.
Here is my code:
mongoose.connect("mongodb+srv://username:password#cluster0-bocic.mongodb.net/test?retryWrites=true", {useNewUrlParser: true})
.then(()=>console.log("Database connected..."))
.catch(err=>console.log(err));
Here is the error:
[0] { MongoNetworkError: failed to connect to server [cluster0-shard-00-01-bocic
.mongodb.net:27017] on first connect [MongoNetworkError: connection 5 to cluster
0-shard-00-01-bocic.mongodb.net:27017 closed]
[0] at Pool.<anonymous> (C:\Users\Med\Desktop\jutsuapp\myapp\node_modules\mo
ngodb-core\lib\topologies\server.js:431:11)
[0] at Pool.emit (events.js:182:13)
[0] at connect (C:\Users\Med\Desktop\jutsuapp\myapp\node_modules\mongodb-cor
e\lib\connection\pool.js:557:14)
[0] at callback (C:\Users\Med\Desktop\jutsuapp\myapp\node_modules\mongodb-co
re\lib\connection\connect.js:109:5)
[0] at runCommand (C:\Users\Med\Desktop\jutsuapp\myapp\node_modules\mongodb-
core\lib\connection\connect.js:129:7)
[0] at Connection.errorHandler (C:\Users\Med\Desktop\jutsuapp\myapp\node_mod
ules\mongodb-core\lib\connection\connect.js:321:5)
[0] at Object.onceWrapper (events.js:273:13)
[0] at Connection.emit (events.js:182:13)
[0] at TLSSocket.<anonymous> (C:\Users\Med\Desktop\jutsuapp\myapp\node_modul
es\mongodb-core\lib\connection\connection.js:350:12)
[0] at Object.onceWrapper (events.js:273:13)
[0] at TLSSocket.emit (events.js:182:13)
[0] at _handle.close (net.js:610:12)
[0] at TCP.done (_tls_wrap.js:386:7)
[0] name: 'MongoNetworkError',
[0] errorLabels: [ 'TransientTransactionError' ],
[0] [Symbol(mongoErrorContextSymbol)]: {} }
I got to solve the same problem: in the last three days my applications (node.js, express, mongoose, graphql) got connected to the mongoDB (in the cloud) whithout any problem, but today I got:
Error: MongoNetworkError: failed to connect to server [cluster0-shard-00-00-cpkkj.mongodb.net:27017] on first connect [MongoNetworkError: connection 5 to cluster0-shard-00-00-cpkkj.mongodb.net:27017 closed]
I verified the IP of my PC and that's it: it has changed and is not more the same IP I added to the Whitelist, so I added the new one and the problem was solved.
If you would like to enable any host connection access, you can set to the whitelist in atlas configuration the following IP address:
0.0.0.0
Then, even when your IP address suddenly changes, you might still connect.

Kue connect Redis at AWS EC2 fail, show `Caught exception: AbortError`

I use docker to run redis on AWS EC2 and I use kue to connect to it at my node server.
But it shows error like below.
How could I fix this? I use redis-cli to ping to IP and GUI tool to connect redis are woring fine.
Caught exception: AbortError
11:05:00 0|server | at RedisClient.flush_and_error (/Users/Project/node_modules/kue/node_modules/redis/index.js:357:23)
11:05:00 0|server | at RedisClient.connection_gone (/Users/Project/node_modules/kue/node_modules/redis/index.js:659:14)
11:05:00 0|server | at Socket.<anonymous> (/Users/Project/node_modules/kue/node_modules/redis/index.js:293:14)
11:05:00 0|server | at Object.onceWrapper (events.js:293:19)
11:05:00 0|server | at emitNone (events.js:91:20)
11:05:00 0|server | at Socket.emit (events.js:188:7)
11:05:00 0|server | at endReadableNT (_stream_readable.js:974:12)
11:05:00 0|server | at _combinedTickCallback (internal/process/next_tick.js:80:11)
11:05:00 0|server | at process._tickDomainCallback (internal/process/next_tick.js:128:9)
11:05:00 0|server | code: 'UNCERTAIN_STATE',
11:05:00 0|server | command: 'BLPOP',
11:05:00 0|server | args: [ 'q:processSendEMail:jobs', 0 ] }

Resources