diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-07-18 12:07:01 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-08-01 17:16:57 +0200 |
commit | 5e83a2abd0eccfb9b7200605e8371eb301dec452 (patch) | |
tree | 855b3f08da4913ce24fdab5d9ebd85558009b6a9 /src/tracing/node_trace_writer.h | |
parent | 25fdab5402c20fb0c08fc917d022a21e031ac5ff (diff) | |
download | android-node-v8-5e83a2abd0eccfb9b7200605e8371eb301dec452.tar.gz android-node-v8-5e83a2abd0eccfb9b7200605e8371eb301dec452.tar.bz2 android-node-v8-5e83a2abd0eccfb9b7200605e8371eb301dec452.zip |
src: use only one tracing write fs req at a time
Concurrent writes to the same fd are generally not ideal,
since it’s not generally guaranteed that data from those
writes will end up on disk in the right order.
PR-URL: https://github.com/nodejs/node/pull/21867
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'src/tracing/node_trace_writer.h')
-rw-r--r-- | src/tracing/node_trace_writer.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/tracing/node_trace_writer.h b/src/tracing/node_trace_writer.h index 53311db992..5e5781479c 100644 --- a/src/tracing/node_trace_writer.h +++ b/src/tracing/node_trace_writer.h @@ -27,13 +27,12 @@ class NodeTraceWriter : public AsyncTraceWriter { private: struct WriteRequest { - uv_fs_t req; - NodeTraceWriter* writer; std::string str; int highest_request_id; }; - static void WriteCb(uv_fs_t* req); + void AfterWrite(); + void StartWrite(uv_buf_t buf); void OpenNewFileForStreaming(); void WriteToFile(std::string&& str, int highest_request_id); void WriteSuffix(); @@ -56,7 +55,8 @@ class NodeTraceWriter : public AsyncTraceWriter { // Used to wait until async handles have been closed. ConditionVariable exit_cond_; int fd_ = -1; - std::queue<WriteRequest*> write_req_queue_; + uv_fs_t write_req_; + std::queue<WriteRequest> write_req_queue_; int num_write_requests_ = 0; int highest_request_id_completed_ = 0; int total_traces_ = 0; |