Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП? / 25 сообщений из 56, страница 1 из 3
06.07.2016, 13:30
    #39268790
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Не нашел в MON таблицах что-либо, непосредственно указывающее на архитектуру и решил сделать отдельную ХП, но для формирования connString, опять же, необходим номера порта сервера текущего клиентского подключения.
Код: plsql
1.
2.
3.
4.
5.
EXECUTE STATEMENT ('SELECT Iif(MON$SERVER_PID = MON$REMOTE_PID, ''SS'', ''CS'') FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION')
  AS USER 'SYSDBA'
  PASSWORD 'masterke'
  ON EXTERNAL DATA SOURCE :connString
  INTO: MODE;


Кто как решал подобную задачу?
...
Рейтинг: 0 / 0
06.07.2016, 13:32
    #39268792
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Hello, Rdb Dev!
You wrote on 6 июля 2016 г. 13:32:02:

Rdb Dev> непосредственно указывающее на архитектуру
и снова всё тот же вопрос: НАХРЕНА?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 13:37
    #39268799
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Боюсь даже спросить, для чего это нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 13:37
    #39268800
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Не успел.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 13:39
    #39268804
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_dev,

нету ни в таблицах мониторинга, ни в контекстных переменных этой инфы. В тройке тоже нет.
Идеально было бы если можно было считать в таблицу мониторинга текущие параметры конфигурации. Возможно в 4.0 сделают.

Проще сделать UDF которая будет брать инфу из конфига, по крайней мере насчёт порта.
...
Рейтинг: 0 / 0
06.07.2016, 13:46
    #39268821
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Hello, Симонов Денис!
You wrote on 6 июля 2016 г. 13:45:38:

Симонов Денис> Проще сделать UDFтут программист нужен... (с)

зы: проще дать уже таки ему гранату
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 13:47
    #39268823
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Симонов Денис> Идеально было бы если можно было считать в таблицу
Симонов Денис> мониторинга текущие параметры конфигурации. Возможно в 4.0 сделают.

Я вообще не понимаю, почему это в 3.0 не сделали,
хотя бы то, что активно, без перечитывания с диска.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 13:51
    #39268829
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Гаджимурадов Рустам,

задача не так проста как кажется на первый взгляд. В 3.0 параметры могут быть уровня сервера, БД и соединения.
...
Рейтинг: 0 / 0
06.07.2016, 13:54
    #39268834
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Мимопроходящийи снова всё тот же вопрос: НАХРЕНА?Для реализации UDF функций блокировок. К примеру, для SS алгоритм функции может использовать обычные атомарные функции, а для CS - глобальные объекты ОС. Что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
bool _cdecl lock
    (
      const char * svr_mode,   // SS/CS
      const char * lock_name,  // имя для объекта блокировки
      long lock_owner          // идентификатор транзакции
    )
{
  switch (*reinetrpret_cast<unsigned short*>(svr_mode))
  {
    case 0x5353:
      /* использование атомарных функций */
      break;
    case 0x5343:
      /* использование глобальных объектов ОС */
      break;
    default:
      return false;
  }
  return true;
}
...
Рейтинг: 0 / 0
06.07.2016, 14:01
    #39268847
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_devДля реализации UDF функций блокировок. К примеру, для SS алгоритм функции может
использовать обычные атомарные функции, а для CS - глобальные объекты ОС.

Всегда используй "обычные атомарные функции" на общей памяти и будет тебе счастье.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 14:07
    #39268853
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Hello, Rdb Dev!
You wrote on 6 июля 2016 г. 14:04:08:

Rdb Dev> Для реализации UDF функций блокировок.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 14:08
    #39268857
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_dev,

TIBConfigService с ФБ не работает? Я уже давно не проверял.
isc_info_svc_get_config вроде должно возвращать содержимое firebird.conf. А в 3.0 там есть режим сервера.

Но как я уже говорил, все это лабуда. Блокируем объект в коннекте, коннект умирает, и что дальше? Ни в какой архитектуре нельзя определить, в каком коннекте был заблокирован некий системный объект, и жив ли этот коннект или нет.

Это сервер может определить, активна транзакция или нет (путем ее блокировки), а вот со всякими пользовательскими udf это не получится. "Это" - в смысле определения блокировки ресурса и его разблокирования.
...
Рейтинг: 0 / 0
06.07.2016, 14:14
    #39268866
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Dimitry SibiryakovВсегда используй "обычные атомарные функции" на общей памяти и будет тебе счастье.CreateSharedMemory/AllocateSharedMemory? Вариант... Спасибо за подсказку!
...
Рейтинг: 0 / 0
06.07.2016, 14:27
    #39268886
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
kdvTIBConfigService с ФБ не работает? Я уже давно не проверял.
isc_info_svc_get_config вроде должно возвращать содержимое firebird.conf. А в 3.0 там есть режим сервера.Хотелось сделать чтоб работало из ХП или триггера.

