ЦИТК-659 - Возможность работы нескольких серверов параллельно #6

Closed
Dollerok wants to merge 0 commits from Dollerok/P8-ExchangeService:master into master
Member
No description provided.
Dollerok added 1 commit 2025-05-15 19:33:41 +03:00
Author
Member

Думаю тебе не понравится момент с параметрами в "connect" и "disconnect" (db_connector.js). Можно рассмотреть вариант с добавлением признака в класс "DBConnector", где первый запуск будет его устанавливать, что-то типа "isServerStarted = true", в последующих вызовах "connect" уже анализировать собственное свойство и понимать требуется ли совершать проверки старта сервиса и инициализации сервера. При "disconnect" уже сложней, но в целом там просто нужно очистить информацию об активности сервера (если это сервер вообще), поэтому предлагаю в "onServiceACStopped" (app.js) сделать разбиение:

  1. Вызывается отдельная функция очистки в db_connector.js (внутри сама проверит, а нужно ли что-то чистить)
  2. Вызывается отключение от БД

Думаю такой вариант тебе понравится больше, чем при каждом вызове connect/disconnect в качестве параметров кидать инфу о том, старт/завершение ли это

Думаю тебе не понравится момент с параметрами в "connect" и "disconnect" (db_connector.js). Можно рассмотреть вариант с добавлением признака в класс "DBConnector", где первый запуск будет его устанавливать, что-то типа "isServerStarted = true", в последующих вызовах "connect" уже анализировать собственное свойство и понимать требуется ли совершать проверки старта сервиса и инициализации сервера. При "disconnect" уже сложней, но в целом там просто нужно очистить информацию об активности сервера (если это сервер вообще), поэтому предлагаю в "onServiceACStopped" (app.js) сделать разбиение: 1. Вызывается отдельная функция очистки в db_connector.js (внутри сама проверит, а нужно ли что-то чистить) 2. Вызывается отключение от БД Думаю такой вариант тебе понравится больше, чем при каждом вызове connect/disconnect в качестве параметров кидать инфу о том, старт/завершение ли это
Owner

Думаю тебе не понравится момент с параметрами в "connect" и "disconnect" (db_connector.js). Можно рассмотреть вариант с добавлением признака в класс "DBConnector", где первый запуск будет его устанавливать, что-то типа "isServerStarted = true", в последующих вызовах "connect" уже анализировать собственное свойство и понимать требуется ли совершать проверки старта сервиса и инициализации сервера. При "disconnect" уже сложней, но в целом там просто нужно очистить информацию об активности сервера (если это сервер вообще), поэтому предлагаю в "onServiceACStopped" (app.js) сделать разбиение:

  1. Вызывается отдельная функция очистки в db_connector.js (внутри сама проверит, а нужно ли что-то чистить)
  2. Вызывается отключение от БД

Думаю такой вариант тебе понравится больше, чем при каждом вызове connect/disconnect в качестве параметров кидать инфу о том, старт/завершение ли это

Думаю, что правильно должно быть так:

  1. В modules/parus_oracle_db.js и modules/parus_pg_db.js регистрируются функции checkAppStart, initServer, clearServer - это ОК
  2. Функция connect в modules/parus_oracle_db.js и modules/parus_pg_db.js должна делать именно connect и ничего особо не проверять (да, там были проверки checkRelease и checkWorkers, но по хорошему - их тут быть не должно)
  3. Ни один из модулей сервера приложений или пользовательских обработчиков не имеет права пользоваться напрямую функциями из modules/parus_oracle_db.js и modules/parus_pg_db.js - это заложено изначально и реализован для этого класс-бёртка DBConnector, которым мы везде и пользуемся и его экземпляр, если не ошибаюсь, передаем пользовательским обработчикам в том числе.
  4. Как ты и пишешь, в классе DBConnector должен быть атрибут, указывающий на то, что это подключение не обработчика, а самого сервере приложений (bServer). По умолчанию - false. В конструкторе этот атрибут должен выставляться в truе только если передан соответствующий параметр.
  5. Все необходимые проверки (checkAppStart, initServer, checkRelease и checkWorkers) должны быть в методе connect класса DBConnector и опираться на значение его атрибута bServer. Аналогично с работой метода disconnect - если надо, запускать clearServer. Т.е. вся логика - в классе DBConnector.
  6. Тогда и onServiceACStopped не надо править и минимальный объем правок в modules/parus_oracle_db.js и modules/parus_pg_db.js, а основное мясо в DBConnector
> Думаю тебе не понравится момент с параметрами в "connect" и "disconnect" (db_connector.js). Можно рассмотреть вариант с добавлением признака в класс "DBConnector", где первый запуск будет его устанавливать, что-то типа "isServerStarted = true", в последующих вызовах "connect" уже анализировать собственное свойство и понимать требуется ли совершать проверки старта сервиса и инициализации сервера. При "disconnect" уже сложней, но в целом там просто нужно очистить информацию об активности сервера (если это сервер вообще), поэтому предлагаю в "onServiceACStopped" (app.js) сделать разбиение: > > 1. Вызывается отдельная функция очистки в db_connector.js (внутри сама проверит, а нужно ли что-то чистить) > 2. Вызывается отключение от БД > > Думаю такой вариант тебе понравится больше, чем при каждом вызове connect/disconnect в качестве параметров кидать инфу о том, старт/завершение ли это Думаю, что правильно должно быть так: 1. В modules/parus_oracle_db.js и modules/parus_pg_db.js регистрируются функции checkAppStart, initServer, clearServer - это ОК 2. Функция connect в modules/parus_oracle_db.js и modules/parus_pg_db.js должна делать именно connect и ничего особо не проверять (да, там были проверки checkRelease и checkWorkers, но по хорошему - их тут быть не должно) 3. Ни один из модулей сервера приложений или пользовательских обработчиков не имеет права пользоваться напрямую функциями из modules/parus_oracle_db.js и modules/parus_pg_db.js - это заложено изначально и реализован для этого класс-бёртка DBConnector, которым мы везде и пользуемся и его экземпляр, если не ошибаюсь, передаем пользовательским обработчикам в том числе. 4. Как ты и пишешь, в классе DBConnector должен быть атрибут, указывающий на то, что это подключение не обработчика, а самого сервере приложений (bServer). По умолчанию - false. В конструкторе этот атрибут должен выставляться в truе только если передан соответствующий параметр. 5. Все необходимые проверки (checkAppStart, initServer, checkRelease и checkWorkers) должны быть в методе connect класса DBConnector и опираться на значение его атрибута bServer. Аналогично с работой метода disconnect - если надо, запускать clearServer. Т.е. вся логика - в классе DBConnector. 6. Тогда и onServiceACStopped не надо править и минимальный объем правок в modules/parus_oracle_db.js и modules/parus_pg_db.js, а основное мясо в DBConnector
Mim closed this pull request 2025-05-28 18:18:16 +03:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: CITKParus/P8-ExchangeService#6
No description provided.