sql >> Database teknologi >  >> NoSQL >> Redis

Timeout-undtagelse efter async-kommandoer og Task.WhenAny venter i StackExchange.Redis

Baseret på en lang diskussion i chat og en masse gravearbejde, ser det ud til, at TPL i nogle obskure scenarier kaprer den dedikerede læsetråd, når vi laver ting som .TrySetResult (hvilket:vi gør ofte). Dette forårsager et øjeblikkeligt dødvande, hvis du foretager et synkront opkald, da det umuligt kan behandle nogen socket-data, hvis det er travlt med at vente på, at en opgave bliver fuldført (som kun ville blive fuldført af sig selv). Vi har faktisk kode på plads specifikt for at forhindre dette , men det ser ud til, at løsningen faktisk tvinger det skal ske i nogle andre scenarier. Hvilket... er forfærdeligt. Jeg vil se, hvad jeg kan finde. Men dybest set er problemet, at i øjeblikket , i nogle begrænsede scenarier , TaskCompletionSource.TrySetResult giver strøm til TPL til at køre synkrone fortsættelser. Dette inkluderer Task.WhenAny .




  1. Forbindelse til Redis (ElastiCache) fra ElasticBeanstalk EC2 mislykkes

  2. Mongodb forespørgsel specifik måned|år ikke dato

  3. Unik scoring for Redis leaderboard

  4. Hvordan opretter man forbindelse til ekstern Redis-server?