From 50333d10a31dfeb3a3e5c5cec3b310ab9ae6aac1 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sat, 12 Mar 2022 13:19:51 +0000 Subject: [PATCH] lock persisting of downloader, trying to fix GitHub issue #124 --- .../com/muwire/core/download/DownloadManager.groovy | 2 +- .../com/muwire/core/download/NetworkDownloader.groovy | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy index abc4c712..c5a5cae1 100644 --- a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy +++ b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy @@ -270,7 +270,7 @@ public class DownloadManager { persistDownloaders() } - void persistDownloaders() { + synchronized void persistDownloaders() { File downloadsFile = new File(home,"downloads.json") downloadsFile.withPrintWriter { writer -> downloaders.values().each { downloader -> diff --git a/core/src/main/groovy/com/muwire/core/download/NetworkDownloader.groovy b/core/src/main/groovy/com/muwire/core/download/NetworkDownloader.groovy index f2ec8a5a..b366f956 100644 --- a/core/src/main/groovy/com/muwire/core/download/NetworkDownloader.groovy +++ b/core/src/main/groovy/com/muwire/core/download/NetworkDownloader.groovy @@ -348,7 +348,7 @@ class NetworkDownloader extends Downloader { } public void run() { - if (cancelled) { + if (this.cancelled) { currentState = WorkerState.FINISHED return } @@ -421,7 +421,7 @@ class NetworkDownloader extends Downloader { } catch (DownloadRejectedException rejected) { this.rejected = true } catch (Exception bad) { - if (!cancelled) { + if (!this.cancelled) { log.log(Level.WARNING, "Exception while downloading", DataUtil.findRoot(bad)) markFailed(destination) if (!hasLiveSources() && hopelessEventFired.compareAndSet(false, true)) { @@ -434,7 +434,7 @@ class NetworkDownloader extends Downloader { } finally { currentState = WorkerState.FINISHED try { - if (!cancelled) { + if (!this.cancelled) { writePieces() if (pieces.isComplete() && eventFired.compareAndSet(false, true)) { closePiecesFile() @@ -461,7 +461,7 @@ class NetworkDownloader extends Downloader { } void cancel() { - cancelled = true + this.cancelled = true downloadThread?.interrupt() } }