fix(monitor): keep active discovery independent of cache refresh

This commit is contained in:
VAIO73
2026-10-18 19:24:25 +00:00
parent 3071095109
commit bc51adcd8f
2 changed files with 10 additions and 3 deletions
+4 -3
View File
@@ -529,13 +529,14 @@ export function LxcAppPanel({ vmid, ctIp, onChange, managed, initialData, oci, c
}, [vmid, managed])
useEffect(() => {
const generation = targetGeneration.current
const request = ++nativeRequest.current
const request = nativeRequest.current
let cancelled = false
if (managed) return
fetchApi<NativeDiscovery>(`/api/vms/${vmid}/apps/native-discovery`).then(result => {
if (targetRef.current === vmid && targetGeneration.current === generation
if (!cancelled && targetRef.current === vmid && targetGeneration.current === generation
&& nativeRequest.current === request) setNativeDiscovery(result)
}).catch(() => { /* cached metadata is optional; never initiate a scan */ })
return () => { nativeRequest.current += 1 }
return () => { cancelled = true }
}, [vmid, managed, cacheRevision])
const [adguardSetupAvailable, setAdguardSetupAvailable] = useState(false)
const [error, setError] = useState<string | null>(null)
@@ -55,6 +55,12 @@ async function editor(ports = [8080]) {
}
async function main() {
await cachedImageContract()
const scanning = fixture()
scanning.renderParent(); await scanning.settle(); scanning.holdScan()
const pendingScan = scanning.button('searchApplications').props.onClick(); scanning.render()
scanning.renderParent(101, 1); await scanning.settle()
scanning.resolveScan(); await pendingScan; scanning.render()
assert.equal(scanning.button('searchApplications').props.disabled, false, 'revision must not leave an active Native Find stuck busy')
const existing = fixture({apps: [{id: 'existing', name: 'Saved app', ports: [{port: 8080, scheme: 'http'}], state: {}}]})
existing.renderParent(); await existing.settle()
const click = async key => {