Skip to content

Commit

Permalink
chore: log more info before master closing
Browse files Browse the repository at this point in the history
PR-URL: #99
Reviewed-BY: atian25 <atian25@qq.com>
  • Loading branch information
hyj1991 committed Nov 12, 2021
1 parent 8d2b784 commit 98688f0
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 47 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Node.js CI

on:
push:
branches:
- main
- master
pull_request:
branches:
- main
- master
schedule:
- cron: '0 2 * * *'

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
node-version: [12, 14, 16]
os: [ubuntu-latest, macos-latest]

steps:
- name: Checkout Git Source
uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}

- name: Install Dependencies
run: npm i -g npminstall && npminstall

- name: Continuous Integration
run: npm run ci

- name: Code Coverage
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
15 changes: 0 additions & 15 deletions .travis.yml

This file was deleted.

17 changes: 0 additions & 17 deletions appveyor.yml

This file was deleted.

9 changes: 8 additions & 1 deletion lib/master.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

const os = require('os');
const v8 = require('v8');
const util = require('util');
const path = require('path');
const fs = require('fs');
Expand Down Expand Up @@ -634,7 +635,13 @@ class Master extends EventEmitter {
onSignal(signal) {
if (this.closed) return;

this.logger.info('[master] receive signal %s, closing', signal);
this.logger.info('[master] master is killed by signal %s, closing', signal);

// logger more info
const { used_heap_size, heap_size_limit } = v8.getHeapStatistics();
this.logger.info('[master] system memory: total %s, free %s', os.totalmem(), os.freemem());
this.logger.info('[master] process info: heap_limit %s, heap_used %s', heap_size_limit, used_heap_size);

this.close();
}

Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
"coffee": "^5.2.1",
"egg": "^2.20.0",
"egg-bin": "^4.11.1",
"egg-ci": "^1.19.0",
"egg-errors": "^2.2.0",
"egg-mock": "^3.22.1",
"eslint": "^5.15.1",
Expand All @@ -70,6 +71,7 @@
"node": ">= 8.0.0"
},
"ci": {
"version": "8, 10, 12, 14"
"type": "github",
"version": "8, 10, 12, 14, 16"
}
}
38 changes: 25 additions & 13 deletions test/master.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ describe('test/master.test.js', () => {
.expect('code', 0)
.end();

// 2017-05-27 21:24:38,064 INFO 59065 [master] receive signal SIGTERM, closing
// 2017-05-27 21:24:38,064 INFO 59065 [master] master is killed by signal SIGTERM, closing
// 2017-05-27 21:24:38,065 INFO 59065 [master] close done, exiting with code:0
// 2017-05-27 21:24:38,065 INFO 59065 [master] exit with code:0
// 2017-05-27 21:24:38,067 INFO 59067 [app_worker] receive signal SIGTERM, exiting with code:0
Expand All @@ -105,7 +105,9 @@ describe('test/master.test.js', () => {
app.proc.kill('SIGTERM');
yield sleep(6000);
assert(app.proc.killed === true);
app.expect('stdout', /INFO \d+ \[master\] receive signal SIGTERM, closing/);
app.expect('stdout', /INFO \d+ \[master\] master is killed by signal SIGTERM, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /DEBUG \d+ \[master\] close done, exiting with code:0/);
app.expect('stdout', /INFO \d+ \[master\] exit with code:0/);
// app.expect('stdout', /INFO \d+ \[app_worker\] receive signal SIGTERM, exiting with code:0/);
Expand Down Expand Up @@ -135,7 +137,7 @@ describe('test/master.test.js', () => {

yield sleep(6000);
assert(app.proc.killed === true);
app.notExpect('stdout', /\[master\] receive signal SIGTERM, closing/);
app.notExpect('stdout', /\[master\] master is killed by signal SIGTERM, closing/);
app.notExpect('stdout', /\[master\] close done, exiting with code:0/);
app.notExpect('stdout', /\[master\] exit with code:0/);
app.expect('stderr', /\[app_worker\] receive disconnect event /);
Expand All @@ -161,7 +163,7 @@ describe('test/master.test.js', () => {

yield sleep(6000);
assert(app.proc.killed === true);
app.notExpect('stdout', /\[master\] receive signal SIGTERM, closing/);
app.notExpect('stdout', /\[master\] master is killed by signal SIGTERM, closing/);
app.notExpect('stdout', /\[master\] close done, exiting with code:0/);
app.notExpect('stdout', /\[master\] exit with code:0/);
app.expect('stderr', /\[app_worker\] receive disconnect event /);
Expand All @@ -180,7 +182,7 @@ describe('test/master.test.js', () => {
.end();

// 2017-05-28 00:14:32,982 INFO 59714 [master] egg started on http://127.0.0.1:17001 (1606ms)
// 2017-05-28 00:14:32,987 INFO 59714 [master] receive signal SIGTERM, closing
// 2017-05-28 00:14:32,987 INFO 59714 [master] master is killed by signal SIGTERM, closing
// 2017-05-28 00:14:32,988 INFO 59714 [master] close done, exiting with code:0
// 2017-05-28 00:14:32,988 INFO 59714 [master] exit with code:0
// 2017-05-28 00:14:32,996 INFO 59716 [app_worker] receive signal SIGTERM, exiting with code:0
Expand All @@ -190,7 +192,9 @@ describe('test/master.test.js', () => {
app.proc.kill('SIGTERM');
yield sleep(6000);
assert(app.proc.killed === true);
app.expect('stdout', /\[master\] receive signal SIGTERM, closing/);
app.expect('stdout', /\[master\] master is killed by signal SIGTERM, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /\[master\] exit with code:0/);
});

Expand All @@ -208,7 +212,9 @@ describe('test/master.test.js', () => {
yield sleep(6000);

assert(app.proc.killed === true);
app.expect('stdout', /\[master\] receive signal SIGQUIT, closing/);
app.expect('stdout', /\[master\] master is killed by signal SIGQUIT, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /\[master\] exit with code:0/);
});

Expand All @@ -227,7 +233,9 @@ describe('test/master.test.js', () => {
yield sleep(6000);

assert(app.proc.killed === true);
app.expect('stdout', /\[master\] receive signal SIGINT, closing/);
app.expect('stdout', /\[master\] master is killed by signal SIGINT, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /\[master\] exit with code:0/);
});

Expand Down Expand Up @@ -300,7 +308,9 @@ describe('test/master.test.js', () => {
app.expect('stdout', /worker1 \[\d+\] started/);
app.expect('stdout', /worker2 \[\d+\] started/);

app.expect('stdout', /\[master\] receive signal SIGTERM, closing/);
app.expect('stdout', /\[master\] master is killed by signal SIGTERM, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /\[master\] exit with code:0/);
app.expect('stdout', /worker1 on sigterm and exit/);
app.expect('stdout', /worker2 on sigterm and exit/);
Expand All @@ -324,14 +334,16 @@ describe('test/master.test.js', () => {
.expect('code', 0)
.end();

yield sleep(3000);
app.proc.kill('SIGTERM');
yield sleep(5000);
app.proc.kill('SIGTERM');
yield sleep(8000);
assert(app.proc.killed === true);
app.expect('stdout', /worker1 \[\d+\] started/);
app.expect('stdout', /worker2 \[\d+\] started/);

app.expect('stdout', /\[master\] receive signal SIGTERM, closing/);
app.expect('stdout', /\[master\] master is killed by signal SIGTERM, closing/);
app.expect('stdout', /\[master\] system memory: total \d+, free \d+/);
app.expect('stdout', /\[master\] process info: heap_limit \d+, heap_used \d+/);
app.expect('stdout', /\[master\] exit with code:0/);
app.expect('stdout', /worker1 on sigterm and not exit/);
app.expect('stdout', /worker2 on sigterm and exit/);
Expand Down Expand Up @@ -486,7 +498,7 @@ describe('test/master.test.js', () => {
p.on('message', msg => {
masterPid = msg;
});
yield sleep(5000);
yield sleep(10000);
process.kill(masterPid);
process.kill(p.pid);
fs.closeSync(errFd);
Expand Down

0 comments on commit 98688f0

Please sign in to comment.