Thread (30 messages) flat view 30 messages, 4 authors, 2016-06-16

Re: [PATCH v10 11/20] index-helper: use watchman to avoid refreshing index with lstat()

From: David Turner <hidden>
Date: 2016-06-16 02:19:22

On Fri, 2016-05-13 at 00:10 +0100, Ramsay Jones wrote:
On 12/05/16 21:20, David Turner wrote:
quoted
From: Nguyễn Thái Ngọc Duy <redacted>
[snip]
quoted
 
+/* in ms */
+#define WATCHMAN_TIMEOUT 1000
+
+static int poke_and_wait_for_reply(int fd)
+{
+	struct strbuf buf = STRBUF_INIT;
+	int ret = -1;
+	struct pollfd pollfd;
+	int bytes_read;
+	char reply_buf[4096];
+	const char *requested_capabilities = "";
+
+#ifdef USE_WATCHMAN
+	requested_capabilities = "watchman";
+#endif
+
+	if (fd < 0)
+		return -1;
+
+	strbuf_addf(&buf, "poke %d %s", getpid(),
requested_capabilities);
+	if (packet_write_gently(fd, buf.buf, buf.len))
This is not causing a problem or bug, but is none the less not
correct - as you know, packet_write_gently() takes a 'printf' like
variable argument list. (So, buf.buf is the format specifier and
buf.len is an unused arg).

I think I would write this as:

	strbuf_addf(&buf, "poke %d", getpid());
	if (requested_capabilities && *requested_capabilities)
		strbuf_addf(&buf, " %s", requested_capabilities);
	if (packet_write_gently(fd, "%s", buf.buf))

... or something similar. [Note, just typing into my email client, so
it's not been close to a compiler.]
Thanks for the report. I'll fix it.

I'm going to just send the requested_capabilities regardless of whether
they are empty -- it won't hurt.  
quoted
+		return -1;
+	if (packet_flush_gently(fd))
+		return -1;
Why are you sending a flush packet - doesn't the index-helper
simply ignore it?
It's not the packet that I'm excited about -- it's that later,
packet_write might be buffered (according to a docstring).  So I want
to ensure that the writes actually go out *now*.
I haven't tried this yet BTW, just reading patches as they float
on past... ;-)

ATB,
Ramsay Jones
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help