Сообщение Re[4]: [FireBird] deadlock; update conflicts with concurrent от 17.02.2016 9:37
Изменено 17.02.2016 9:38 sushko
Здравствуйте, LuciferNovoros, Вы писали:
LN>FB — версионник. И клиент В всегда получит некую версию записи, с которой будет работать. Другой вопрос, что запись может измениться, породив новую версию. И тогда клиент В получит отлуп. Если тебяч такое поведение не устраивает, то выставляй некий признак, что запись заблокирована другим пользователем. И давай отлуп клиенту сразу.
Вообще, я не понимаю, о чем мы спорим. А заблокировал запись, В пытается ее изменить в WAIT-транзакции, и эта транзакция В подвисает до тех пор, пока не закончится транзакция А, и это правильно. Но почему-то по завершении транзакции А транзакция В не начинает работать, как можно было бы предположить, а завершается с ошибкой. В чем тогда смысл параметра WAIT у транзакции В?
LN>FB — версионник. И клиент В всегда получит некую версию записи, с которой будет работать. Другой вопрос, что запись может измениться, породив новую версию. И тогда клиент В получит отлуп. Если тебяч такое поведение не устраивает, то выставляй некий признак, что запись заблокирована другим пользователем. И давай отлуп клиенту сразу.
Вообще, я не понимаю, о чем мы спорим. А заблокировал запись, В пытается ее изменить в WAIT-транзакции, и эта транзакция В подвисает до тех пор, пока не закончится транзакция А, и это правильно. Но почему-то по завершении транзакции А транзакция В не начинает работать, как можно было бы предположить, а завершается с ошибкой. В чем тогда смысл параметра WAIT у транзакции В?
Re[4]: [FireBird] deadlock; update conflicts with concurrent
Здравствуйте, LuciferNovoros, Вы писали:
LN>FB — версионник. И клиент В всегда получит некую версию записи, с которой будет работать. Другой вопрос, что запись может измениться, породив новую версию. И тогда клиент В получит отлуп. Если тебяч такое поведение не устраивает, то выставляй некий признак, что запись заблокирована другим пользователем. И давай отлуп клиенту сразу.
Вообще, я не понимаю, о чем мы спорим. А заблокировал запись, В пытается ее изменить в WAIT-транзакции, и эта транзакция В подвисает до тех пор, пока не закончится транзакция А, и это правильно. Но почему-то по завершении транзакции А транзакция В не начинает работать, как можно было бы предположить по смыслу слова WAIT, а завершается с ошибкой. В чем тогда смысл параметра WAIT у транзакции В?
LN>FB — версионник. И клиент В всегда получит некую версию записи, с которой будет работать. Другой вопрос, что запись может измениться, породив новую версию. И тогда клиент В получит отлуп. Если тебяч такое поведение не устраивает, то выставляй некий признак, что запись заблокирована другим пользователем. И давай отлуп клиенту сразу.
Вообще, я не понимаю, о чем мы спорим. А заблокировал запись, В пытается ее изменить в WAIT-транзакции, и эта транзакция В подвисает до тех пор, пока не закончится транзакция А, и это правильно. Но почему-то по завершении транзакции А транзакция В не начинает работать, как можно было бы предположить по смыслу слова WAIT, а завершается с ошибкой. В чем тогда смысл параметра WAIT у транзакции В?