hemerajs / hemera

🔬 Writing reliable & fault-tolerant microservices in Node.js https://hemerajs.github.io/hemera/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Client Timeout

blanchma opened this issue · comments

Using:

"nats": "0.8.4"
"nats-hemera": "^5.3.0"

Node: 8.9.3
NATS: 1.0.4

Code to connect:

const rollbar = require('../rollbar');
const Hemera = require("nats-hemera");
let nats = null;

if (process.env.NODE_ENV === 'test') {
  const Nats = require('hemera-testsuite/nats');
  nats = new Nats();
} else {
  let servers = null;

  if (process.env.NATS_SERVERS ) {
     servers = JSON.parse(process.env.NATS_SERVERS);
  }

  nats = require("nats").connect( {noRandomize: true, maxReconnectAttempts: -1,  servers });
}

const hemera = new Hemera(nats, { logLevel: "info" });

hemera.transport.on("error", function(error) {
  console.error("[Hemera] transport.onError", error);
  rollbar.handleErrorWithPayloadData(error, { pattern: error.pattern });
});

hemera.transport.on("close", function(error) {
  console.error("[Hemera] transport.onClose", error);
  rollbar.handleErrorWithPayloadData(error);
});


hemera.transport.on("connect", function(client) {
  console.log("[Hemera] transport.Connected");
});

hemera.on('reconnecting', function() {
  console.warn("[Hemera] onReconnecting");
});

hemera.transport.on("disconnect", function(error) {
  console.error("[Hemera] transport.onDisconnect", error);
});


hemera.on("error", function(error) {
  console.error("[Hemera] onError", error);
  rollbar.handleErrorWithPayloadData(error, { pattern: error.pattern });
});

hemera.on("close", function(error) {
  console.error("[Hemera] onClose", error);
  rollbar.handleErrorWithPayloadData(error);
});


hemera.on("connect", function() {
  console.log("[Hemera] Connected");
});

hemera.on("disconnect", function(error) {
  console.error("[Hemera] onDisconnect", error);

  if (error) {
    rollbar.handleError(error);
  }
});

hemera.on("serverResponseError", function(error) {
  console.error("[Hemera] onServerResponseError", error);
  rollbar.handleErrorWithPayloadData(error, { pattern: error.pattern });
});

hemera.on("clientResponseError", function(error) {
  console.error("[Hemera] onClientResponseError", error);
  rollbar.handleErrorWithPayloadData(error, { pattern: error.pattern });
});

module.exports = hemera;

This codes produce: Client timeout every time.

If I downgrade to:

nats: 0.7.29
nats-hemera: 3.5.1

I get esporadically: NatsError: Connection closed.

Hi @blanchma please try to reproduce it with the smallest amount of code. You have several conditions, cluster setup in it which I don't know. If you are using hemera-testsuite/nats remind that it has only limited support. Use hemera-testsuite to bootstrap a real server and run it with a single server and we will see further.

The issue occurs with cluser and not cluster. Right now I'm deploying a NATS Cloud to see if it occurs there too.

The issue happens in production environment which was working without issues.

I will try to reproduce this with hemera-testsuite

Closing due to inactivity.