Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0.3-GA
    • Component/s: other
    • Labels:
      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
        });
      

        Attachments

          Activity

            People

            • Assignee:
              diego dupin Diego Dupin
              Reporter:
              diego dupin Diego Dupin
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: