Type:
Bug
Priority:
Major
Resolution:
Fixed
Affects Version/s:
None
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
});
{"report":{"fcp":905,"ttfb":225.09999990463257,"pageVisibility":"visible","entityId":72246,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":32,"apdex":1,"journeyId":"0feae2ff-ba5f-4a9b-99cf-3c50e73635da","navigationType":0,"readyForUser":980.5999999046326,"redirectCount":0,"resourceLoadedEnd":1019.9000000953674,"resourceLoadedStart":231.09999990463257,"resourceTiming":[{"duration":114.40000009536743,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":231.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":231.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":345.5,"responseStart":0,"secureConnectionStart":0},{"duration":115.19999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":231.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":231.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":346.5,"responseStart":0,"secureConnectionStart":0},{"duration":174.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":231.5,"connectEnd":231.5,"connectStart":231.5,"domainLookupEnd":231.5,"domainLookupStart":231.5,"fetchStart":231.5,"redirectEnd":0,"redirectStart":0,"requestStart":231.5,"responseEnd":405.59999990463257,"responseStart":405.59999990463257,"secureConnectionStart":231.5},{"duration":287.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":231.69999980926514,"connectEnd":231.69999980926514,"connectStart":231.69999980926514,"domainLookupEnd":231.69999980926514,"domainLookupStart":231.69999980926514,"fetchStart":231.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":231.69999980926514,"responseEnd":519.5,"responseStart":519.5,"secureConnectionStart":231.69999980926514},{"duration":291,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":232,"connectEnd":232,"connectStart":232,"domainLookupEnd":232,"domainLookupStart":232,"fetchStart":232,"redirectEnd":0,"redirectStart":0,"requestStart":232,"responseEnd":523,"responseStart":523,"secureConnectionStart":232},{"duration":292,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":232.09999990463257,"connectEnd":232.09999990463257,"connectStart":232.09999990463257,"domainLookupEnd":232.09999990463257,"domainLookupStart":232.09999990463257,"fetchStart":232.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":232.09999990463257,"responseEnd":524.0999999046326,"responseStart":524,"secureConnectionStart":232.09999990463257},{"duration":292.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":232.30000019073486,"connectEnd":232.30000019073486,"connectStart":232.30000019073486,"domainLookupEnd":232.30000019073486,"domainLookupStart":232.30000019073486,"fetchStart":232.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":232.30000019073486,"responseEnd":524.4000000953674,"responseStart":524.4000000953674,"secureConnectionStart":232.30000019073486},{"duration":326.69999980926514,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":232.40000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":232.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":559.0999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":293.40000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":232.59999990463257,"connectEnd":232.59999990463257,"connectStart":232.59999990463257,"domainLookupEnd":232.59999990463257,"domainLookupStart":232.59999990463257,"fetchStart":232.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":232.59999990463257,"responseEnd":526,"responseStart":526,"secureConnectionStart":232.59999990463257},{"duration":326.3999996185303,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":232.80000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":232.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":559.1999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":294,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":232.90000009536743,"connectEnd":232.90000009536743,"connectStart":232.90000009536743,"domainLookupEnd":232.90000009536743,"domainLookupStart":232.90000009536743,"fetchStart":232.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":232.90000009536743,"responseEnd":526.9000000953674,"responseStart":526.9000000953674,"secureConnectionStart":232.90000009536743},{"duration":554.6999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":233.80000019073486,"connectEnd":233.80000019073486,"connectStart":233.80000019073486,"domainLookupEnd":233.80000019073486,"domainLookupStart":233.80000019073486,"fetchStart":233.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":233.80000019073486,"responseEnd":788.5,"responseStart":788.5,"secureConnectionStart":233.80000019073486},{"duration":749.6999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":233.80000019073486,"connectEnd":233.80000019073486,"connectStart":233.80000019073486,"domainLookupEnd":233.80000019073486,"domainLookupStart":233.80000019073486,"fetchStart":233.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":233.80000019073486,"responseEnd":983.5,"responseStart":983.5,"secureConnectionStart":233.80000019073486},{"duration":216.40000009536743,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":573.0999999046326,"connectEnd":573.0999999046326,"connectStart":573.0999999046326,"domainLookupEnd":573.0999999046326,"domainLookupStart":573.0999999046326,"fetchStart":573.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":573.0999999046326,"responseEnd":789.5,"responseStart":789.5,"secureConnectionStart":573.0999999046326},{"duration":173.7999997138977,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":833.8000001907349,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":833.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1007.5999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":178.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":834.6999998092651,"connectEnd":834.6999998092651,"connectStart":834.6999998092651,"domainLookupEnd":834.6999998092651,"domainLookupStart":834.6999998092651,"fetchStart":834.6999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":834.6999998092651,"responseEnd":1013.5,"responseStart":1013.5,"secureConnectionStart":834.6999998092651},{"duration":184.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/53a43b6764f587426c7bb9a150184c00-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":835.0999999046326,"connectEnd":835.0999999046326,"connectStart":835.0999999046326,"domainLookupEnd":835.0999999046326,"domainLookupStart":835.0999999046326,"fetchStart":835.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":835.0999999046326,"responseEnd":1019.9000000953674,"responseStart":1019.9000000953674,"secureConnectionStart":835.0999999046326},{"duration":159.09999990463257,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":898.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":898.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1057.5999999046326,"responseStart":0,"secureConnectionStart":0}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":75,"responseStart":226,"responseEnd":229,"domLoading":229,"domInteractive":1090,"domContentLoadedEventStart":1090,"domContentLoadedEventEnd":1128,"domComplete":1766,"loadEventStart":1767,"loadEventEnd":1768,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1058.5},{"name":"bigPipe.sidebar-id.end","time":1060.5999999046326},{"name":"bigPipe.activity-panel-pipe-id.start","time":1060.9000000953674},{"name":"bigPipe.activity-panel-pipe-id.end","time":1063.4000000953674},{"name":"activityTabFullyLoaded","time":1137.1999998092651}],"measures":[],"correlationId":"5ced7785c8772b","effectiveType":"4g","downlink":9.1,"rtt":0,"serverDuration":88,"dbReadsTimeInMs":8,"dbConnsTimeInMs":15,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}