Details
- 
    
Bug
 - 
    Status: Closed (View Workflow)
 - 
    
Major
 - 
    Resolution: Fixed
 - 
    None
 - 
    None
 
Description
see https://github.com/MariaDB/mariadb-connector-nodejs/issues/40
The problem is when "piping", to handle the stream when writable stream fails
How to handle writable that stop for any reason ( for example a ClientRequest that has ended):
stream is then in pause mode, waiting for Writable to consume feed. All subsequent request are stopped until stream finished.
I don't see any other solution but to document piping properly to indicate to resume.
Probably a good solution for pool state is that streaming not consumed must be handled when connection is given back to pool.
example :
					pool
			 | 
		
					  .getConnection()
			 | 
		
					  .then(conn => {
			 | 
		
					const someWriterStream = fs.createWriteStream("./tmp.file")  | 
		
					.on("error", err => {  | 
		
					//export has ended, resume stream  | 
		
					        queryStream.resume();
			 | 
		
					      });
			 | 
		
| 
					 | 
		
					const transform = new Transform({  | 
		
					transform: function transformer(chunk, encoding, callback) {  | 
		
					callback(null, JSON.stringify(chunk));  | 
		
					      },
			 | 
		
					objectMode: true  | 
		
					    });
			 | 
		
| 
					 | 
		
					const queryStream = conn.queryStream("SELECT seq as val FROM seq_1_to_10000");  | 
		
					    queryStream
			 | 
		
					      .pipe(transform)
			 | 
		
					      .pipe(someWriterStream)
			 | 
		
					.on('close', () => {  | 
		
					        conn.end();
			 | 
		
					      });
			 | 
		
| 
					 | 
		
					//forcing a WRITER end to simulate this error  | 
		
					    setTimeout(someWriterStream.destroy.bind(someWriterStream), 2);
			 | 
		
					  })
			 | 
		
					.catch(err => {  | 
		
					//error  | 
		
					  });
			 |