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

Eccezione di timeout dopo i comandi asincroni e Task.WhenAny attende in StackExchange.Redis

Sulla base di una lunga discussione in chat e di molte ricerche, sembra che in alcuni scenari oscuri il TPL stia dirottando il thread del lettore dedicato quando stiamo facendo cose come .TrySetResult (che:facciamo spesso). Ciò provoca un deadlock istantaneo se si effettua una chiamata sincrona, poiché non è possibile elaborare alcun dato socket se è occupato in attesa del completamento di un'attività (che verrebbe completata solo da sola). In realtà abbiamo del codice in atto specificamente per impedirlo , ma sembra che la soluzione alternativa in realtà forza accada in altri scenari. Il che... è orribile. vedrò cosa riesco a trovare. Ma fondamentalmente, il problema è che attualmente , in alcuni scenari limitati , TaskCompletionSource.TrySetResult sta dando potenza al TPL per eseguire continuazioni sincrone. Ciò include Task.WhenAny .