@@ -159,11 +159,9 @@ class FluentSender {
159
159
}
160
160
161
161
const packet = [ tag , time , data ] ;
162
- let options = { } ;
162
+ const options = { } ;
163
163
if ( this . requireAckResponse ) {
164
- options = {
165
- chunk : crypto . randomBytes ( 16 ) . toString ( 'base64' )
166
- } ;
164
+ options . chunk = crypto . randomBytes ( 16 ) . toString ( 'base64' ) ;
167
165
packet . push ( options ) ;
168
166
}
169
167
return {
@@ -186,20 +184,25 @@ class FluentSender {
186
184
_push ( tag , time , data , callback ) {
187
185
if ( this . _eventMode === 'Message' ) {
188
186
// Message mode
189
- let item = this . _makePacketItem ( tag , time , data ) ;
187
+ const item = this . _makePacketItem ( tag , time , data ) ;
190
188
item . callback = callback ;
191
189
this . _sendQueue . push ( item ) ;
192
190
} else {
193
191
// PackedForward mode
194
192
const eventEntry = this . _makeEventEntry ( time , data ) ;
195
193
this . _sendQueueSize += eventEntry . length ;
196
194
if ( this . _sendQueue . has ( tag ) ) {
197
- let eventEntryData = this . _sendQueue . get ( tag ) ;
195
+ const eventEntryData = this . _sendQueue . get ( tag ) ;
198
196
eventEntryData . eventEntries . push ( eventEntry ) ;
197
+ eventEntryData . size += eventEntry . length ;
199
198
if ( callback ) eventEntryData . callbacks . push ( callback ) ;
200
199
} else {
201
200
const callbacks = callback ? [ callback ] : [ ] ;
202
- this . _sendQueue . set ( tag , { eventEntries : [ eventEntry ] , callbacks : callbacks } ) ;
201
+ this . _sendQueue . set ( tag , {
202
+ eventEntries : [ eventEntry ] ,
203
+ size : eventEntry . length ,
204
+ callbacks : callbacks
205
+ } ) ;
203
206
}
204
207
}
205
208
}
@@ -225,8 +228,8 @@ class FluentSender {
225
228
}
226
229
227
230
_doConnect ( callback ) {
228
- let addHandlers = ( ) => {
229
- let errorHandler = ( err ) => {
231
+ const addHandlers = ( ) => {
232
+ const errorHandler = ( err ) => {
230
233
if ( this . _socket ) {
231
234
this . _disconnect ( ) ;
232
235
this . _handleEvent ( 'error' , err ) ;
@@ -260,7 +263,7 @@ class FluentSender {
260
263
} ) ;
261
264
}
262
265
} else {
263
- let postConnect = ( ) => {
266
+ const postConnect = ( ) => {
264
267
if ( this . security . clientHostname && this . security . sharedKey !== null ) {
265
268
this . _handshake ( callback ) ;
266
269
} else {
@@ -362,7 +365,7 @@ class FluentSender {
362
365
363
366
_doFlushSendQueue ( timeoutId ) {
364
367
if ( this . _eventMode === 'Message' ) {
365
- let item = this . _sendQueue . shift ( ) ;
368
+ const item = this . _sendQueue . shift ( ) ;
366
369
if ( item === undefined ) {
367
370
this . _flushingSendQueue = false ;
368
371
// nothing written;
@@ -374,10 +377,10 @@ class FluentSender {
374
377
this . _flushingSendQueue = false ;
375
378
return ;
376
379
}
377
- let first = this . _sendQueue . entries ( ) . next ( ) . value ;
378
- let tag = first [ 0 ] ;
379
- let eventEntryData = first [ 1 ] ;
380
- let entries = Buffer . concat ( eventEntryData . eventEntries , this . _sendQueueSize ) ;
380
+ const first = this . _sendQueue . entries ( ) . next ( ) . value ;
381
+ const tag = first [ 0 ] ;
382
+ const eventEntryData = first [ 1 ] ;
383
+ let entries = Buffer . concat ( eventEntryData . eventEntries , eventEntryData . size ) ;
381
384
let size = entries . length ;
382
385
this . _sendQueue . delete ( tag ) ;
383
386
if ( this . _compressed ) {
@@ -387,15 +390,16 @@ class FluentSender {
387
390
const options = {
388
391
chunk : crypto . randomBytes ( 16 ) . toString ( 'base64' ) ,
389
392
size : size ,
390
- compressed : this . _compressed ? 'gzip' : 'text'
393
+ compressed : this . _compressed ? 'gzip' : 'text' ,
394
+ eventEntryDataSize : eventEntryData . size
391
395
} ;
392
396
const packet = msgpack . encode ( [ tag , entries , options ] , { codec : codec } ) ;
393
397
this . _doWrite ( packet , options , timeoutId , eventEntryData . callbacks ) ;
394
398
}
395
399
}
396
400
397
401
_doWrite ( packet , options , timeoutId , callbacks ) {
398
- const sendQueueSize = this . _sendQueueSize ;
402
+ const sendPacketSize = ( options && options . eventEntryDataSize ) || this . _sendQueueSize ;
399
403
this . _socket . write ( packet , ( ) => {
400
404
if ( this . requireAckResponse ) {
401
405
this . _socket . once ( 'data' , ( data ) => {
@@ -409,11 +413,12 @@ class FluentSender {
409
413
callbacks . forEach ( ( callback ) => {
410
414
this . _handleEvent ( 'error' , error , callback ) ;
411
415
} ) ;
416
+ } else { // no error on ack
417
+ callbacks . forEach ( ( callback ) => {
418
+ callback && callback ( ) ;
419
+ } ) ;
412
420
}
413
- this . _sendQueueSize -= sendQueueSize ;
414
- callbacks . forEach ( ( callback ) => {
415
- callback && callback ( ) ;
416
- } ) ;
421
+ this . _sendQueueSize -= sendPacketSize ;
417
422
process . nextTick ( ( ) => {
418
423
this . _waitToWrite ( ) ;
419
424
} ) ;
@@ -425,7 +430,7 @@ class FluentSender {
425
430
} ) ;
426
431
} , this . ackResponseTimeout ) ;
427
432
} else {
428
- this . _sendQueueSize -= sendQueueSize ;
433
+ this . _sendQueueSize -= sendPacketSize ;
429
434
callbacks . forEach ( ( callback ) => {
430
435
callback && callback ( ) ;
431
436
} ) ;
@@ -452,10 +457,10 @@ class FluentSender {
452
457
this . _status = null ;
453
458
this . internalLogger . error ( 'Fluentd error' , error ) ;
454
459
this . internalLogger . info ( 'Fluentd will reconnect after ' + this . reconnectInterval / 1000 + ' seconds' ) ;
455
- let timeoutId = setTimeout ( ( ) => {
460
+ const timeoutId = setTimeout ( ( ) => {
456
461
this . internalLogger . info ( 'Fluentd is reconnecting...' ) ;
457
462
this . _connect ( ( ) => {
458
- this . _flushSendQueue ( )
463
+ this . _flushSendQueue ( ) ;
459
464
this . internalLogger . info ( 'Fluentd reconnection finished!!' ) ;
460
465
} ) ;
461
466
} , this . reconnectInterval ) ;
@@ -562,7 +567,7 @@ class FluentSender {
562
567
let dataString = '' ;
563
568
writable . _write = ( chunk , encoding , callback ) => {
564
569
const dataArray = chunk . toString ( defaultEncoding ) . split ( / \n / ) ;
565
- let next = ( ) => {
570
+ const next = ( ) => {
566
571
if ( dataArray . length ) {
567
572
dataString += dataArray . shift ( ) ;
568
573
}
0 commit comments