Jump to content

HyperServer не переключает на новую версию


x11

Recommended Posts

Загрузил на сервер очередную новую версию EXE-файла (имеется ввиду через кнопку "Upload new version" HyperServer`а).

Реально к серверу подключено сейчас 3 устройства.

При нажатии на кнопку в браузере "Обновить страницу" подключение происходит к каким-то старым версиям. Но не к новым. Т.е. HyperServer подключает меня к старой версии, к 101, к 103, но не к 106.

Такое впечатление, что после того, как я закрыл браузер или вкладку, или просто нажал кнопку "Обновить страницу" в браузере, старая сессия НЕ завершается.

Получается, что сервер (ServerModule) не уничтожает уже ненужный MainModule, к которому никто более не подключен.

Добавлю еще, что у меня есть код для автоматического продления сессии:

procedure TUniMainModule.UniGUIMainModuleSessionTimeout(ASession: TObject; var  ExtendTimeOut: Integer);
begin
  if not AllowTerminate then
    ExtendTimeOut := UniServerModule.SessionTimeout;// продлеваем сессию
end;

Как быть в таких случаях? Отключить автопродление сессии?

Screenshot_32.jpg

Screenshot_33.jpg

Link to comment
Share on other sites

21 hours ago, x11 said:

Загрузил на сервер очередную новую версию EXE-файла (имеется ввиду через кнопку "Upload new version" HyperServer`а).

Реально к серверу подключено сейчас 3 устройства.

При нажатии на кнопку в браузере "Обновить страницу" подключение происходит к каким-то старым версиям. Но не к новым. Т.е. HyperServer подключает меня к старой версии, к 101, к 103, но не к 106.

Такое впечатление, что после того, как я закрыл браузер или вкладку, или просто нажал кнопку "Обновить страницу" в браузере, старая сессия НЕ завершается.

Получается, что сервер (ServerModule) не уничтожает уже ненужный MainModule, к которому никто более не подключен.

Добавлю еще, что у меня есть код для автоматического продления сессии:

procedure TUniMainModule.UniGUIMainModuleSessionTimeout(ASession: TObject; var  ExtendTimeOut: Integer);
begin
  if not AllowTerminate then
    ExtendTimeOut := UniServerModule.SessionTimeout;// продлеваем сессию
end;

Как быть в таких случаях? Отключить автопродление сессии?

Screenshot_32.jpg

Screenshot_33.jpg

Привет! Бывает на сервере не все ноды уничтожаются в памяти. Надо будет вручную останавливать иис и руками прям с диспетчера удалять процессы. Потом заливать ехе в папку директория с проектом и запускать иис

Link to comment
Share on other sites

Так это потому что сервер не уничтожает сессию, наверно.

Т.е. пользователь уже закрыл браузер, а uniMainModule не был уничтожен почему-то.

Link to comment
Share on other sites

Я так понимаю, что гиперсервер работает по сессиям а не по логинам. То есть пока сессия явно не завершится, то он считает что пользователь всё еще подключен к ноде и перебрасывать не другую его не стоит. Впрочем это легко проверить. Достаточно глянуть на куки сессии, там виден идентификтор.

Link to comment
Share on other sites

On 12/24/2021 at 10:06 AM, x11 said:

Так это потому что сервер не уничтожает сессию, наверно.

Т.е. пользователь уже закрыл браузер, а uniMainModule не был уничтожен почему-то.

ты это можешь легко проверить. достаточно поставить бряк на разрушении mainmodule. думается пока сессия активная, то гиперсервер её никак не переключит в принципе

Link to comment
Share on other sites

4 minutes ago, Tokay said:

достаточно поставить бряк на разрушении mainmodule.

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

Link to comment
Share on other sites

7 minutes ago, x11 said:

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

как я понимаю, новый модуль и сессия должна подключатся уже к новой ноде. впрочем, лучше саппорт пусть ответит.

Link to comment
Share on other sites

В общем, я добавил код, понаблюдаю.

 

procedure TUniMainModule.UniGUIMainModuleBrowserClose(Sender: TObject);
begin
  UniSession.Log('End session. UniGUIMainModuleBrowserClose()');
  UniSession.Logout;
  AllowTerminate := True;
end;

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...