Thread (46 messages) flat view 46 messages, 4 authors, 2016-06-15

Re: [PATCH 18/19] index-helper: autorun

From: David Turner <hidden>
Date: 2016-06-15 23:08:46

On Tue, 2016-03-15 at 15:26 +0100, Johannes Schindelin wrote:
Hi Duy,

On Tue, 15 Mar 2016, Duy Nguyen wrote:
quoted
On Thu, Mar 10, 2016 at 1:36 AM, David Turner <
dturner@twopensource.com> wrote:
quoted
Introduce a new config option, indexhelper.autorun, to
automatically
run git index-helper before starting up a builtin git command. 
 This
enables users to keep index-helper running without manual
intervention.
This could be a problem on Windows because "index-helper --detach"
does not work there. I have no idea how "daemons" are managed on
Windows and not sure if our design is still good when such a
"daemon"
is added on Windows. So I'm pulling Johannes in for his opinions.

Background for Johannes. We're adding "git index-helper" daemon
(one
per repo) to cache the index in memory to speed up index load time
(and in future probably name-hash too, I think it's also more often
used on Windows because of case-insensitive fs). It also enables
watchman (on Windows) for faster refresh. This patch allows to
start
the daemon automatically if it's not running. But I don't know it
will
work ok on Windows.

Assuming that "index-helper" service has to be installed and
started
from system, there can only be one service running right? This
clashes
with the per-repo daemon design... I think it can stilf work, if
the
main service just spawns new process, one for each repo. But again
I'm
not sure.
If we want to run the process as a Windows service, you are correct,
there
really can only be one. Worse: it runs with admin privileges.

But why not just keep it running as a detached process? We can run
those
on Windows, and if we're opening a named pipe whose name reveals the
one-to-one mapping with the index in question, I think we are fine
(read:
we can detect whether the process is running already).

We can even tell those processes to have a timeout, or to react to
other
system events.

Please note that I am *very* interested in this feature (speeding up
index
operations).
I don't understand what a "detached process" is on Windows (I have
never done any real Windows programming). Does that mean "call
daemonize() and it'll take care of it?"  Or something else?  Or should
I just not worry about it and let you take care of it?

Also, I'll figure out how to switch to named pipes. 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help