Skip to content

Commit 9a5b7b4

Browse files
author
KristofferC
committed
move writing to REPL history file to behind a PID lock
1 parent ba4a4b2 commit 9a5b7b4

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

stdlib/REPL/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ name = "REPL"
22
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
33

44
[deps]
5+
FileWatching = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
56
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
67
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
78
Sockets = "6462fe0b-24de-5631-8697-dd941f90decc"
89
Unicode = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
910

1011
[extras]
11-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1212
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
13+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1314

1415
[targets]
1516
test = ["Test", "Random"]

stdlib/REPL/src/REPL.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Base.Experimental.@optlevel 1
1717

1818
using Base.Meta, Sockets
1919
import InteractiveUtils
20+
import FileWatching
2021

2122
export
2223
AbstractREPL,
@@ -616,7 +617,6 @@ function add_history(hist::REPLHistoryProvider, s::PromptState)
616617
# mode: $mode
617618
$(replace(str, r"^"ms => "\t"))
618619
"""
619-
# TODO: write-lock history file
620620
try
621621
seekend(hist.history_file)
622622
catch err
@@ -625,8 +625,10 @@ function add_history(hist::REPLHistoryProvider, s::PromptState)
625625
# If this doesn't fix it (e.g. when file is deleted), we'll end up rethrowing anyway
626626
hist_open_file(hist)
627627
end
628-
print(hist.history_file, entry)
629-
flush(hist.history_file)
628+
FileWatching.mkpidlock(hist.file_path * ".pid", stale_age=3) do
629+
print(hist.history_file, entry)
630+
flush(hist.history_file)
631+
end
630632
nothing
631633
end
632634

0 commit comments

Comments
 (0)