git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 4/5] scalar unregister: stop FSMonitor daemon

From
Victoria Dye <vdye@github.com>
Date
Aug 17, 2022, 17:36 UTC
Message-ID
<6c39fc96-2e88-297e-38df-4bcb88447972@github.com>
In-Reply-To
<2cbbd732-b9e7-fe8b-9c77-f86a856d06c7@github.com>
Derrick Stolee wrote:
Show 39 quoted lines
> On 8/16/2022 7:58 PM, Johannes Schindelin via GitGitGadget wrote:
>> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>>
>> Especially on Windows, we will need to stop that daemon, just in case
>> that the directory needs to be removed (the daemon would otherwise hold
>> a handle to that directory, preventing it from being deleted).
> 
>> +static int stop_fsmonitor_daemon(void)
>> +{
>> +	assert(fsmonitor_ipc__is_supported());
>> +
>> +	if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
>> +		return run_git("fsmonitor--daemon", "stop", NULL);
>> +
>> +	return 0;
>> +}
>> +
>>  static int register_dir(void)
>>  {
>>  	if (add_or_remove_enlistment(1))
>> @@ -281,6 +291,9 @@ static int unregister_dir(void)
>>  	if (add_or_remove_enlistment(0))
>>  		res = error(_("could not remove enlistment"));
>>  
>> +	if (fsmonitor_ipc__is_supported() && stop_fsmonitor_daemon() < 0)
>> +		res = error(_("could not stop the FSMonitor daemon"));
>> +
> 
> One thing that is interesting about 'scalar unregister' is that it does
> not change config values. At that point, we don't know which config values
> are valuable to keep or not because the user may have set them before
> 'scalar register', or otherwise liked the config options.
> 
> Here, the reason to stop the daemon is so we unlock the ability to delete
> the directory on Windows.
> 
> Should this become part of cmd_delete() instead of unregister_dir()? Or,
> do we think that users would opt to run 'scalar unregister' before trying
> to delete their directory manually?

After reading this, my first thought was that 'scalar unregister' should still turn off the FSMonitor daemon because, in addition to allowing for directory deletion in 'scalar delete', it's "cleaning up" some optionally-enabled behavior associated with Scalar (a la 'toggle_maintenance(0)'). However, given that 'unregister' doesn't clear 'core.fsmonitor', it really *isn't* comparable to 'toggle_maintenance(0)'.

So I think you're right that it should only be associated with enlistment deletion (although I think 'delete_enlistment()' is the place for that - right before 'remove_dir_recursively()' - rather than 'cmd_delete()').

Thanks!
> 
> Thanks,
> -Stolee
Previous: Derrick StoleeNext: Derrick Stolee
Message 24 of 39 in “scalar: enable built-in FSMonitor”
  1. 0/3 scalar: enable built-in FSMonitorVictoria Dye via GitGitGadget, Aug 16, 2022
  2. 1/3 scalar: enable built-in FSMonitor on `register`Matthew John Cheetham via GitGitGadget, Aug 16, 2022
  3. Junio C HamanoAug 16, 2022
  4. Victoria DyeAug 16, 2022
  5. Junio C HamanoAug 16, 2022
  6. 2/3 scalar unregister: stop FSMonitor daemonJohannes Schindelin via GitGitGadget, Aug 16, 2022
  7. 3/3 scalar: update technical doc roadmap with FSMonitor supportVictoria Dye via GitGitGadget, Aug 16, 2022
  8. Junio C HamanoAug 16, 2022
  9. Victoria DyeAug 16, 2022
  10. Junio C HamanoAug 16, 2022
  11. 0/5 scalar: enable built-in FSMonitorVictoria Dye via GitGitGadget, Aug 16, 2022
  12. 1/5 scalar-unregister: handle error codes greater than 0Victoria Dye via GitGitGadget, Aug 16, 2022
  13. Junio C HamanoAug 17, 2022
  14. 2/5 scalar-[un]register: clearly indicate source of errorVictoria Dye via GitGitGadget, Aug 16, 2022
  15. 5/5 scalar: update technical doc roadmap with FSMonitor supportVictoria Dye via GitGitGadget, Aug 16, 2022
  16. 3/5 scalar: enable built-in FSMonitor on `register`Matthew John Cheetham via GitGitGadget, Aug 16, 2022
  17. Derrick StoleeAug 17, 2022
  18. Junio C HamanoAug 17, 2022
  19. Victoria DyeAug 17, 2022
  20. Derrick StoleeAug 18, 2022
  21. Junio C HamanoAug 17, 2022
  22. 4/5 scalar unregister: stop FSMonitor daemonJohannes Schindelin via GitGitGadget, Aug 16, 2022
  23. Derrick StoleeAug 17, 2022
  24. Victoria DyeAug 17, 2022
  25. Derrick StoleeAug 17, 2022
  26. Derrick StoleeAug 17, 2022
  27. 0/8 scalar: enable built-in FSMonitorVictoria Dye via GitGitGadget, Aug 18, 2022
  28. 1/8 scalar: constrain enlistment searchVictoria Dye via GitGitGadget, Aug 18, 2022
  29. Derrick StoleeAug 19, 2022
  30. 2/8 scalar-unregister: handle error codes greater than 0Victoria Dye via GitGitGadget, Aug 18, 2022
  31. 3/8 scalar-[un]register: clearly indicate source of errorVictoria Dye via GitGitGadget, Aug 18, 2022
  32. 4/8 scalar-delete: do not 'die()' in 'delete_enlistment()'Victoria Dye via GitGitGadget, Aug 18, 2022
  33. 6/8 scalar: enable built-in FSMonitor on `register`Matthew John Cheetham via GitGitGadget, Aug 18, 2022
  34. Derrick StoleeAug 19, 2022
  35. 8/8 scalar: update technical doc roadmap with FSMonitor supportVictoria Dye via GitGitGadget, Aug 18, 2022
  36. 5/8 scalar: move config setting logic into its own functionVictoria Dye via GitGitGadget, Aug 18, 2022
  37. 7/8 scalar unregister: stop FSMonitor daemonJohannes Schindelin via GitGitGadget, Aug 18, 2022
  38. Derrick StoleeAug 19, 2022
  39. Junio C HamanoAug 19, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.