Wat is een impasse?
Een slachtoffer van een impasse is een computergebruiker, die optreedt als een client die is verbonden met een server, wiens verbinding de serverhost heeft gekozen om een impasse op te lossen. Dit type impasse ontstaat vaak wanneer twee verschillende processen proberen dezelfde bronnen te gebruiken, waardoor beide processen vastlopen. Om dit probleem op te lossen, kunnen veel serverdatabasesystemen detecteren wanneer een deadlock optreedt en vervolgens kiezen om de verbinding van een van de twee processen te beëindigen. Een impasse-slachtoffer kan willekeurig worden gekozen door het programma, hoewel de gebruiker meestal wordt gekozen als degene die het gemakkelijkst opnieuw verbinding kan maken met het systeem.
De term "impasse slachtoffer" wordt meestal gebruikt in het fout- of uitzonderingsbericht dat door het systeem aan de gebruiker wordt weergegeven wanneer zijn of haar verbinding wordt verbroken. Deze fout treedt op in een situatie die gewoonlijk een impasse wordt genoemd. Over het algemeen treedt een impasse op wanneer twee gebruikers die zijn verbonden met een server toegang proberen te krijgen tot dezelfde bronnen op een manier die een vergrendeling op het systeem veroorzaakt. Als gebruiker A bijvoorbeeld bron 1 gebruikt en ook bron 2 moet gebruiken, terwijl gebruiker B bron 2 gebruikt en ook bron 1 moet gebruiken, treedt een impasse op omdat geen van beide gebruikers zijn of haar proces kan voltooien.
In dit voorbeeld zou een van de twee gebruikers door het systeem worden gekozen als het deadlock-slachtoffer en zou zijn of haar verbinding met de server worden verbroken. Zodra dit gebeurt, kan de andere gebruiker zijn of haar proces beëindigen en de impasse beëindigen en kan het impasse-slachtoffer opnieuw verbinding maken met de server. De meeste serverdatabaseprogramma's zijn ontworpen met deadlock-detectie, die meestal na een bepaalde tijd een deadlock detecteert. Hoewel een impasse niet noodzakelijkerwijs een groot probleem is, kan het voor gebruikers hinderlijk zijn, vooral voor diegenen die als slachtoffer van een impasse zijn gekozen, en duidt dit op een of meer fouten in de programmering van de serverdatabase.
De manier waarop een server een deadlock-slachtoffer kiest, kan variëren. Sommige programma's kiezen het slachtoffer op een puur willekeurige basis. Hoewel dit redelijk effectief kan zijn, omdat elke keuze tot een oplossing en het einde van de impasse leidt, is dit niet altijd een ideale methode. Een server is meestal geprogrammeerd om de twee gebruikers te evalueren om degene te kiezen die het gemakkelijkst opnieuw verbinding kan maken of die de minste hoeveelheid gegevens zal verliezen als gevolg van de verbroken verbinding.