fix deadlock at Div2View.setDataAsync() call

commit_hash:54a845794d945778b8861c0a7e34db59a43cc3cf
This commit is contained in:
gulevsky
2026-05-04 12:13:23 +03:00
parent 27320606d2
commit 2e76914c19
@@ -14,23 +14,22 @@ internal class ErrorCollectors @Inject constructor(
) {
private val collectors = mutableMapOf<String, MutableList<ErrorCollector>>()
fun getOrCreate(tag: DivDataTag, divData: DivData?): ErrorCollector = synchronized(collectors) {
val bucket = collectors.getOrPut(tag.id) { mutableListOf() }
return bucket.find { it.divData === divData }?.let { existingCollector ->
existingCollector.attachParsingErrors()
existingCollector
} ?: run {
ErrorCollector(divData, tag, errorsReporter).also { newCollector ->
bucket.add(newCollector)
newCollector.attachParsingErrors()
}
fun getOrCreate(tag: DivDataTag, divData: DivData?): ErrorCollector {
val collector = synchronized(collectors) {
val bucket = collectors.getOrPut(tag.id) { mutableListOf() }
bucket.find { it.divData === divData }
?: ErrorCollector(divData, tag, errorsReporter).also { bucket.add(it) }
}
collector.attachParsingErrors()
return collector
}
fun getOrNull(tag: DivDataTag, divData: DivData?): ErrorCollector? = synchronized(collectors) {
return collectors[tag.id]?.find { it.divData === divData }?.apply {
attachParsingErrors()
fun getOrNull(tag: DivDataTag, divData: DivData?): ErrorCollector? {
val collector = synchronized(collectors) {
collectors[tag.id]?.find { it.divData === divData }
}
collector?.attachParsingErrors()
return collector
}
fun reset(tags: List<DivDataTag>) {