Problema de simultaneidade do AppFabric Cache?
Enquanto o protótipo de teste de estresse de nosso novo sistema primário, eu me deparo com um problema simultâneo com o AppFabric Cache. Ao chamar simultaneamente muitos DataCache.Get () e Put () com o mesmo cacheKey, onde tento armazenar objetos relativamente grandes, recebo "ErrorCode: SubStatus: há uma falha temporária. Tente novamente mais tarde." É reproduzível pelo seguinte código:
var dcfc = new DataCacheFactoryConfiguration
{
Servers = new[] {new DataCacheServerEndpoint("localhost", 22233)},
SecurityProperties = new DataCacheSecurity(DataCacheSecurityMode.None, DataCacheProtectionLevel.None),
};
var dcf = new DataCacheFactory(dcfc);
var dc = dcf.GetDefaultCache();
const string key = "a";
var value = new int [256 * 1024]; // 1MB
for (int i = 0; i < 300; i++)
{
var putT = new Thread(() => dc.Put(key, value));
putT.Start();
var getT = new Thread(() => dc.Get(key));
getT.Start();
}
Quando chamar Get () com chave diferente ou o DataCache for sincronizado, esse problema não aparecerá. Se o DataCache for obtido com cada chamada do DataCacheFactory (o DataCache deve ser seguro para threads) ou o tempo limite for prolongado, ele não terá efeito e o erro ainda será recebido. Parece-me muito estranho que a MS deixe esse bug. Alguém enfrentou um problema semelhante?