summaryrefslogtreecommitdiff
path: root/src/tracing/node_trace_writer.h
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-07-18 12:07:01 +0200
committerAnna Henningsen <anna@addaleax.net>2018-08-01 17:16:57 +0200
commit5e83a2abd0eccfb9b7200605e8371eb301dec452 (patch)
tree855b3f08da4913ce24fdab5d9ebd85558009b6a9 /src/tracing/node_trace_writer.h
parent25fdab5402c20fb0c08fc917d022a21e031ac5ff (diff)
downloadandroid-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.h8
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;