|
|
|
gfix -sweep localhost/port:path/dbname - делает "реконнект" при срубании через mon$attach
|
|||
|---|---|---|---|
|
#18+
Ффух... Воспроизвёл наконец-то. Заодно еще и какая-то непонятка с сообщением 'connection shutdown' при удалении аттача через курсор (where current of ...) - см ниже. Исходная база - пустая, page_size=4096, fw = OFF. DDL: fil4sweep.sql Код: plaintext 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. Запускать скрипт строго из консоли , т.е. чтобы он по завершении НЕ остался в isql и, таким обр., не дал потоку GC собрать мусорные версии: Код: plaintext Отложить куда-нить получившуюся базу (её размер будет около 1.7 Гб, скрипт на моей тачке выполнялся около 7 минут). Далее создаем подкаталог logs, а также файлик для сборка бактрасс в неинтерактивном режиме: gdb_backtrace_batch.script Код: plaintext 1. 2. 3. Затем создаем вспомогательный скрипт для отрубания коннекта от gfix'a (его использование - см ниже основной скрипт, gfixtest.sh): gfixkill_eb.sql Код: plaintext 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. Далее обнуляем (для читабельности) firebird.log и, наконец, запускаем вот этот "основной скрипт" (в том же каталоге, что и файл gdb_backtrace_batch.script): gfixtest.sh Код: plaintext 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. Этот скрипт: 0) грохнет все gfix'ы, если они сейчас есть; 1) затем: 1.1) запустит в фоновом режиме gfix -sweep (см. вызов с '&' в хвосте команды), 1.2) определит pid'ы процессов gfix & firebird, после чего 1.3) соберёт бактрассы с них, сложив их в файлы 'logs/gfix_started_*.txt' и 'logs/firebird_when_gfix_started_*.txt' 2) подождёт 20 сек, после чего запустит isql со скриптом gfixkill_eb.sql. Этот скрипт должен определить номер аттача от процесса 'gfix' и удалить его в mon$attachments. "На гор а " он выдаст номер этого удалённого аттача. 3) проверит после завершения п. 2), нет ли сейчас живого процесса 'gfix': Код: plaintext 1. 2. 3. 5) иначе скрипт завершается. В итоге, вот что получилось при запуске этого скрипта: Код: plaintext 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. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. И вот что появилось при его выполнении в firebird.log'e: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. При первой попытке его срубить он делает "переконнект" (меняет аттач_ид с 17 на 20 - см выше, лог .shell-скрипта)! Только вторая попытка грохнуть этот gfix становится успешной. И это еще не всё. Если посмотреть на лог вывода .shell-скрипта, то на ВТОРОЙ итерации ('iter N 2') видим, что вызов 'show database' внутри gfixkill_eb.sql сопровождается каким-то загадочным 'connection shutdown'. Откудова он вылез ? В аттаче - все 4 бактрассы (две для firebird и две для gfix): первая пара - когда был только старт gfix'a, вторая - когда обнаружилось, что gfix не отрубился командой delete from mon$attachments. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 21:58:26 |
|
||
|
gfix -sweep localhost/port:path/dbname - делает "реконнект" при срубании через mon$attach
|
|||
|---|---|---|---|
|
#18+
ТаблоидПри первой попытке его срубить он делает "переконнект" (меняет аттач_ид с 17 на 20 - см выше, лог .shell-скрипта)! Только вторая попытка грохнуть этот gfix становится успешной.Забыл вчера трейс натравить на весь этот спектакль. Всё подтверждается. Вот он (свип) стартует: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: plaintext 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 1) кто-то "системный" пытается пролезть в базу и получает по лбу ошибкой... "No such file or directory" (!!): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 2) внутренний аттач #6721, проверявший права коннекта от isql, снова стартует и тут же завершает транзакцию - так, как обычно происходит при новом коннекте к базе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 3) "из ниоткуда" появляется опять gfix, с тем же pid'ом, и устанавливает новый коннект (att_20): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. В общем, хотелось бы комментов по всему этому: откудова там лезет "no such file", отчего "реконнект" от gfix'a выперся... Полный текст спектакля см в аттаче (трейс и вывод .sh-скрипта). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 09:35:28 |
|
||
|
gfix -sweep localhost/port:path/dbname - делает "реконнект" при срубании через mon$attach
|
|||
|---|---|---|---|
|
#18+
Таблоид, на 2.5 пробовал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 11:56:41 |
|
||
|
gfix -sweep localhost/port:path/dbname - делает "реконнект" при срубании через mon$attach
|
|||
|---|---|---|---|
|
#18+
hvlad, на LI-V2.5.3.26737 такого нету: отрубание gfix'a через mon$ идёт корректно .sh output Код: plaintext 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. 74. 75. 76. 77. 78. 79. 80. 81. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 13:23:06 |
|
||
|
gfix -sweep localhost/port:path/dbname - делает "реконнект" при срубании через mon$attach
|
|||
|---|---|---|---|
|
#18+
В общем, http://tracker.firebirdsql.org/browse/CORE-4337 А то забудется ещё, кто его знает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 19:27:38 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=103&tid=1563891]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
284ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 541ms |

| 0 / 0 |
