From d594634016cf1b3ee902d531a0910efedc348600 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Sat, 7 Aug 2021 00:59:04 -0400 Subject: [PATCH 1/3] Simplify lock(DOWNLOAD_LOCK) --- src/Downloads.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Downloads.jl b/src/Downloads.jl index 6a6c5cb..02082b3 100644 --- a/src/Downloads.jl +++ b/src/Downloads.jl @@ -290,13 +290,13 @@ function request( throw :: Bool = true, downloader :: Union{Downloader, Nothing} = nothing, ) :: Union{Response, RequestError} - lock(DOWNLOAD_LOCK) do - yield() # let other downloads finish - downloader isa Downloader && return - while true + yield() # let other downloads finish + if downloader === nothing + lock(DOWNLOAD_LOCK) do downloader = DOWNLOADER[] - downloader isa Downloader && return - DOWNLOADER[] = Downloader() + if downloader === nothing + downloader = DOWNLOADER[] = Downloader() + end end end local response From 09c7599d004ec6270b8364b8e1d500e14f88a10d Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Sun, 8 Aug 2021 17:28:19 -0400 Subject: [PATCH 2/3] Move yield back inside the lock --- src/Downloads.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Downloads.jl b/src/Downloads.jl index 02082b3..e290d60 100644 --- a/src/Downloads.jl +++ b/src/Downloads.jl @@ -290,9 +290,9 @@ function request( throw :: Bool = true, downloader :: Union{Downloader, Nothing} = nothing, ) :: Union{Response, RequestError} - yield() # let other downloads finish if downloader === nothing lock(DOWNLOAD_LOCK) do + yield() # let other downloads finish downloader = DOWNLOADER[] if downloader === nothing downloader = DOWNLOADER[] = Downloader() From 3df806ba5d9dca235223eaee31523b9b71c6f45d Mon Sep 17 00:00:00 2001 From: Stefan Karpinski Date: Tue, 17 May 2022 15:56:06 -0400 Subject: [PATCH 3/3] Update src/Downloads.jl --- src/Downloads.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Downloads.jl b/src/Downloads.jl index 991c94a..0fe66a2 100644 --- a/src/Downloads.jl +++ b/src/Downloads.jl @@ -305,7 +305,6 @@ function request( ) :: Union{Response, RequestError} if downloader === nothing lock(DOWNLOAD_LOCK) do - yield() # let other downloads finish downloader = DOWNLOADER[] if downloader === nothing downloader = DOWNLOADER[] = Downloader()