Здравствуйте, IT, Вы писали:
IT>Здравствуйте, alex.ilin, Вы писали:
AI>>Обнаружил еще одну ошибку связанную с многопоточностью (CompiledTable<T>.GetInfo) + по мере внедрения BLT и анализа логов появляются новые.
IT>Можно поподробней?
Ниже код метода CompiledTable<T>.GetInfo:
/* 1 */lock (this)
_infos.TryGetValue(key, out info);
if (info == null)
{
/* 2 */ info = new ExpressionParser<T>().Parse(dataProvider, mappingSchema, _expression, _lambda.Parameters.ToArray());
/* 3 */ lock (this)
{
_infos.Add(key, info);
_lastDataProvider = dataProvider;
_lastMappingSchema = mappingSchema;
_lastInfo = info;
}
}
Между операциями проверки (1) и добавления (3) в словарь есть парсинг(2), он находится вне блокировки и при попытки добавления(3) иногда возникает исключение что ключ уже существует.
AI>>Постить сюда баги или есть альтернативный способ уведомления?
AI>>Имеет ли смысл прикреплять(отправить на почту, другое) "дифф"ы в случае фикса?
IT>Можно прямо в репозиторий, давай логин к гуглю, я тебя добавлю.
ilyin.alex@гмайл.к0м