sql >> Databasteknik >  >> NoSQL >> Redis

Timeout-undantag efter async-kommandon och Task.WhenAny väntar i StackExchange.Redis

Baserat på en lång diskussion i chatten och mycket grävande, ser det ut som att TPL i vissa oklara scenarier kapar den dedikerade läsartråden när vi gör saker som .TrySetResult (vilket:vi gör ofta). Detta orsakar ett omedelbart dödläge om du ringer ett synkront samtal, eftersom det omöjligt kan behandla några socketdata om det är upptaget och väntar på att en uppgift ska slutföras (som bara någonsin skulle slutföras av sig själv). Vi har faktiskt kod på plats specifikt för att förhindra detta , men det ser ut som att lösningen faktiskt tvingar det kommer att hända i vissa andra scenarier. Vilket... är hemskt. Jag ska se vad jag kan hitta. Men i grunden är problemet att för närvarande , i vissa begränsade scenarier , TaskCompletionSource.TrySetResult ger ström till TPL för att köra synkrona fortsättningar. Detta inkluderar Task.WhenAny .




  1. Hur använder jag mongodb med elektron?

  2. DataFrame till RDD[(String, String)] konvertering

  3. Hantera anslutning till redis från Python

  4. mongodb c# hur man arbetar med BSON-dokument