From 1577afc4a9ae75f7afdd06baaee699f8e04d7123 Mon Sep 17 00:00:00 2001 From: vianh Date: Fri, 2 Sep 2022 17:35:43 +0700 Subject: [PATCH] [BlogTruyen] Synchronize tags with mutex --- .../koitharu/kotatsu/parsers/site/BlogTruyenParser.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt index cf9b6381..08c1514d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt @@ -1,6 +1,8 @@ package org.koitharu.kotatsu.parsers.site import androidx.collection.ArrayMap +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import org.json.JSONArray import org.jsoup.nodes.Document import org.jsoup.nodes.Element @@ -24,6 +26,7 @@ class BlogTruyenParser(override val context: MangaLoaderContext) : override val sortOrders: Set get() = EnumSet.of(SortOrder.UPDATED) + private val mutex = Mutex() private val dateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.US) private var cacheTags: ArrayMap? = null @@ -225,8 +228,8 @@ class BlogTruyenParser(override val context: MangaLoaderContext) : } - private suspend fun getOrCreateTagMap(): ArrayMap { - cacheTags?.let { return it } + private suspend fun getOrCreateTagMap(): ArrayMap = mutex.withLock { + cacheTags?.let { return@withLock it } val doc = context.httpGet("/timkiem/nangcao".toAbsoluteUrl(getDomain())).parseHtml() val tagItems = doc.select("li[data-id]") val tagMap = ArrayMap(tagItems.size) @@ -240,6 +243,6 @@ class BlogTruyenParser(override val context: MangaLoaderContext) : } cacheTags = tagMap - return tagMap + tagMap } }