v2.0.0 (beta); ensure 2.x releases are published as 'beta' for now

This commit is contained in:
Trent Mick 2017-05-03 23:32:48 -07:00
parent 0d62f8a890
commit 40ee2503cc
7 changed files with 16 additions and 139 deletions

View file

@ -5,7 +5,12 @@ Known issues:
- [issue #58] Can't install to a dir with spaces. This is [this node-gyp
bug](https://github.com/TooTallNate/node-gyp/issues/65).
## not yet released (2.x)
## not yet released
(nothing yet)
## 2.0.0 (beta)
- [issue #499] Fix some `bunyan` CLI exit handling problems.

View file

@ -56,9 +56,9 @@ cutarelease: check
read
ver=$(shell cat package.json | json version) && \
date=$(shell date -u "+%Y-%m-%d") && \
git tag -a "$$ver" -m "version $$ver ($$date)" && \
git tag -a "$$ver" -m "version $$ver ($$date) beta" && \
git push --tags origin && \
npm publish
npm publish --tag beta
.PHONY: docs
docs: toc

View file

@ -75,8 +75,11 @@ also [as a forum in the
browser](https://groups.google.com/forum/?fromgroups#!forum/bunyan-logging).
Active branches:
- "master" is currently for coming Bunyan 2.x work.
- "1.x" is for 1.x maintenance work, if any.
- "1.x" is for 1.x maintenance work, if any. 1.x releases are still "latest" in
npm.
- "master" is currently for coming Bunyan 2.x work. For now, 2.x releases are
published to npm with the "beta" tag, meaning that `npm install bunyan` is
still 1.x for now.
# Installation

131
TODO.md
View file

@ -1,10 +1,5 @@
# v2
- Exit handling:
- 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
@ -32,132 +27,6 @@
- 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

View file

@ -11,7 +11,7 @@
* vim: expandtab:ts=4:sw=4
*/
var VERSION = '1.8.10';
var VERSION = '2.0.0';
var p = console.log;
var util = require('util');

View file

@ -8,7 +8,7 @@
* vim: expandtab:ts=4:sw=4
*/
var VERSION = '1.8.10';
var VERSION = '2.0.0';
/*
* Bunyan log format version. This becomes the 'v' field on all log records.

View file

@ -1,6 +1,6 @@
{
"name": "bunyan",
"version": "1.8.10",
"version": "2.0.0",
"description": "a JSON logging library for node.js services",
"author": "Trent Mick <trentm@gmail.com> (http://trentm.com)",
"main": "./lib/bunyan.js",