From 264ba839363e8b4ec3a009e2a30bdf5f2cfd9e0e Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Thu, 29 Oct 2020 10:53:51 +0000 Subject: [PATCH] count number of failes that have failed to load --- .../core/files/AllFilesLoadedEvent.groovy | 1 + .../core/files/PersisterFolderService.groovy | 29 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/files/AllFilesLoadedEvent.groovy b/core/src/main/groovy/com/muwire/core/files/AllFilesLoadedEvent.groovy index df1a140f..0cd85a90 100644 --- a/core/src/main/groovy/com/muwire/core/files/AllFilesLoadedEvent.groovy +++ b/core/src/main/groovy/com/muwire/core/files/AllFilesLoadedEvent.groovy @@ -3,4 +3,5 @@ package com.muwire.core.files import com.muwire.core.Event class AllFilesLoadedEvent extends Event { + int failed } diff --git a/core/src/main/groovy/com/muwire/core/files/PersisterFolderService.groovy b/core/src/main/groovy/com/muwire/core/files/PersisterFolderService.groovy index 6c8f6307..841ea277 100644 --- a/core/src/main/groovy/com/muwire/core/files/PersisterFolderService.groovy +++ b/core/src/main/groovy/com/muwire/core/files/PersisterFolderService.groovy @@ -14,6 +14,7 @@ import java.nio.file.Paths import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import java.util.concurrent.ThreadFactory +import java.util.concurrent.atomic.AtomicInteger import java.util.logging.Level import java.util.stream.Stream @@ -134,6 +135,7 @@ class PersisterFolderService extends BasePersisterService { */ private void _load() { int loaded = 0 + AtomicInteger failed = new AtomicInteger() Stream stream = Files.walk(location.toPath()) if (core.muOptions.plugin) stream = stream.parallel() @@ -141,21 +143,26 @@ class PersisterFolderService extends BasePersisterService { it.getFileName().toString().endsWith(".json") }) .forEach({ + log.fine("processing path $it") def slurper = new JsonSlurper() - def parsed = slurper.parse it.toFile() - def event = fromJsonLite parsed - if (event == null) return + try { + def parsed = slurper.parse it.toFile() + def event = fromJsonLite parsed + if (event == null) return - log.fine("loaded file $event.loadedFile.file") - listener.publish event - if (!core.muOptions.plugin) { - loaded++ - if (loaded % 10 == 0) - Thread.sleep(20) + log.fine("loaded file $event.loadedFile.file") + listener.publish event + if (!core.muOptions.plugin) { + loaded++ + if (loaded % 10 == 0) + Thread.sleep(20) + } + } catch (Exception e) { + log.log(Level.WARNING,"failed to load $it",e) + failed.incrementAndGet() } - }) - listener.publish(new AllFilesLoadedEvent()) + listener.publish(new AllFilesLoadedEvent(failed : failed.get())) } private void persistFile(SharedFile sf, InfoHash ih) {