some updated TODOs for 2.x work
This commit is contained in:
parent
f812975f0f
commit
2a5bdd231a
1 changed files with 141 additions and 3 deletions
144
TODO.md
144
TODO.md
|
@ -1,12 +1,22 @@
|
||||||
# v2
|
# v2
|
||||||
|
|
||||||
- ^C fix. Done in 1.8.9. However, see a recent ticket about ^C/EPIPE issues.
|
- Exit handling:
|
||||||
I suspect the uncommited exeunt work will fix that.
|
|
||||||
- node-exeunt
|
- make a ticket with notes from "bunyan CLI exit handling" section below
|
||||||
|
- resolve it with the uncommited changes here
|
||||||
|
|
||||||
|
- figure out how to 'make cutarelease' for 2.x but tag as beta
|
||||||
|
- comment/grokking of bunyan.js flushing issues at
|
||||||
|
https://github.com/trentm/node-bunyan/issues/37 would be nice. Even if just a
|
||||||
|
link to exeunt and some examples. Wiki page?
|
||||||
|
- respond to Qs here: https://github.com/trentm/node-bunyan/issues/37#issuecomment-282933502
|
||||||
|
- consider whether to backport the exit handling work to 1.x???
|
||||||
- `createLogger(<config-and-fields>, <fields>)` changes (#460)
|
- `createLogger(<config-and-fields>, <fields>)` changes (#460)
|
||||||
- see section below
|
- see section below
|
||||||
- the dtrace-provider thing (#487)
|
- the dtrace-provider thing (#487)
|
||||||
TODO: answer Cody email
|
TODO: answer Cody email
|
||||||
|
- https://github.com/trentm/node-bunyan/issues/398 if easy, perhaps on 1.x
|
||||||
|
as well
|
||||||
- use package.json version for VERSION
|
- use package.json version for VERSION
|
||||||
- use deps
|
- use deps
|
||||||
- dashdash
|
- dashdash
|
||||||
|
@ -19,6 +29,134 @@
|
||||||
- formatters: read up again on `glp master..1.x`
|
- formatters: read up again on `glp master..1.x`
|
||||||
- support for customer formatters
|
- support for customer formatters
|
||||||
- for the CLI as well? How? ~/.bunyanrc?
|
- for the CLI as well? How? ~/.bunyanrc?
|
||||||
|
- if doing ~/.bunyanrc, then consider color schemes
|
||||||
|
|
||||||
|
|
||||||
|
# bunyan CLI exit handling
|
||||||
|
|
||||||
|
It has some problems currently.
|
||||||
|
|
||||||
|
One basic problem is that our stdout.on('error') handler can call into
|
||||||
|
drainStdoutAndExit multiple times, leading to the multiple Event Emitters
|
||||||
|
leak warning, and with a pager we are waiting for the pager to exit.
|
||||||
|
Why doesn't the pager exit on ^C? Is that a less thing? Perhaps due to our
|
||||||
|
LESS opts?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Setting up a file to work with:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
$ cat lots.js
|
||||||
|
var bunyan = require('./')
|
||||||
|
var log = bunyan.createLogger({
|
||||||
|
name: 'lots',
|
||||||
|
streams: [
|
||||||
|
{
|
||||||
|
type: 'file',
|
||||||
|
path: './lots.log'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
N = Math.pow(2, 16);
|
||||||
|
for (var i = N; i >= 0; i--) {
|
||||||
|
log.info({i: i}, 'another record');
|
||||||
|
}
|
||||||
|
|
||||||
|
$ node lots.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Issue 1: EventEmitter mem leak
|
||||||
|
|
||||||
|
```
|
||||||
|
$ node --version
|
||||||
|
v4.8.0
|
||||||
|
$ ./bin/bunyan lots.log | cat
|
||||||
|
[2017-04-05T01:47:15.899Z] INFO: lots/53218 on danger0.local: another record (i=65536)
|
||||||
|
[2017-04-05T01:47:15.901Z] INFO: lots/53218 on danger0.local: another record (i=65535)
|
||||||
|
...
|
||||||
|
^C # ^C quickly before it is done writing rendered logs
|
||||||
|
...
|
||||||
|
[2017-04-05T01:47:16.023Z] INFO: lots/53218 on danger0.local: another record (i=57351)
|
||||||
|
[2017-04-05T01:47:16.023Z] INFO: lots/53218
|
||||||
|
^C(node) warning: possible EventEmitter memory leak detected. 11 drain listeners added. Use emitter.setMaxListeners() to increase limit.
|
||||||
|
Trace
|
||||||
|
at Socket.addListener (events.js:239:17)
|
||||||
|
at Socket.Readable.on (_stream_readable.js:680:33)
|
||||||
|
at drainStdoutAndExit (/Users/trentm/tm/node-bunyan/bin/bunyan:1116:12)
|
||||||
|
at Socket.<anonymous> (/Users/trentm/tm/node-bunyan/bin/bunyan:1597:13)
|
||||||
|
at emitOne (events.js:77:13)
|
||||||
|
at Socket.emit (events.js:169:7)
|
||||||
|
at onwriteError (_stream_writable.js:313:10)
|
||||||
|
at onwrite (_stream_writable.js:331:5)
|
||||||
|
at WritableState.onwrite (_stream_writable.js:90:5)
|
||||||
|
at fireErrorCallbacks (net.js:457:13)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Issue 2: "write after end" infinite loop with ^C in pager
|
||||||
|
|
||||||
|
Mac. Node v4.8.0. Happens with node 0.10 as well.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./bin/bunyan lots.log
|
||||||
|
[2017-04-05T01:47:15.899Z] INFO: lots/53218 on danger0.local: another record (i=65536)
|
||||||
|
[2017-04-05T01:47:15.901Z] INFO: lots/53218 on danger0.local: another record (i=65535)
|
||||||
|
[2017-04-05T01:47:15.901Z] INFO: lots/53218 on danger0.local: another record (i=65534)
|
||||||
|
...
|
||||||
|
^C
|
||||||
|
...
|
||||||
|
[2017-04-05T01:47:15.909Z] INFO: lots/53218 on danger0.local: another record (i=65490)
|
||||||
|
:[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
(node) warning: possible EventEmitter memory leak detected. 11 drain listeners added. Use emitter.setMaxListeners() to increase limit.
|
||||||
|
Trace
|
||||||
|
at Socket.addListener (events.js:239:17)
|
||||||
|
at Socket.Readable.on (_stream_readable.js:680:33)
|
||||||
|
at drainStdoutAndExit (/Users/trentm/tm/node-bunyan/bin/bunyan:1116:12)
|
||||||
|
at Socket.<anonymous> (/Users/trentm/tm/node-bunyan/bin/bunyan:1600:13)
|
||||||
|
at emitOne (events.js:77:13)
|
||||||
|
at Socket.emit (events.js:169:7)
|
||||||
|
at writeAfterEnd (_stream_writable.js:169:10)
|
||||||
|
at Socket.Writable.write (_stream_writable.js:212:5)
|
||||||
|
at Socket.write (net.js:645:40)
|
||||||
|
at emit (/Users/trentm/tm/node-bunyan/bin/bunyan:1097:32)
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
[Error: write after end]
|
||||||
|
... # this goes forever until 'q' to quit pager
|
||||||
|
```
|
||||||
|
|
||||||
|
With bunyan's internal `_DEBUG`:
|
||||||
|
|
||||||
|
```
|
||||||
|
...
|
||||||
|
[2017-04-05T01:47:15.909Z] INFO: lots/53218 on danger0.local: another record (i=65491)
|
||||||
|
[2017-04-05T01:47:15.909Z] INFO: lots/53218 on danger0.local: another record (i=65490)
|
||||||
|
:(bunyan: cleanupAndExit)
|
||||||
|
(stdout error event: Error: write after end)
|
||||||
|
[Error: write after end]
|
||||||
|
(drainStdoutAndExit(1))
|
||||||
|
(stdout error event: Error: write after end)
|
||||||
|
[Error: write after end]
|
||||||
|
(drainStdoutAndExit(1))
|
||||||
|
(stdout error event: Error: write after end)
|
||||||
|
[Error: write after end]
|
||||||
|
(drainStdoutAndExit(1))
|
||||||
|
(stdout error event: Error: write after end)
|
||||||
|
[Error: write after end]
|
||||||
|
...
|
||||||
|
(drainStdoutAndExit(1))
|
||||||
|
(stdout error event: Error: write EPIPE)
|
||||||
|
(drainStdoutAndExit(0))
|
||||||
|
(bunyan: pager exit)
|
||||||
|
(bunyan: pager exit -> process.exit(1))
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# changes to ctor and log.child to separate fields from config
|
# changes to ctor and log.child to separate fields from config
|
||||||
|
|
Loading…
Reference in a new issue