Отладка транзакции зомби в C # - PullRequest
0 голосов
/ 05 октября 2018

У меня есть некоторый производственный код, который работал несколько лет и только что начал сталкиваться с ошибками на прошлой неделе.Ошибки возникают только с конкретным процессом, который вставляет кучу информации в базу данных.

Я получаю сообщение об ошибке: «Эта SqlTransaction завершена; она больше не может использоваться», которая говорит мне, что транзакция либо фиксируется, либо выполняется откат между первым SubmitChanges и вторым SubmitChanges.

В основном код выглядит следующим образом:

WithTransaction(db => {
// Do a bunch of stuff - insert, update objects
db.SubmitChanges();
// Do a bunch more stuff
db.SubmitChanges(); // <-- This line is throwing the error.
});

Код для WithTransaction просто открывает транзакцию, выполняет указанное действие, а затем закрывает транзакцию в блоке finally.(Существует также некоторая обработка ошибок, но это не относится к этой проблеме.

SubmitChanges - это просто оболочка для System.Data.Linq.DataContext.SubmitChanges ()

Моя гипотеза состоит в том, что что-точто-то пошло не так в первом методе SubmitChanges (), который вызывает откат транзакции, но не выдает ошибку, поэтому мне интересно, есть ли хороший способ для меня отладить более ранние SubmitChanges и посмотреть, не происходит ли что-то там неправильно.

Или, альтернативно, любые другие идеи о том, как отладить эту ошибку.

1 Ответ

0 голосов
/ 11 октября 2018

Проблема заключалась в том, что произошел аппаратный сбой в боксе с программой, из-за которого исходящие соединения прервались.Я обнаружил это, когда попытка скопировать файлы с сервера также не удалась.

Мораль истории: если программное обеспечение выглядит правильно, иногда это потому, что оно является правильным.

Надеюсь, что это поможет кому-то еще с той же проблемой!

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