Skip to content

Commit

Permalink
Merge pull request #1101 from Ubitso/fix-info-packet-send-on-stop
Browse files Browse the repository at this point in the history
Fix info packet send on stop
  • Loading branch information
icebob authored Jul 10, 2022
2 parents 49968d7 + db32a9a commit 84ef938
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 14 deletions.
10 changes: 7 additions & 3 deletions src/registry/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ class Registry {
*
* @memberof Registry
*/
regenerateLocalRawInfo(incSeq) {
regenerateLocalRawInfo(incSeq, isStopping) {
let node = this.nodes.localNode;
if (incSeq) node.seq++;

Expand All @@ -457,8 +457,12 @@ class Registry {
"seq",
"metadata"
]);
if (this.broker.started || incSeq) rawInfo.services = this.services.getLocalNodeServices();
else rawInfo.services = [];

if (!isStopping && (this.broker.started || incSeq)) {
rawInfo.services = this.services.getLocalNodeServices();
} else {
rawInfo.services = [];
}

// Make to be safety
node.rawInfo = utils.safetyObject(rawInfo, this.broker.options);
Expand Down
11 changes: 8 additions & 3 deletions src/service-broker.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ const defaultOptions = {

registry: {
strategy: "RoundRobin",
preferLocal: true
preferLocal: true,
stopDelay: 100
},

circuitBreaker: {
Expand Down Expand Up @@ -499,16 +500,20 @@ class ServiceBroker {
*/
stop() {
this.started = false;
this.stopping = true;
return this.Promise.resolve()
.then(() => {
if (this.transit) {
this.registry.regenerateLocalRawInfo(true);
this.registry.regenerateLocalRawInfo(true, true);
// Send empty node info in order to block incoming requests
return this.registry.discoverer.sendLocalNodeInfo();
}
})
.then(() => {
return this.Promise.delay(this.options.registry.stopDelay);
})
.then(() => {
this.stopping = true;

return this.callMiddlewareHook("stopping", [this], { reverse: true });
})
.then(() => {
Expand Down
9 changes: 4 additions & 5 deletions test/integration/circuit-breaker.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,10 @@ describe("Test circuit breaker", () => {
.then(() => (clock = lolex.install({ shouldClearNativeTimers: true })));
});

afterAll(() => {
return master1
.stop()
.then(() => slave1.stop())
.then(() => clock.uninstall());
afterAll(async () => {
await clock.uninstall();

await master1.stop().then(() => slave1.stop());
});

it("should call 'happy' x5 without problem", () => {
Expand Down
15 changes: 14 additions & 1 deletion test/unit/cachers/memory-lru.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ describe("Test MemoryLRUCacher set & get", () => {
});

describe("Test MemoryLRUCacher set & get with default cloning enabled", () => {
let clock = lolex.install({ shouldClearNativeTimers: true });
let broker = new ServiceBroker({ logger: false });
let cacher = new MemoryLRUCacher({ clone: true });
cacher.init(broker);
Expand All @@ -104,6 +105,8 @@ describe("Test MemoryLRUCacher set & get with default cloning enabled", () => {
};

afterAll(async () => {
await clock.uninstall();

await cacher.close();
await broker.stop();
});
Expand Down Expand Up @@ -176,6 +179,7 @@ describe("Test MemoryLRUCacher set & get with default cloning disabled", () => {
});

describe("Test MemoryLRUCacher set & get with custom cloning", () => {
let clock;
const clone = jest.fn(data => JSON.parse(JSON.stringify(data)));
let broker = new ServiceBroker({ logger: false });
let cacher = new MemoryLRUCacher({ clone });
Expand All @@ -191,7 +195,13 @@ describe("Test MemoryLRUCacher set & get with custom cloning", () => {
}
};

beforeAll(async () => {
clock = lolex.install({ shouldClearNativeTimers: true });
});

afterAll(async () => {
await clock.uninstall();

await cacher.close();
await broker.stop();
});
Expand Down Expand Up @@ -329,7 +339,7 @@ describe("Test MemoryLRUCacher clean", () => {
});

describe("Test MemoryLRUCacher expired method", () => {
let clock = lolex.install({ shouldClearNativeTimers: true });
let clock;

let broker = new ServiceBroker({ logger: false });
let cacher = new MemoryLRUCacher({
Expand All @@ -349,6 +359,9 @@ describe("Test MemoryLRUCacher expired method", () => {
};
let data2 = "Data2";

beforeAll(async () => {
clock = lolex.install({ shouldClearNativeTimers: true });
});
afterAll(() => clock.uninstall());

it("should save the data with key", () => {
Expand Down
3 changes: 3 additions & 0 deletions test/unit/registry/registry.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ describe("Test Registry constructor", () => {

expect(registry.opts).toEqual({
preferLocal: true,
stopDelay: 100,
strategy: "RoundRobin"
});
expect(registry.StrategyFactory).toBe(Strategies.RoundRobin);
Expand All @@ -42,6 +43,7 @@ describe("Test Registry constructor", () => {

expect(registry.opts).toEqual({
preferLocal: false,
stopDelay: 100,
strategy: "Random"
});
expect(registry.StrategyFactory).toBe(Strategies.Random);
Expand All @@ -58,6 +60,7 @@ describe("Test Registry constructor", () => {

expect(registry.opts).toEqual({
preferLocal: true,
stopDelay: 100,
discoverer: "Redis",
strategy: "RoundRobin"
});
Expand Down
5 changes: 3 additions & 2 deletions test/unit/service-broker.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,8 @@ describe("Test ServiceBroker constructor", () => {
disableBalancer: true,
registry: {
strategy: Strategies.Random,
preferLocal: false
preferLocal: false,
stopDelay: 100
},

circuitBreaker: {
Expand Down Expand Up @@ -761,7 +762,7 @@ describe("Test broker.stop", () => {

return broker.stop().then(() => {
expect(broker.registry.regenerateLocalRawInfo).toBeCalledTimes(1);
expect(broker.registry.regenerateLocalRawInfo).toBeCalledWith(true);
expect(broker.registry.regenerateLocalRawInfo).toBeCalledWith(true, true);
expect(broker.registry.discoverer.sendLocalNodeInfo).toBeCalledTimes(1);

expect(optStopped).toHaveBeenCalledTimes(1);
Expand Down

0 comments on commit 84ef938

Please sign in to comment.