|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Переползли на Interbase2017 и сразу возникла интересная проблема. Есть сервис, в сервисе есть две dll, каждая из которых по старту, в разных потока коннектится к базе (создание коннекта защищено глобальным мьютексом) и вызывают по одной процедуре (каждая dll вызывает свою). Одна процедура обновляет таблицу пользователей вот таким запросом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
И вот эти две процедуры перекрывают друг другу кислород. Проблема появилась только при переходе на Interbase2017. На XE3 проблемы не было. Вопрос - как может получаться дедлок при работе с двумя разными таблицами? При этом еще, что первая процедура вообще ничего не должна обновлять, т.к. на момент запуска у всех записей usr."ATTACH_ID" IS NULL И что с этим делать? Очень похоже, что мешает внешний ключ configs."USR_ID" С уважением, Vasilisk ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 15:59 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_, 1. нафига тут двойные кавычки? Серьезно, откуда они вообще взялись? 2. то есть, вы выполняете два вот этих оператора из разных коннектов, и на ИБ 2017 выдается сообщение об ошибке? Какое? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 16:36 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
kdv, и на ИБ 2017 выдается сообщение об ошибке? Какое?deadlock При этом пробую запускать эти процедуры из двух IBExpert'ов (в разной очередности, не коммитя транзакции) все работает ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:04 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Еще меня смущает, что при выполнении _Vasilisk_ Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:08 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_Еще меня смущает А что тебя смущает? У тебя же там условие по времени стоит, причём на строгое равенство, а где это время в таблицу пользователей заносится я что-то не вижу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:20 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, это IB как он работает с TMP$ATTACHMENTS фиг его знает. Может заполняет её во время обращение к ней через SELECT и пишет как результат автор3 record(s) was(were) inserted into TMP$ATTACHMENTS ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:27 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА что тебя смущает?То, что идет отчет о вставке записей в TMP$ATTACHMENTS. С какого перепугу? Dimitry Sibiryakovгде это время в таблицу пользователей заносится я что-то не вижу. sp_e_usr_login Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
sp_i_usr_login_garbage Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
sp_i_trn_attach_info Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
sp_i_usr_ins_log Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Ну и для полноты картины полная процедура из второго коннекта sp_e_cfg_global_upd Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
Код: sql 1.
то в одном коннекте показывается Код: sql 1.
а во втором Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:33 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_deadlock прямо вот deadlock и все? не верю. к слову, TMP$ATTACHMENT_ID не инкрементируется вечно. Он может рестартовать с нуля после отключения всех пользователей. _Vasilisk_То, что идет отчет о вставке записей в TMP$ATTACHMENTS. С какого перепугу? ИБ уже давно в этом плане выдает какую-то хрень. ЗАЧЕМ В ПРИВЕДЕННОМ КОДЕ ДВОЙНЫЕ КАВЫЧКИ!?!?! Они не нужны ведь, и так все большими буквами написано. Кто эту хрень писал? Код: sql 1. 2. 3.
почему нельзя Код: sql 1. 2. 3.
Ладно бы "ИденТификАтор" был, но тут же это не надо совсем. Или руки отвалились? Вообще, обращение к tmp/mon из процедур и триггеров - это зло. Понапридумывают люди себе гемор... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 17:46 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
kdvпрямо вот deadlock и все?Угу kdvне верю. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
kdvОн может рестартовать с нуля после отключения всех пользователей.И что? Пусть рестартует _Vasilisk_ Код: sql 1. 2. 3.
kdvЗАЧЕМ В ПРИВЕДЕННОМ КОДЕ ДВОЙНЫЕ КАВЫЧКИ!?!?Чем они мешают? kdvПонапридумывают люди себе гемор...Хорошо. Исходная задача: нужно обеспечить логин ровно одного пользователя с указанным логином и паролем. Остальные входы с этим логином отвергать пока не разлогинится первый. При этом пользователь может отвалиться не разлогинившись (сеть пропала, уборщица кабель выдернула, сорвали программы через диспетчер задач)... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 18:17 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
kdvне верю. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 18:40 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
И еще одна картинка ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 18:46 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Понавставлял логирования. Исходное предположение о месте дедлока было неверным. Итак. Одно соединение зависает здесь Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
:out_id = 4, а второе соединение здесь Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 20:29 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
kdv_Vasilisk_То, что идет отчет о вставке записей в TMP$ATTACHMENTS. С какого перепугу? ИБ уже давно в этом плане выдает какую-то хрень. данные в таблицах мониторинга появляются в момент запроса к ним (первый раз в данной транзакции). В ИБ там в основе лежат честные GTT, поэтому движок в них каждый раз вставляет данные, чтобы они стали видны юзерам. Нафига оно вообще считается в статистике это вопрос конечно актуальный, но все-таки "хренью" я бы называть не стал :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 20:46 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_Одно соединение зависает здесь У тебя там нет какой-нибудь глупости типа ON UPDATE CASCADE? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 22:09 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_, ну значит это не сообщение от ФБ, а ваш какой-то exception. Потому что у ФБ просто "deadlock" без расшифровки не бывает. _Vasilisk_Чем они мешают? 1. они лишние 2. невероятно раздражают. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 22:31 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
kdv Потому что у ФБ просто "deadlock" и у ИБ тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2018, 22:55 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovУ тебя там нет какой-нибудь глупости типа ON UPDATE CASCADE?Есть. Почему глупость? kdv2. невероятно раздражают.Меня не раздражают kdvну значит это не сообщение от ФБ, а ваш какой-то exception. и у ИБ тоже.На последнем скриншоте я показал непосредственный вызов isc_interprete внутри IBX ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 00:54 |
|
Deadlock на Interbase2017
|
|||
---|---|---|---|
#18+
_Vasilisk_При этом пользователь может отвалиться не разлогинившись (сеть пропала, уборщица кабель выдернула, сорвали программы через диспетчер задач)...keepalive настроен? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2018, 08:14 |
|
|
start [/forum/topic.php?fid=40&msg=39615910&tid=1561205]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 474ms |
0 / 0 |