Унаследованная система имеет статические члены для соединений с базой данных. Это опасно? - PullRequest
0 голосов
/ 03 июля 2018

У нас есть эта огромная устаревшая система. Есть ошибка, которая существует уже некоторое время, когда 1 из 10000 запросов, метод, который должен возвращать очень хорошо известный идентификатор из очень маленькой таблицы (10 строк), возвращает «сумасшедшее» значение, которое, к нашему удивлению, почти всегда идентификатор другой таблицы вашей системы. Этот метод выполняет только простой запрос SELECT к базе данных.

Мы заметили, что есть два класса (один из которых относится к месту, где может быть ошибка), которые используют статический член для соединения с базой данных:

    public class Accounts
    {
        private static Database db;

        private static Database DB
        {
            get
            {
                if (db == null)
                {
                    db = DatabaseFactory.CreateDatabase();
                }
                return db;
            }
        }

 ...

}

Это опасно? Мы не уверены, что это может привести к проблемам с безопасностью потоков, как, например, ошибка, о которой мы упоминали ранее, которая очень похожа на ошибку синхронизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...