Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Сервер: Intel(R) Xeon(TM) CPU 3.40 GHz Операционная система: Microsoft Window Server 2003 R2 Enterprise Edition SP2 Cache: $zv = Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT На сервере начали появляться ошибки: Выяснил, что ошибки создают завершенные процессы в cache, которые обращались к ODBC источникам данных: И еще на моем рабочем месте и еще на 3-х дргих (Windows XP SP3) такаяже ситуация с cache 2007. У меня еще установлен сервер Cache v 5.0.20 - вот тут все работает без ошибок. Может у кого была такая ситуация? В данный момент сервер работает в таком режиме, что не есть хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 09:54 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr Minzer , Cache 5.0 и 2007.1 установлены на одном компьютере? Подключались к одному источнику? Возможно проблема не в Cache, а в ODBC-драйвере. (Например, Firebird "любит" критические ошибки выдавать.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 11:15 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
TurkCache 5.0 и 2007.1 установлены на одном компьютере? на одном TurkПодключались к одному источнику? да TurkВозможно проблема не в Cache, а в ODBC-драйвере. (Например, Firebird "любит" критические ошибки выдавать.) драйвер работает корректно из других приложений Сегодня на свою машину поставил: Cache for Windows (x86-32) 2011.1 (Build 454) Tue Mar 15 2011 20:45:01 EDT Теперь у меня на одной машине 3 версии cache, 2 из которых работают с ODBC источником нормально, одна (которая очень нужна 2007) отказывается работать :-( Перейти на более поздние версии Cache нет ни материальных ни других возможностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 12:10 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr MinzerВыяснил, что ошибки создают завершенные процессы в cache, которые обращались к ODBC источникам данных: В вашем примере нет явного разрыва соединения с ODBC. (Я уже не говорю о том, что использование команды halt в любом языке программирования нежелательно в большинстве случаев.) После использования Disconnect() и Kill также возникает ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 13:29 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
В работающем коде есть и Disconnect() и Kill. Просто я не стал приводить весь код (не вижу смысла). Суть в том, что ошибка происходит в момент завершения процесса, который хоть раз обратился к ODBC источнику будь то процесс CSP-сессии или JOB. TurkЯ уже не говорю о том, что использование команды halt в любом языке программирования нежелательно в большинстве случаев.) Для меня это открытие. Как же тогда правильно завершить процесс cache, если не использовать Halt? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 15:22 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Я уже и не знаю что думать. Для наглядности хотел привести полноценный скриншот с Disconnect и убиванием объекта. На локальной машине Disconnect и Kill помогли ошибки нет, а вот на сервере ошибка осталась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 15:34 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr MinzerКак же тогда правильно завершить процесс cache, если не использовать Halt? Если речь именно о процессе - простой выход из программы Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 15:55 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
а что мне мешает написать так? Код: plaintext 1. 2. 3. 4. 5. 6. в чем я буду неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 16:28 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr Minzerа что мне мешает написать так? Код: plaintext 1. 2. 3. 4. 5. 6. Ну на руках никто виснуть не станет конечно... По-мне так дюже радикально... Halt используем только для окончания работы в терминале. Alexandr Minzerв чем я буду неправ? В документации я не нашел ничего "особенного" в работе этой команды. Но я неважнецкий читака на английском... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 16:47 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr Minzer , в русской документации на МСМ просто написано "Halt завершает работу пользователя за терминалом". Т.е. про процессы не написано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 16:52 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Мне кажется, q или h в данном случае не влияет. Скорее падает какой-то общий с каше процесс, там же какие-нибудь хитроумные схемы используются типа межпроцессорного взаимодействия наверно. Точно ли все закрывается, может там объекты какие-нибудь остаются? Особенно какие-нибудь объекты типа Statement или еще что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 16:53 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr MinzerВ работающем коде есть и Disconnect() и Kill. Просто я не стал приводить весь код (не вижу смысла). Alexandr MinzerНа локальной машине Disconnect и Kill помогли ошибки нет, а вот на сервере ошибка осталась. Вы уж определитесь, есть ли в вашем коде эти команды или нет. В общем случае код должен быть примерно следующим: Код: 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. После возникновения ошибки были ли какие-нибудь сообщения в cconsole.log или SYSLOG? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 19:17 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Точно ли все закрывается, может там объекты какие-нибудь остаются? Доки уверяют что закроется абсолютно все. Обратный прецедентов я не встречал... Просто зачем хальтить процесс? Если его можно просто завершить обычным кюитом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2011, 21:25 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что ваши доки чего-то не договаривают. Да, метод %Close() сейчас пустышка, при удалении ссылки на объект он удаляется из памяти сам. Но закроется ли файл объекта %File без метода Close (именно так, без процентов)? Закроется ли результсет %ResultSet без метода Close? То же самое с методами AllocateStatement,CloseCursor или чем-то подобным при работе со шлюзом. Кстати, в примере нет DropStatement, а у нас почему-то именно он используется. Halt отличается от quit тем, что при quit возврат отдается в запускающую программу, а halt закроет процесс совсем. Т.е. halt в csp будет валить csp шлюз, halt в хранимых процедурах будет валить ODBC шлюз, если их через него вызывать и так далее. Какой драйвер, кстати, в примере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 03:47 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Но закроется ли файл объекта %File без метода Close (именно так, без процентов)? Файлы закрывает 100%. Это работало еще с МСМа... Блок А.Н.Закроется ли результсет %ResultSet без метода Close? Это так же закрывается. Бывало при запуске задачек на терминале при тестировании они вываливались в ошибки... Так вот нальт решал все такие проблемы + откаты по трасзакциям... Блок А.Н.То же самое с методами AllocateStatement,CloseCursor или чем-то подобным при работе со шлюзом. Ту не скажу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 08:42 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Какой драйвер, кстати, в примере? похоже, что от драйвера не зависит, используем Oracle 10G, пробовал еще Microsoft Access таже ошибка. По поводу connection.Disconnect(): на клиентской машине с Win XP, ошибка исчезает на сервере connection.Disconnect() не помогает. И еще один нюанс заметил, если терминал запущен на сервере то connection.Disconnect() лечит ошибку, если telnet установил соединение с другого IP, то в этом случае connection.Disconnect() опять не помогает. Мое мнение такое: закрыл я объекты или не закрыл, закрыл я соединение с ODBC шлюзом или не закрыл, в любом случае процесс не должен завершаться аварийно и приводить к таким ошибкам. Видимо в данной сборке Cache есть какие-то проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 10:59 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr MinzerИ еще один нюанс заметил, если терминал запущен на сервере то connection.Disconnect() лечит ошибку, если telnet установил соединение с другого IP, то в этом случае connection.Disconnect() опять не помогает.Терминал работает от имени пользователя, его запустившего, telnet-сессия - от имени пользователя, от которого запущена служба Cache. В эту сторону и стоит копнуть:Заведите пользователя с надлежащими правами и запускайте от его имени службу Cache. Возможно, проблема уйдёт уже на этом этапе. Зайдите на рабочий стол сервера этим пользователем и "поупражняйтесь" с ODBC (для начала в чём-то отдельном от Cache, в WinSQL, например). Alexandr MinzerМое мнение такое: закрыл я объекты или не закрыл, закрыл я соединение с ODBC шлюзом или не закрыл, в любом случае процесс не должен завершаться аварийно и приводить к таким ошибкам. Видимо в данной сборке Cache есть какие-то проблемы.Видимо, так. И тут уж вам решать: обходить проблемы или обновлять версию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 12:08 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
У меня такая проблема решилась переустановкой системы, в чем проблема так и не разобрался, но такая ошибка возникала при закрытии некоторых других приложений не связанных с базой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 12:29 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
Alexandr MinzerПо поводу connection.Disconnect(): на клиентской машине с Win XP, ошибка исчезает на сервере connection.Disconnect() не помогает. И еще один нюанс заметил, если терминал запущен на сервере то connection.Disconnect() лечит ошибку, если telnet установил соединение с другого IP, то в этом случае connection.Disconnect() опять не помогает. Мое мнение такое: закрыл я объекты или не закрыл, закрыл я соединение с ODBC шлюзом или не закрыл, в любом случае процесс не должен завершаться аварийно и приводить к таким ошибкам. Видимо в данной сборке Cache есть какие-то проблемы. 1. Вы пробовали переписать код с заменой HALT на QUIT? (В случае с примером из терминала просто закрыть приложение.) Не доверяю я команде HALT: 1) В документации ничего не сказано про удаление созданных объектов (неявный KILL, который выполняется при QUIT). 2) Что-то подсказывает, что при этом вызывается C-шная функция abort(), поведение которой может быть довольно неожиданным. 2. Можете обратиться в WRC для создания патча под вашу версию. Если WRC недоступен, то тогда остается только вынести функции работы с ODBC (обертки над MS ODBC API) во внешнюю DLL, к функциям которой уже будет обращаться код Cache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 17:23 |
|
||
|
CACHE.EXE - Ошибка приложения
|
|||
|---|---|---|---|
|
#18+
TurkВ случае с примером из терминала просто закрыть приложение. Вот это как раз будет хуже. У нас бывали случаи когда терминальное приложение закрывали "на крестик", оно действительно закрывалосьна клиенте, но каким-то странным образом Каше об этом не ведало... Т.о. на нем все оставалось активным. А с хальтом такого не происходило никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2011, 21:31 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37178892&tid=1557781]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
189ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 525ms |

| 0 / 0 |
