瀏覽代碼

storage-node: handle write backpressure to temp stream

Mokhtar Naamani 3 年之前
父節點
當前提交
370cf5fd86
共有 1 個文件被更改,包括 11 次插入3 次删除
  1. 11 3
      storage-node/packages/storage/storage.js

+ 11 - 3
storage-node/packages/storage/storage.js

@@ -113,9 +113,17 @@ class StorageWriteStream extends Transform {
       }
     }
 
-    this.temp.write(chunk, (err) => {
-      callback(err)
-    })
+    // Always waiting for write flush can be slow..
+    // this.temp.write(chunk, (err) => {
+    //   callback(err)
+    // })
+
+    // Respect backpressure
+    if (!this.temp.write(chunk)) {
+      this.temp.once('drain', callback)
+    } else {
+      process.nextTick(callback)
+    }
   }
 
   _flush(callback) {