Skip to content

Commit 675dd77

Browse files
committed
Ensure throttle_timer is tracking is not unset on second event
1 parent da0100f commit 675dd77

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

Diff for: lib/cortex/file_watcher.ex

+16-9
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,10 @@ defmodule Cortex.FileWatcher do
3838
{:file_event, watcher_pid, {path, _events}},
3939
%{watcher_pid: watcher_pid} = state
4040
) do
41-
%State{file_events: file_events, throttle_timer: throttle_timer} = state
42-
43-
throttle_timer =
44-
unless throttle_timer do
45-
Process.send_after(self(), :throttle_timer_complete, @throttle_timeout_ms)
46-
end
47-
48-
file_events = Map.put(file_events, path, file_type(path))
49-
state = %State{state | file_events: file_events, throttle_timer: throttle_timer}
41+
state =
42+
state
43+
|> maybe_update_throttle_timer()
44+
|> track_file_events(path)
5045

5146
{:noreply, state}
5247
end
@@ -77,6 +72,18 @@ defmodule Cortex.FileWatcher do
7772
# Private Helpers
7873
##########################################
7974

75+
defp maybe_update_throttle_timer(%State{throttle_timer: nil} = state) do
76+
throttle_timer = Process.send_after(self(), :throttle_timer_complete, @throttle_timeout_ms)
77+
%State{state | throttle_timer: throttle_timer}
78+
end
79+
80+
defp maybe_update_throttle_timer(state), do: state
81+
82+
defp track_file_events(%State{file_events: file_events} = state, path) do
83+
file_events = Map.put(file_events, path, file_type(path))
84+
%State{state | file_events: file_events}
85+
end
86+
8087
# public only because it is tested
8188
@spec file_type(Path.t()) :: :lib | :test | :unknown
8289
def file_type(path) do

0 commit comments

Comments
 (0)