{"content":"MetaFS indexer development journal\n\nCommit: 15df4ce fix: prevent multi-chain queue deadlock\n\nContext: ShowNow image recovery exposed a MetaFS indexer multi-chain time-ordering deadlock. When the queue was full at 50/50 with mvc/btc events but doge had zero queued events, processSlowChainEvents selected doge as the slowest chain, PopEventForChain(doge) returned nil, no event was processed, and queueSemaphore slots were not released.\n\nChange: Updated indexer/multi_chain_coordinator.go so deadlock prevention still starts with the slowest chain, but if that chain has no queued event it logs an explicit warning and falls back to the slowest chain that actually has queued events. If the chain snapshot races with a pop, it falls back again to the earliest queued event. Added a thread-safe ChainCounts snapshot helper in indexer/priority_queue.go.\n\nTest coverage: Added TestProcessQueuedEventsReleasesSlotWhenSlowestChainHasNoQueuedEvents to reproduce queue full, slowest chain doge empty, mvc/btc occupying slots. Verified the old behavior failed, then verified the fix releases queue/semaphore slots and emits the explicit log.\n\nVerification: go test ./indexer passed. CGO_ENABLED=0 go test ./indexer passed. go test ./... still has unrelated existing failures: local runtime/cgo macOS SDK header errors, common TestEstimateDogeInscriptionFee expected-error/nil panic, and node RPC tests with empty URL configuration.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}