NHibernate - строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненного значения было неправильным): - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть приложение. Net 461, использующее NHibernate 4.0.4.4000

Вчера у нас была проблема, когда серверу AWS EC2 не хватало памяти и возникали случайные исключения. Из того, что я могу, казалось, что проблема была из-за тайм-аутов, пытающихся выполнить запросы базы данных к экземпляру RDS. Другой экземпляр EC2 также выдал пару ошибок при попытке подключиться к той же RDS.

Были транзакции, которые не удалось из-за TransactionException: Begin failed with SQL exception ---> System.TimeoutException: Dns hostname lookup timeout. Increase Timeout value in ConnectionString., поэтому для меня это выглядит как проблема с сетью, а не проблема приложения ( кроме того, чтобы сделать приложение достаточно умным, чтобы иметь возможность справляться с этими ошибками).

Теперь, когда исследуем проблему, наш администратор БД вернулся к сообщению, что экземпляр RDS выглядит нормально, и это, вероятно, проблема приложения. Меня беспокоит то, что эти приложения работали более 5 месяцев (эта версия), а более старые версии работали годами без этих ошибок.

Администратор БД отметил исключение "Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):" относительно того, почему он считает, что приложение в вине.

У меня такой вопрос: Как объяснить ошибку, вызванную перегрузкой сети (плохая конечная точка и т. Д. c ...), а не только тайм-аут DNS Я хочу выяснить, как NHibernate может попасть в эту ситуацию.

Я бы подумал, что в случае сбоя и перезапуска приложения новый сеанс NHibernate к БД должен получить новый набор последовательностей для вставки записей и т. Д. c ... поэтому существует не должно быть грязных объектов в системе. Насколько я понимаю, любые объекты, состояние которых не сохранено в базе данных, будут просто потеряны, и что новый сеанс будет вспоминать объекты из базы данных перед началом любой работы. Это должно означать, что их состояние не грязное.

Может быть, я упускаю что-то очевидное здесь, у меня не было большого опыта работы с NHibernate.

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