🧑‍💻 Do not expose rejected elements as failed
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 18 Oct 2026 07:36:54 +0000 (09:36 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 18 Oct 2026 07:36:54 +0000 (09:36 +0200)
This should slightly improve the “Elements” debug page.

src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt
src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt

index a8f1bea..e87628a 100644 (file)
@@ -118,7 +118,7 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke
                field = mutableMapOf()
 
        val failedElements: Set<String>
-               get() = failureCache.asMap().keys
+               get() = failureCache.asMap().keys - rejectedElements.keys
 
        enum class RejectionReason {
 
index fd70e03..ad53ad0 100644 (file)
@@ -301,6 +301,15 @@ class DefaultElementLoaderTest {
                }
        }
 
+       @Test
+       fun `element loader does not expose an element as failed if it was rejected`() {
+               runWithCallback("KSK@test") { elementLoader, _, callback, _ ->
+                       callback.shouldCancel(FreenetURI("KSK@test"), "application/x-test-data", 1234)
+                       callback.failed(FreenetURI("KSK@test"))
+                       assertThat(elementLoader.failedElements, not(hasItem("KSK@test")))
+               }
+       }
+
        private fun read(resource: String): ByteArray =
                javaClass.getResourceAsStream(resource)?.use { input ->
                        ByteArrayOutputStream().use {