Varje deltagare i dödläget har en resurs som den andra behöver. Tänk dig till exempel två transaktioner, T1 och T2. T1 har låst resurs A och T2 har låst resurs B. T1 behöver resurs B för att slutföra, men den kan inte få det förrän T2 släpper låset. På samma sätt behöver T2 resurs A för att slutföra, men den kan inte få det förrän T1 släpper låset. Detta skapar ett dödläge.
Det som skiljer ett fantom dödläge från ett normalt dödläge är att deltagarna inte är medvetna om varandra. De försöker var och en bara göra sin egen grej, men de blockerar oavsiktligt varandra.
Phantom dödläge är svåra att upptäcka eftersom de inte orsakas av någon enskild felpunkt. De orsakas av själva systemets distribuerade natur. Som ett resultat kan de vara mycket svåra att lösa.
Ett sätt att lösa spöklika låsningar är att öka antalet lås i systemet. Detta gör det mindre troligt att två transaktioner kommer att behöva låsa samma resurser samtidigt. Ett annat sätt att lösa spöklika låsningar är att använda timeouts. Om en transaktion inte släpper ett lås efter en viss tid, avbryts den och låset släpps.
Phantom dödläge är en sällsynt händelse, men de kan vara ett allvarligt problem när de inträffar. Genom att förstå vad de är och hur du löser dem kan du hjälpa till att hålla dina distribuerade system igång smidigt.