Skip to content

Commit b89bd42

Browse files
committed
Revert "Make write_env_usage atomic (#2661)"
This reverts commit 9f74abe.
1 parent 6aad670 commit b89bd42

File tree

1 file changed

+8
-43
lines changed

1 file changed

+8
-43
lines changed

src/Types.jl

Lines changed: 8 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -436,50 +436,15 @@ function write_env_usage(source_file::AbstractString, usage_filepath::AbstractSt
436436
# Ensure that log dir exists
437437
!ispath(logdir()) && mkpath(logdir())
438438

439-
usage_file = joinpath(logdir(), usage_filepath)
440-
timestamp = now()
441-
442-
## Atomically write usage file
443-
while true
444-
# read existing usage file
445-
usage = if isfile(usage_file)
446-
TOML.parsefile(usage_file)
447-
else
448-
Dict{String, Any}()
449-
end
450-
451-
# record new usage
452-
usage[source_file] = [Dict("time" => timestamp)]
453-
454-
# keep only latest usage info
455-
for k in keys(usage)
456-
times = map(d -> Dates.DateTime(d["time"]), usage[k])
457-
usage[k] = [Dict("time" => maximum(times))]
458-
end
459-
460-
# Write to a temp file in the same directory as the destination
461-
temp_usage_file = tempname(logdir())
462-
open(temp_usage_file, "w") do io
463-
TOML.print(io, usage, sorted=true)
464-
end
465-
466-
# Move the temp file into place, replacing the original
467-
mv(temp_usage_file, usage_file, force = true)
439+
# Generate entire entry as a string first
440+
entry = sprint() do io
441+
TOML.print(io, Dict(source_file => [Dict("time" => now())]))
442+
end
468443

469-
# Check that the new file has what we want in it
470-
new_usage = if isfile(usage_file)
471-
TOML.parsefile(usage_file)
472-
else
473-
Dict{String, Any}()
474-
end
475-
if haskey(new_usage, source_file)
476-
for e in new_usage[source_file]
477-
if Dates.DateTime(e["time"]) >= timestamp
478-
return
479-
end
480-
end
481-
end
482-
# If not, try again
444+
# Append entry to log file in one chunk
445+
usage_file = joinpath(logdir(), usage_filepath)
446+
open(usage_file, append=true) do io
447+
write(io, entry)
483448
end
484449
end
485450

0 commit comments

Comments
 (0)