kdvНо как я уже говорил, все это лабуда. Блокируем объект в коннекте, коннект умирает, и что дальше? Ни в какой архитектуре нельзя определить, в каком коннекте был заблокирован некий системный объект, и жив ли этот коннект или нет.Можно еще ХП навернуть, что будет вызываться из триггеров или ХП других транзакций и проверять живучесть транзакции, заблокировавшей объекты, принудительно снимая блокировки в случае смерти этой транзакции, но видится мне, это далеко не самое красивое решение.
...
Рейтинг: 0 / 0
06.07.2016, 14:27
    #39268887
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Мимопроходящий, многапиксюлей.
...
Рейтинг: 0 / 0
06.07.2016, 14:36
    #39268901
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
kdv, мне кацца, в триггерах ON TRANSACTION COMMIT/ROLLBACK не хватает контекстных переменных типа COMMITTED_TRANSACTION/ROLLEDBACK_TRANSACTION. Хотя, наличие подобных контекстных переменных всё равно никак не поможет при отрубании транзакций через 'DELETE FROM MON$ATTACHMENTS'. :(
...
Рейтинг: 0 / 0
06.07.2016, 14:38
    #39268904
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_devМожно еще ХП навернуть, что будет вызываться из триггеров или ХП других транзакций и проверять живучесть транзакции, заблокировавшей объекты, принудительно снимая блокировки в случае смерти этой транзакции, но видится мне, это далеко не самое красивое решение.

Что-то у меня есть подозрения, что ты бутерброт не с той стороны есть начал.
...
Рейтинг: 0 / 0
06.07.2016, 14:43
    #39268912
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Симонов Денисзадача не так проста как кажется на первый взгляд. В 3.0 параметры могут быть уровня сервера, БД и соединения.?
RDB$GET_CONTEXT ('SYSTEM' | 'USER_SESSION' | 'USER_TRANSACTION' , '<varname>')
...
Рейтинг: 0 / 0
06.07.2016, 14:44
    #39268915
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
DarkMasterЧто-то у меня есть подозрения, что ты бутерброт не с той стороны есть начал.Надо колбасой на язык?
Рассмотрю любые варианты.
...
Рейтинг: 0 / 0
06.07.2016, 14:50
    #39268926
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_dev,

не прокатит. Я же сказал уровня сервера, БД и коннектов.
1. Уровня БД в контекстных переменных нет
2. Коннектов много, не факт что нужно знать свои параметры

Поясню. Уровня БД обозначает что параметры заданы в databases.conf, а не в firebird.conf

Код: plaintext
1.
2.
3.
4.
5.
horses = d:\fb\fb30\data\horses.fdb
{
	DefaultDbCachePages = 32K
	TempCacheLimit = 1024M
	TempBlockSize = 4M
}
...
Рейтинг: 0 / 0
06.07.2016, 14:52
    #39268936
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_devв триггерах ON TRANSACTION COMMIT/ROLLBACK не хватает контекстных переменных типа
COMMITTED_TRANSACTION/ROLLEDBACK_TRANSACTION.

Чем они могут отличаться от CURRENT_TRANSACTION?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.07.2016, 14:53
    #39268938
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Симонов Денис1. Уровня БД в контекстных переменных нетНу, список контекстов можно и расширить.

Симонов Денис2. Коннектов много, не факт что нужно знать свои параметрыА вот тут ...опа!
...
Рейтинг: 0 / 0
06.07.2016, 15:07
    #39268962
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
Dimitry SibiryakovЧем они могут отличаться от CURRENT_TRANSACTION?
Ничем. Это у меня глюки из-за непонятно с чего возникшей аналогии с триггерами CONNECT/DISCONNECT.
...
Рейтинг: 0 / 0
06.07.2016, 16:01
    #39269047
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_devХотелось сделать чтоб работало из ХП или триггера.
можно использовать такое правило - если не знаешь или не можешь определить архитектуру, то делай так, как будто это всегда классик. Не ошибешься. Тут только единственное исключение - не использовать threadvar.
rdb_devи проверять живучесть транзакции, заблокировавшей объекты
ты не понял, совсем. Когда сервер сталкивается с активной конкурирующей транзакцией, он пытается на нее сделать лок. Если лок успешен, значит коннект (или процесс), стартовавший эту транзакцию отвалился, и транзакцию надо перевести в роллбэк. Если не успешен - транзакция жива.
Ты это из процедур, функций, udf и прочего никак не можешь выполнить аналогичную проверку, или использовать подобный механизм для проверки блокированности своих объектов (мютексов, семафоров и проч). Потому что серверу наплевать на твои объекты. А кроме активного коннекта эти объекты проверять и блокировать-разблокировать больше некому. Еще раз привожу пример:
- коннект выполняет функцию блокировки мютекса
- коннект (процесс) отваливается.
- мютекс заблокирован, а кто его заблокировал (и жив он или нет) - неизвестно.
аминь. И снять такую блокировку можно по таймауту. Но вот проблема - у мютекса нет свойства "время блокировки".
rdb_devс чего возникшей аналогии с триггерами CONNECT/DISCONNECT.
если процесс/коннект умер, то для него disconnect не вызовется. Подозреваю, что on rollback для такой транзакции тоже не вызовется. насчет delete from mon$attachments - тоже не вызовется ни on disconnect, ни on rollback.
То есть, у тебя возникает "дыра", при которой твои объекты могут оказаться заблокированными навечно.
...
Рейтинг: 0 / 0
06.07.2016, 18:41
    #39269210
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП?
rdb_devКто как решал подобную задачу?
Таблоид ее когда-то давно решал. В академических целях, как у него обычно водится :)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кто как решал задачу определения архитектуры сервера v2.5 (Classic/Superserver) из ХП? / 25 сообщений из 56, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]