@@ -5,7 +5,7 @@ const Q = require('q');
5
5
const logger = require ( 'cf-logs' ) . Logger ( 'codefresh:containerLogger' ) ;
6
6
const CFError = require ( 'cf-errors' ) ;
7
7
const LoggerStrategy = require ( './enums' ) . LoggerStrategy ;
8
- const { Transform, pipeline } = require ( 'stream' ) ;
8
+ const { Transform } = require ( 'stream' ) ;
9
9
10
10
class ContainerLogger extends EventEmitter {
11
11
@@ -99,32 +99,25 @@ class ContainerLogger extends EventEmitter {
99
99
}
100
100
101
101
_streamTty ( stdout , stderr ) {
102
+ logger . info ( `Piping stdout and stderr step streams` ) ;
102
103
103
- pipeline ( stdout , this . _logSizeLimitStream ( ) , this . stepLogger . writeStream ( ) , ( err ) => {
104
- if ( err ) {
105
- logger . error ( `Stdout streams pipeline failed on: ${ err } ` ) ;
106
- return ;
107
- }
108
- logger . info ( 'Stdout streams pipeline succeeded.' ) ;
109
- } ) ;
104
+ const stepLoggerWritableStream = this . stepLogger . writeStream ( ) ;
105
+ stepLoggerWritableStream . on ( 'error' , err => logger . error ( `stepLoggerWritableStream: ${ err } ` ) ) ;
106
+
107
+ // Attention(!) all streams piped to step logger writable stream must be a new streams(!) in order to avoid message piping twice to writable stream.
108
+ stdout . pipe ( this . _logSizeLimitStream ( ) , { end : false } ) . pipe ( this . stepLogger . stepNameTransformStream ( ) , { end : false } ) . pipe ( stepLoggerWritableStream , { end : false } ) ;
110
109
111
110
if ( ! stderr ) {
112
111
return ;
113
112
}
114
113
115
- pipeline ( stderr , this . _logSizeLimitStream ( ) , this . _errorTransformerStream ( ) , this . stepLogger . writeStream ( ) , ( err ) => {
116
- if ( err ) {
117
- logger . error ( `Stderr streams pipeline failed on: ${ err } ` ) ;
118
- return ;
119
- }
120
- logger . info ( 'Stderr streams pipeline succeeded.' ) ;
121
- } ) ;
114
+ stderr . pipe ( this . _logSizeLimitStream ( ) , { end : false } )
115
+ . pipe ( this . _errorTransformerStream ( ) , { end : false } ) . pipe ( this . stepLogger . stepNameTransformStream ( ) , { end : false } ) . pipe ( stepLoggerWritableStream , { end : false } ) ;
122
116
123
117
stderr . once ( 'end' , ( ) => {
124
118
this . stepFinished = true ;
125
119
logger . info ( `stderr end event was fired for container: ${ this . containerId } ` ) ;
126
120
} ) ;
127
-
128
121
}
129
122
130
123
_registerToTtyStreams ( stdout , stderr ) {
0 commit comments